Android Gradle eklentisi 8.0.0, çeşitli yeni özellikler ve iyileştirmeler içeren önemli bir sürümdür.
Uyumluluk
Minimum sürüm | Varsayılan sürüm | Notlar | |
---|---|---|---|
Gradle | 8.0 | 8.0 | Daha fazla bilgi için Gradle'i güncelleme başlıklı makaleyi inceleyin. |
SDK Oluşturma Araçları | 30.0.3 | 30.0.3 | SDK Oluşturma Araçları'nı yükleyin veya yapılandırın. |
NDK | Yok | 25.1.8937393 | NDK'nın farklı bir sürümünü yükleyin veya yapılandırın. |
JDK | 17 | 17 | Daha fazla bilgi için JDK sürümünü ayarlama başlıklı makaleyi inceleyin. |
Yama sürümleri
Aşağıda, Android Gradle eklentisi 8.0 için yayınlanan yama sürümlerinin listesi verilmiştir.
Android Gradle Eklentisi 8.0.2 (Mayıs 2023)
AGP 8.0.2'de düzeltilen hataların listesi için Android Studio 2022.2.1'de kapatılmış sorunlar başlıklı makaleyi inceleyin.
Android Gradle eklentisi 8.0.1 (Mayıs 2023)
Bu küçük güncelleme aşağıdaki hata düzeltmelerini içerir:
Çözülen sorunlar | |
---|---|
Hata: AGP 7.2.2 -> 7.4.0'a yükseltme işleminden sonra "Tabloda belirtilen kimliğe sahip VersionRequirement yok"
|
|
markTypeAsLive AGP 7.4.1'de R8 NullPointerException
|
|
[R8 4.0.53] Android 11'de katı sınıf doğrulaması hatası
|
Çalışmayı kesintiye uğratan değişiklik: Modül düzeyinde derleme komut dosyasında ad alanı gerekli
Ad alanını manifest dosyasından ziyade modül düzeyindeki build.gradle.kts
dosyasında ayarlamanız gerekir. AGP 7.3'ten itibaren namespace
DSL mülkünü kullanmaya başlayabilirsiniz. Daha fazla bilgi edinmek için Ad alanı ayarlama başlıklı makaleyi inceleyin.
Ad alanı DSL'sine geçiş yaparken aşağıdaki sorunlara dikkat edin:
- AGP'nin önceki sürümleri, test ad alanını ana ad alanından veya uygulama kimliğinden bazı durumlarda yanlış çıkarır. AGP Yükseltme Asistanı, projenizin ana ad alanının ve test ad alanının aynı olduğunu tespit ederse yükseltmeyi engeller. Yükseltme engelleniyorsa
testNamespace
değerini manuel olarak değiştirmeniz ve kaynak kodunuzu buna göre değiştirmeniz gerekir. - Test ad alanını değiştirdikten sonra kodunuz derlenebilir ancak enstrümante edilmiş testleriniz çalışma zamanında başarısız olabilir. Bu durum, enstrümante edilmiş test kaynak kodunuz hem
androidTest
hem de uygulama kaynaklarınızda tanımlanan bir kaynağa referans veriyorsa ortaya çıkabilir.
Daha fazla bilgi için 191813691 numaralı soruna ait 19 numaralı yorumu inceleyin.
Önemli değişiklikler: derleme seçeneği varsayılan değerleri
AGP 8.0'dan itibaren, derleme performansını iyileştirmek için bu işaretlerin varsayılan değerleri değiştirildi. Kodunuzu bu değişikliklerin bazılarını destekleyecek şekilde ayarlama konusunda yardım almak için AGP Yükseltme Asistanı'nı (Araçlar > AGP Yükseltme Asistanı) kullanın. Yükseltme Asistanı, kodunuzu yeni davranışa uyacak şekilde güncelleme veya önceki davranışı korumak için işaretler ayarlama konusunda size yol gösterir.
İşaretle | Yeni varsayılan değer | Önceki varsayılan değer | Notlar |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 varsayılan olarak BuildConfig oluşturmaz. Bu seçeneği, ihtiyaç duyduğunuz projelerde DSL'yi kullanarak belirtmeniz gerekir. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0, AIDL desteğini varsayılan olarak etkinleştirmez. Bu seçeneği, ihtiyaç duyduğunuz projelerde DSL'yi kullanarak belirtmeniz gerekir. Bu işaretin AGP 9.0 sürümünde kaldırılması planlanmaktadır. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0, RenderScript desteğini varsayılan olarak etkinleştirmez. Bu seçeneği, ihtiyaç duyduğunuz projelerde DSL'yi kullanarak belirtmeniz gerekir. Bu işaretin AGP 9.0 sürümünde kaldırılması planlanmaktadır. |
android.nonFinalResIds |
true |
false |
AGP 8.0, varsayılan olarak nihai olmayan alanlara sahip R sınıfları oluşturur. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0, yalnızca geçerli modülde tanımlanan kaynaklar için R sınıfları oluşturur. |
android.enableR8.fullMode |
true |
false |
AGP 8.0, varsayılan olarak R8 tam modunu etkinleştirir. Daha fazla bilgi için R8 tam modu başlıklı makaleyi inceleyin. |
Önemli değişiklikler: Zorunlu derleme seçeneği değerleri
AGP 8.0'dan itibaren bu işaretlerin değerlerini değiştiremezsiniz. Bunları gradle.properties
dosyasında belirtirseniz değer yoksayılır ve AGP uyarılar yazdırır.
İşaretle | Zorunlu kılınan değer | Notlar |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0, yapılandırma aşamasında yapılandırma çözünürlüğü algılarsa Gradle yapılandırma sürelerini olumsuz yönde etkilediği için uyarı verir. |
android.r8.failOnMissingClasses |
true |
AGP 8.0, daha iyi DEX optimizasyonu sağlamak için sınıflar eksikse R8 kullanan derlemeleri başarısız kılar. Bu sorunu gidermek için eksik kitaplıkları veya -dontwarn tutma kurallarını eklemeniz gerekir. Daha fazla bilgi için R8 sıkıştırıcısında sınıf uyarıları eksik başlıklı makaleyi inceleyin. |
android.testConfig.useRelativePath |
true |
Birim testlerinde Android kaynaklarının, öğelerinin ve manifest dosyalarının kullanılması desteği etkinleştirildiğinde AGP 8.0 yalnızca göreli yollar içeren bir test_config.properties dosyası oluşturur. Bu, Android birim testlerinin her zaman Gradle derleme önbelleğini kullanabilmesini sağlar. |
android.useNewJarCreator |
true |
AGP, JAR dosyaları oluştururken derleme performansını iyileştirmek için Zipflinger kitaplığını kullanır. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
AAB'lere ve APK'lara SDK bağımlılık bilgileri ekleme özelliği etkinleştirildiğinde AGP 8.0, bu bilgilere proje depolarının listesini de ekler. Daha fazla bilgi için Play Console için bağımlılık bilgileri başlıklı makaleyi inceleyin. |
android.enableArtProfiles |
true |
Taban profiller artık her zaman oluşturulur. Ayrıntılar için Referans Profilleri başlıklı makaleyi inceleyin. |
android.enableNewResourceShrinker |
true |
Varsayılan olarak yeni kaynak küçültme uygulamasını kullanın. Yeni kaynak sıkıştırıcı, dinamik özellikler için destek içerir. |
android.enableSourceSetPathsMap |
true |
Göreli kaynak yolu eşlemelerini hesaplamak için kullanılır. Böylece Gradle derlemeleri daha sık güncellenir. |
android.cacheCompileLibResources |
true |
Gradle, kaynak dosyalarını proje konumuna göre izlediği için derlenmiş kitaplık kaynakları artık varsayılan olarak önbelleğe alınabilir. android.enableSourceSetPathsMap 'ün etkinleştirilmesini gerektirir. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 varsayılan olarak SoftwareComponent oluşturmaz. Bunun yerine AGP, yalnızca yayınlama DSL'si kullanılarak yayınlanacak şekilde yapılandırılmış varyantlar için SoftwareComponents oluşturur. |
Yürütme profili için yeni kararlı işaret
AGP, yeni android.settings.executionProfile
işaretini içerir. SettingsExtension
kaynağındaki varsayılan yürütme profilini geçersiz kılmak için bu işareti kullanın.
Daha fazla bilgi için ayarlar eklentisi belgelerine göz atın.
Deneysel işaretleri önizlemek için önizleme sürüm notlarına bakın.
Kotlin'de gecikmeli mülk atama desteklenmez.
Derleme komut dosyalarınız için Gradle'ın Kotlin DSL'sini kullanıyorsanız Android Studio ve AGP 8.0'ın =
operatörünü kullanan deneysel özellik atamasını desteklemediğini unutmayın. Bu özellik hakkında daha fazla bilgi için sürüm notlarını ve dokümanları inceleyin.
Derleme Analiz Aracı görev kategorileri
Android Studio Flamingo'dan itibaren Build Analyzer, derleme süresini etkileyen görevler için yeni bir varsayılan görünüme sahiptir. Projenizde AGP 8.0 veya sonraki bir sürüm kullanılıyorsa Derleme Analizörü, görevleri tek tek göstermek yerine kategoriye göre gruplandırır. Örneğin, Android Kaynakları, Kotlin veya Dexing'e özgü görevler birlikte gruplandırılır ve ardından derleme süresine göre sıralanır. Bu sayede, derleme süresini en çok etkileyen kategoriyi kolayca öğrenebilirsiniz. Her kategori genişletildiğinde ilgili görevlerin listesi gösterilir. Görevleri gruplandırmadan tek tek görüntülemek için Gruplandır açılır menüsünü kullanın.
Yeni ayarlar eklentisi
AGP 8.0.0-alpha09, yeni ayarlar eklentisini kullanıma sunar. Ayarlar eklentisi, tüm modüller için geçerli olan genel yapılandırmaları tek bir yerde merkezileştirmenize olanak tanır. Böylece, yapılandırmaları birden fazla modüle kopyalayıp yapıştırmanız gerekmez. Ayrıca, ayarlar eklentisini kullanarak araç çalıştırma profilleri veya bir aracın nasıl çalıştırılacağına dair farklı talimatlar oluşturabilir ve bunlar arasında geçiş yapabilirsiniz.
Ayarlar eklentisini kullanmak için eklentiyi settings.gradle
dosyasına uygulayın:
apply plugin 'com.android.settings'
Genel yapılandırmaları merkezi hale getirin
Genel yapılandırmaları yapılandırmak için settings.gradle
dosyasında yeni android
bloğunu kullanın. Aşağıda bununla ilgili bir örnek verilmiştir:
android {
compileSdk 31
minSdk 28
...
}
Araç yürütme profilleri
Ayarlar eklentisi, bazı araçlar için yürütme profilleri oluşturmanıza da olanak tanır. Bir yürütme profili, aracın nasıl çalıştığını belirler. Ortamına bağlı olarak farklı yürütme profilleri seçebilirsiniz. Bir yürütme profilinde, bir araç için JVM bağımsız değişkenlerini ayarlayabilir ve aracı ayrı bir işlemde çalışacak şekilde yapılandırabilirsiniz. Şu anda yalnızca R8 aracı desteklenmektedir.
Aşağıdaki örnekte gösterildiği gibi, yürütme profilleri oluşturun ve settings.gradle
dosyasında varsayılan yürütme profilini ayarlayın:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Varsayılan profili geçersiz kılmak için gradle.properties
dosyasında android.experimental.settings.executionProfile
mülkünü kullanarak farklı bir profil seçin:
android.experimental.settings.executionProfile=high
Bu özelliği, farklı iş akışları oluşturmanıza olanak tanıyan komut satırını kullanarak da ayarlayabilirsiniz. Örneğin, sürekli entegrasyon iş akışınız varsa settings.gradle
dosyasını değiştirmek zorunda kalmadan yürütme profilini değiştirmek için komut satırını kullanabilirsiniz:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
AGP 8.0'ı çalıştırmak için JDK 17 gerekir
Uygulamanızı derlemek için Android Gradle Plugin 8.0'ı kullanırken Gradle'i çalıştırmak için artık JDK 17 gereklidir. Android Studio Flamingo, JDK 17'yi paketler ve Gradle'i varsayılan olarak kullanacak şekilde yapılandırır. Bu sayede çoğu Android Studio kullanıcısının projelerinde yapılandırma değişikliği yapması gerekmez.
Android Studio'da AGP tarafından kullanılan JDK sürümünü manuel olarak ayarlamanız gerekiyorsa JDK 17 veya sonraki bir sürümü kullanmanız gerekir.
AGP'yi Android Studio'dan bağımsız olarak kullanırken JAVA_HOME
ortam değişkenini veya -Dorg.gradle.java.home
komut satırı seçeneğini JDK 17'nin yükleme dizininize ayarlayarak JDK sürümünü yükseltin.
Çözülen sorunlar
Android Gradle eklentisi 8.0.0
Çözülen Sorunlar | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle eklentisi |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint Entegrasyonu |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
Android Gradle eklentisi 8.0.1
Çözülen Sorunlar | ||||
---|---|---|---|---|
Shrinker (R8) |
|
Android Gradle eklentisi 8.0.2
Çözülen Sorunlar | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|