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 edinmek için Gradle'ı güncelleme başlıklı makaleyi inceleyin. |
SDK Build Tools | 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 konusuna bakın. |
Yama sürümleri
Android Gradle eklentisi 8.0'ın yama sürümlerinin listesini aşağıda bulabilirsiniz.
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ılan 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 | |
---|---|
AGP 7.2.2 -> 7.4.0 sürümüne yükseltildikten sonra hata: "Tabloda belirtilen kimliğe sahip VersionRequirement yok"
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Android 11'de sınıf doğrulaması başarısız oluyor
|
Önemli değişiklik: Modül düzeyindeki derleme komut dosyasında ad alanı gerekli
Ad alanını manifest dosyası yerine 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 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, bazı durumlarda test ad alanını ana ad alanından veya uygulama kimliğinden yanlış şekilde çıkarıyordu. AGP Yükseltme Asistanı, projenizin ana ad alanı ile test ad alanının aynı olduğunu tespit ederse yükseltmeyi engeller. Yükseltme engellenirse
testNamespace
manuel olarak değiştirmeniz ve kaynak kodunuzu buna göre düzenlemeniz gerekir. - Test ad alanını değiştirdikten sonra kodunuz derlenebilir ancak enstrümanlı testleriniz çalışma zamanında başarısız olabilir. Bu durum, enstrümantasyonlu 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ı sorunun 19 numaralı yorumuna bakın.
Önemli değişiklikler: derleme seçeneği varsayılan değerleri
AGP 8.0'dan itibaren, bu işaretlerin varsayılan değerleri derleme performansını artırmak için 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ı, yeni davranışı desteklemek için kodunuzu 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, ihtiyacınız olan projelerde DSL kullanarak belirtmeniz gerekir. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0, varsayılan olarak AIDL desteğini etkinleştirmez. Bu seçeneği, ihtiyacınız olan projelerde DSL kullanarak belirtmeniz gerekir. Bu işaretin AGP 9.0'da 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, ihtiyacınız olan projelerde DSL kullanarak belirtmeniz gerekir. Bu işaretin AGP 9.0'da 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 mevcut 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: Derleme seçeneği değerleri zorunlu kılındı
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üğünü algılarsa uyarı verir. Bunun nedeni, Gradle yapılandırma sürelerini olumsuz etkilemesidir. |
android.r8.failOnMissingClasses |
true |
AGP 8.0, daha iyi DEX optimizasyonu sağlamak için eksik sınıflar varsa R8'i kullanan derlemelerde hata verir. Bu sorunu gidermek için eksik kitaplıkları eklemeniz veya -dontwarn kurallarını korumanız gerekir. Daha fazla bilgi için R8 küçültücüsünde eksik sınıf uyarıları başlıklı makaleyi inceleyin. |
android.testConfig.useRelativePath |
true |
Birim testlerinde Android kaynaklarının, öğelerinin ve manifestlerinin 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, derleme performansını artırmak için JAR dosyaları oluştururken Zipflinger kitaplığını kullanır. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
AAB'lere ve APK'lara SDK bağımlılığı bilgileri ekleme özelliği etkinleştirildiğinde AGP 8.0, bu bilgilere proje depolarının bir listesini de ekler. Daha fazla bilgi için Play Console'un bağımlılık bilgileri başlıklı makaleyi inceleyin. |
android.enableArtProfiles |
true |
Temel profiller artık her zaman oluşturulur. Ayrıntılar için Temel Profiller başlıklı makaleyi inceleyin. |
android.enableNewResourceShrinker |
true |
Varsayılan olarak yeni kaynak küçültme uygulamasını kullanın. Yeni kaynak küçültücü, dinamik özellikler için destek içerir. |
android.enableSourceSetPathsMap |
true |
Göreceli 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ı proje konumuna göre izlediği için derlenmiş kitaplık kaynakları artık varsayılan olarak önbelleğe alınabilir. android.enableSourceSetPathsMap 'nın etkinleştirilmesi gerekir. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0, varsayılan olarak SoftwareComponent oluşturmaz. Bunun yerine AGP, yalnızca yayın DSL'si kullanılarak yayınlanacak şekilde yapılandırılan varyantlar için SoftwareComponent'lar oluşturur. |
Yürütme profili için yeni kararlı işaret
AGP, yeni android.settings.executionProfile
işaretini içerir. SettingsExtension
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 bakın.
Deneysel özellikleri önizlemek için önizleme sürüm notlarına bakın.
Kotlin lazy özelliği ataması desteklenmiyor
Derleme komut dosyalarınız için Gradle'ın Kotlin DSL'sini kullanıyorsanız Android Studio ve AGP 8.0'ın, =
operatörüyle deneysel özellik atamasını desteklemediğini unutmayın. Bu özellik hakkında daha fazla bilgi için sürüm notlarına ve belgelere bakın.
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 daha yeni bir sürüm kullanılıyorsa Build Analyzer, görevleri tek tek göstermek yerine kategoriye göre gruplandırır. Örneğin, Android Kaynakları, Kotlin veya Dexing ile ilgili 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 kategoriyi genişlettiğinizde ilgili görevlerin listesi gösterilir. Görevleri gruplandırmadan tek tek görüntülemek için Gruplandırma ölçütü açılır listesini 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ç yürütme 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ında uygulayın:
apply plugin 'com.android.settings'
Genel yapılandırmaları merkezileştirme
Genel yapılandırmaları ayarlamak için android
dosyasında yeni android
bloğunu kullanın.settings.gradle
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ırılacağını belirler. Ortama 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şkenleri 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, settings.gradle
dosyasında yürütme profilleri oluşturun ve 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 android.experimental.settings.executionProfile
dosyasındaki gradle.properties
özelliğini kullanarak farklı bir profil seçin:
android.experimental.settings.executionProfile=high
Bu özelliği komut satırını kullanarak da ayarlayabilirsiniz. Bu sayede farklı iş akışları oluşturabilirsiniz. Örneğin, sürekli entegrasyon iş akışınız varsa settings.gradle
dosyasını değiştirmenize gerek kalmadan komut satırını kullanarak yürütme profilini değiştirebilirsiniz:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
AGP 8.0'ı çalıştırmak için JDK 17 gerekir
Uygulamanızı oluşturmak için Android Gradle Plugin 8.0'ı kullanırken Gradle'ı çalıştırmak için artık JDK 17 gereklidir. Android Studio Flamingo, JDK 17'yi paketler ve Gradle'ı varsayılan olarak bu JDK'yı kullanacak şekilde yapılandırır. Bu nedenle, çoğu Android Studio kullanıcısının projelerinde herhangi bir 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) |
|