Android Gradle Plugin 4.1.0 (Ağustos 2020)
Uyumluluk
Minimum sürüm | Varsayılan sürüm | Notlar | |
---|---|---|---|
Gradle | 6,5 | Yok | Daha fazla bilgi edinmek için Gradle'ı güncelleme konusuna bakın. |
SDK Derleme Araçları | 29.0.2 | 29.0.2 | SDK Derleme Araçlarını yükleyin veya yapılandırın. |
450 | Yok | 21.1.6352462 | Farklı bir NDK sürümü yükleyin veya yapılandırın. |
Android eklentisinin bu sürümü için gerekenler:
-
Gradle 6.5. Daha fazla bilgi edinmek için Gradle'ı güncelleme bölümünü okuyun.
-
SDK Derleme Araçları 29.0.2 veya sonraki sürümler.
Bu sürümdeki varsayılan NDK sürümü 21.1.6352462'dir. Farklı bir NDK sürümü yüklemek için NDK'nın belirli bir sürümünü yükleme bölümüne göz atın.
Yeni özellikler
Android Gradle eklentisinin bu sürümü aşağıdaki yeni özellikleri içerir.
Kotlin Script DSL desteği
Kotlin derleme komut dosyası kullanıcılarının düzenleme deneyimini iyileştirmeye yardımcı olmak amacıyla, Android Gradle eklentisi 4.1'in DSL ve API'leri artık uygulama sınıflarından ayrı olarak bir dizi Kotlin arayüzünde tanımlanmaktadır. Bu gelişme şu anlama geliyor:
- Boş değer ve değişkenlik artık Kotlin türlerinde açıkça bildirilmektedir.
- Bu arayüzlerden oluşturulan belgeler Kotlin API Referansı'nda yayınlanmaktadır.
- Android Gradle Eklentisi'nin API yüzeyi, gelecekte Android derlemelerinin kapsamının genişletilmesini daha az zahmetsiz hale getirmek için açıkça tanımlanmıştır.
Önemli: buildSrc
ürününde KTS derleme komut dosyalarını veya Kotlin'i zaten kullanıyorsanız bu durum, önceki sürümlerde çalışma zamanı hataları olarak görülebilecek belirli hatalarda kaynak uyumluluğu kesintilerine neden olabilir.
DSL'de dönüştürülmek üzere tasarlanan koleksiyon türleri artık şu şekilde eşit olarak tanımlanmaktadır:
val collection: MutableCollectionType
Yani daha önce bu özelliği destekleyen bazı koleksiyonlarda artık aşağıdakilerin Kotlin alfabelerinde yazılması mümkün değil:
collection = collectionTypeOf(...)
Bununla birlikte, koleksiyonun değiştirilmesi aynı şekilde desteklenmektedir. Bu nedenle, collection += …
ve collection.add(...)
artık her yerde çalışacaktır.
Android Gradle eklentisi Kotlin API'lerini ve DSL'yi kullanan bir projeyi yükseltirken bir sorunla karşılaşırsanız lütfen hata bildiriminde bulunun.
C/C++ bağımlılıklarını AAR'lerden dışa aktarma
Android Gradle eklentisi 4.0, AAR bağımlılıklarında Prefab paketlerini içe aktarma özelliğini ekledi. AGP 4.1'de, Android Kitaplığı projeleri için AAR'de harici yerel derlemenizden kitaplıkları dışa aktarmak mümkündür.
Yerel kitaplıklarınızı dışa aktarmak için kitaplık projenizin build.gradle
dosyasındaki android
bloğuna aşağıdakileri ekleyin:
buildFeatures { prefabPublishing true }prefab { <var>mylibrary</var&;gt { headers "src/main/cpp/<var>mylibrary</var>/include" }
<var>myotherlibrary</var> { headers "src/main/cpp/<var>myotherlibrary</var>/include" }
}
buildFeatures { prefabPublishing = true }prefab { create("<var>mylibrary</var>") { headers = "src/main/cpp/<var>mylibrary</var>/include" }
create("<var>myotherlibrary</var>") { headers = "src/main/cpp/<var>myotherlibrary</var>/include" }
}
Bu örnekte, ndk-build veya CMake harici yerel derlemenizdeki mylibrary
ve myotherlibrary
kitaplıkları, derlemeniz tarafından oluşturulan AAR'de paketlenir ve her biri, başlıkları belirtilen dizinden bağlı dosyalarına dışa aktarır.
Not: Android Gradle eklentisi 4.0 ve sonraki sürümlerin kullanıcıları için önceden oluşturulmuş yerel kitaplıkları içe aktarmayla ilgili yapılandırma ayarları değişti. Daha fazla bilgi için 4.0 sürüm notlarına bakın.
Kotlin meta verileri için R8 desteği
Kotlin, Kotlin dili yapılarını tanımlamak için Java sınıfı dosyalarında özel meta veriler kullanır. R8 artık kotlin-reflect
kullanarak Kotlin kitaplıklarının ve uygulamalarının küçültülmesini tamamen desteklemek için Kotlin meta verilerini koruma ve yeniden yazma desteğine sahip.
Kotlin meta verilerini saklamak için aşağıdaki keep kurallarını ekleyin:
-keep class kotlin.Metadata { *; }
-keepattributes RuntimeVisibleAnnotations
Bu işlem, R8'e doğrudan saklanan tüm sınıflar için Kotlin meta verilerini tutma talimatı verir.
Daha fazla bilgi edinmek için Medium'da R8 ile Kotlin yansımasını kullanarak Kotlin kitaplıklarını ve uygulamalarını küçültme{:.external} konusuna bakın.
Hata ayıklama derlemelerinde onaylamalar
Uygulamanızın hata ayıklama sürümünü, Android Gradle eklentisi 4.1.0 ve sonraki sürümlerini kullanarak derlediğinizde yerleşik derleyici (D8), derleme zamanında onayları etkinleştirmek için uygulamanızın kodunu yeniden yazar. Böylece onay denetimlerinin her zaman etkin olmasını sağlarsınız.
Davranış değişiklikleri
Android Gradle eklentisi oluşturma önbelleği kaldırıldı
AGP derleme önbelleği, AGP 4.1'de kaldırılmıştır. Daha önce AGP 2.3'te Gradle derleme önbelleğini tamamlayacak şekilde kullanıma sunulan AGP derleme önbelleğinin yerini, AGP 4.1'deki Gradle derleme önbelleği aldı. Bu değişiklik, derleme süresini etkilemez.
cleanBuildCache
görevi ile android.enableBuildCache
ve android.buildCacheDir
özelliklerinin desteği sonlandırılmıştır ve bu özellikler AGP 7.0'da kaldırılacaktır. android.enableBuildCache
özelliğinin şu anda herhangi bir etkisi yoktur. Ancak android.buildCacheDir
özelliği ve cleanBuildCache
görevi, AGP 7.0 sürümüne kadar mevcut AGP derleme önbelleği içeriğini silmek üzere çalışır.
Kod daraltma özelliğini kullanan uygulamalar için uygulama boyutu önemli ölçüde küçültüldü
Bu sürümden itibaren, R sınıflarındaki alanlar artık varsayılan olarak tutulmayacaktır. Bu durum, kod daraltmayı etkinleştiren uygulamalar için APK boyutunda önemli tasarruf sağlayabilir. R sınıflarına yansıma olarak erişmiyorsanız bu, davranış değişikliğine neden olmaz. Böyle bir durumda söz konusu R sınıfları için Keep kuralları eklemeniz gerekir.
android.namespacedRClass mülkü, android.nonTransitiveRClass olarak yeniden adlandırıldı
android.namespacedRClass
deneme işareti, android.nonTransitiveRClass
olarak yeniden adlandırıldı.
gradle.properties
dosyasında ayarlanan bu işaret, her bir kitaplığın R sınıfının ad belirleme işlemini etkinleştirir. Böylece R sınıfı yalnızca kitaplığın kendisinde tanımlanan kaynakları içerir ve kitaplığın bağımlılıklarından hiçbirini içermez. Bu sayede, söz konusu kitaplık için R sınıfının boyutunu azaltır.
Kotlin DSL: coreLibraryDesugaringEnabled yeniden adlandırdı
coreLibraryDesugaringEnabled
Kotlin DSL derleme seçeneği, isCoreLibraryDesugaringEnabled
olarak değiştirildi.
Bu işaret hakkında daha fazla bilgi için Java 8+ API şeker giderme desteği (Android Gradle Plugin 4.0.0+) sayfasına göz atın.
Kitaplık projelerindeki BuildConfig sınıfından sürüm özellikleri kaldırıldı
Yalnızca kitaplık projelerinde, BuildConfig.VERSION_NAME
ve BuildConfig.VERSION_CODE
özellikleri oluşturulan BuildConfig
sınıfından kaldırıldı. Bunun nedeni, bu statik değerler uygulamanın sürüm kodunun ve adının nihai değerlerini yansıtmaması ve dolayısıyla yanıltıcı olmasıydı. Ayrıca, bu değerler manifest birleştirme sırasında silindi.
Android Gradle eklentisinin gelecekteki bir sürümünde, kitaplıklar için versionName
ve versionCode
özellikleri de DSL'den kaldırılacaktır.
Şu anda uygulama sürümü koduna/adına bir kitaplık alt projesinden otomatik olarak erişmenin bir yolu yoktur.
Uygulama modüllerinde herhangi bir değişiklik yapılmamıştır. DSL'de versionCode
ve versionName
öğelerine değer atamaya devam edebilirsiniz. Bu değerler, uygulamanın manifest ve BuildConfig
alanlarına yayılır.
NDK yolunu ayarlama
Yerel NDK yüklemenizin yolunu, modülünüzün build.gradle
dosyasındaki android.ndkPath
özelliğini kullanarak ayarlayabilirsiniz.
android {
ndkPath "your-custom-ndk-path"
}
android {
ndkPath = "your-custom-ndk-path"
}
Bu özelliği android.ndkVersion
özelliğiyle birlikte kullanırsanız bu yol, android.ndkVersion
ile eşleşen bir NDK sürümü içermelidir.
Kitaplık birimi test davranışı değişiklikleri
Kitaplık birimi testlerinin derlenme ve çalıştırılma davranışını değiştirdik. Bir kitaplığın birim testleri, artık derlenir ve kitaplığın derleme/çalışma zamanı sınıflarına göre çalıştırılır. Bu durumda birim testi, kitaplığı harici alt projelerle aynı şekilde tüketir. Bu yapılandırma genellikle daha iyi test yapılmasını sağlar.
Bazı durumlarda, veri bağlamayı kullanan kitaplık birimi testlerinde DataBindingComponent
veya BR
sınıfları eksik olabilir. Bir birim testinde bu sınıfları derlemek ve çalıştırmak yanlış çıktılar üretebileceğinden bu testlerin androidTest
projesindeki izlemeli bir teste taşınması gerekir.
io.fabric Gradle eklentisi kullanımdan kaldırıldı
io.fabric Gradle eklentisi kullanımdan kaldırıldı ve Android Gradle eklentisinin 4.1 sürümüyle uyumlu değil. Kullanımdan kaldırılan Fabric SDK ve Firebase Crashlytics SDK'ya geçiş hakkında daha fazla bilgi için Firebase Crashlytics SDK'ya yükseltme sayfasını inceleyin.