Android Gradle Eklentisi 4.2.0 (Mart 2021)
Uyumluluk
Minimum sürüm | Varsayılan sürüm | Notlar | |
---|---|---|---|
Gradle | 6.7.1 | Yok | Daha fazla bilgi için Gradle'i güncelleme başlıklı makaleyi inceleyin. |
SDK Oluşturma Araçları | 30.0.2 | 30.0.2 | SDK Oluşturma Araçları'nı yükleyin veya yapılandırın. |
NDK | Yok | 21.4.7075529 | NDK'nın farklı bir sürümünü yükleyin veya yapılandırın. |
Yeni özellikler
Android Gradle eklentisinin bu sürümü aşağıdaki yeni özellikleri içerir.
Varsayılan olarak Java dili sürümü 8
4.2 sürümünden itibaren AGP varsayılan olarak Java 8 dil düzeyini kullanacak. Java 8; lambda ifadeleri, yöntem referansları ve statik arayüz yöntemleri dahil olmak üzere bir dizi yeni dil özelliğine erişim sağlar. Desteklenen özelliklerin tam listesi için Java 8 dokümanlarına bakın.
Eski davranışı korumak için modül düzeyindeki build.gradle.kts
veya build.gradle
dosyanızda Java 7'yi açıkça belirtin:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
Yeni JVM kaynak derleyicisi
Android Gradle eklentisi 4.2 aracındaki yeni JVM kaynak derleyicisi, AAPT2 kaynak derleyicisinin bazı bölümlerini değiştirerek özellikle Windows makinelerde derleme performansını iyileştirebilir. Yeni JVM kaynak derleyicisi varsayılan olarak etkindir.
Artık v3 ve v4 imzalama desteklenmektedir
Android Gradle Eklentisi 4.2 artık APK v3 ve APK v4 imzalama biçimlerini desteklemektedir.
Derlemenizde bu biçimlerden birini veya ikisini birden etkinleştirmek için modül düzeyindeki build.gradle
veya build.gradle.kts
dosyanıza aşağıdaki özellikleri ekleyin:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
APK v4 imzalama, Android 11'de ADB Artımlı APK yükleme özelliğini kullanarak büyük APK'ları hızlı bir şekilde dağıtmanıza olanak tanır. Bu yeni işaret, dağıtım sürecindeki APK imzalama adımını yönetir.
Uygulama imzalamayı varyant başına yapılandırma
Artık Android Gradle eklentisinde varyant başına uygulama imzalamayı etkinleştirmek veya devre dışı bırakmak
Bu örnekte, Kotlin veya Groovy'da onVariants()
yöntemi kullanılarak uygulama imzalamanın varyant başına nasıl ayarlanacağı gösterilmektedir:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Yeni Gradle mülkü:
android.native.buildOutput
AGP 4.2, derleme çıkışındaki dağınıklığı azaltmak için CMake ve ndk-build
kullanan yerel derlemelerdeki mesajları filtreler ve varsayılan olarak yalnızca C/C++ derleyici çıkışını gösterir. Daha önce, oluşturulan her dosya için bir çıkış satırı oluşturuluyordu. Bu da çok sayıda bilgilendirme mesajına yol açıyordu.
Yerel çıktının tamamını görmek istiyorsanız yeni Gradle mülkü android.native.buildOutput
'ü verbose
olarak ayarlayın.
Bu özelliği gradle.properties
dosyasında veya komut satırında ayarlayabilirsiniz.
gradle.properties
android.native.buildOutput=verbose
Komut satırı
-Pandroid.native.buildOutput=verbose
Bu özelliğin varsayılan değeri quiet
'tür.
gradle.properties dosyaları için davranış değişikliği
AGP 4.2'den itibaren, alt projelerden Gradle özelliklerini geçersiz kılmak mümkün değildir. Diğer bir deyişle, bir özelliği kök proje yerine alt projedeki bir gradle.properties
dosyasında tanımlarsanız bu özellik yoksayılır.
Örneğin, önceki sürümlerde AGP, <var>projectDir</var>/gradle.properties
, <var>projectDir</var>/app/gradle.properties
, <var>projectDir</var>/library/gradle.properties
vb. dosyalardan değer okuyordu. Uygulama modülleri için hem <var>projectDir</var>/gradle.properties
hem de <var>projectDir</var>/app/gradle.properties
dosyalarında aynı Gradle mülkü varsa <var>projectDir</var>/app/gradle.properties
dosyasındaki değer öncelikli olurdu.
AGP 4.2'de bu davranış değiştirildi ve AGP, alt projelerde (ör.gradle.properties
<var>projectDir</var>/app/gradle.properties
).
Bu değişiklik, yeni Gradle davranışını yansıtır ve yapılandırma önbelleğe alma özelliğini destekler.
gradle.properties
dosyalarında değer ayarlama hakkında daha fazla bilgi için Gradle belgelerine bakın.
Gradle uyumluluğu ve yapılandırma değişiklikleri
Gradle derleme aracı, Android Studio'da çalıştırıldığında Studio'nun paketlenmiş JDK'sini kullanır. Önceki sürümlerde JDK 8, Studio ile birlikte sunuluyordu. Ancak 4.2'de bunun yerine JDK 11 paketlenmiştir. Gradle'i çalıştırmak için yeni paketlenmiş JDK kullanıldığında bu durum bazı uyumsuzluklara neden olabilir veya çöp toplayıcıdaki değişiklikler nedeniyle JVM performansını etkileyebilir. Bu sorunlar aşağıda açıklanmıştır.
Not: Gradle'i JDK 11 ile çalıştırmanızı öneririz ancak Gradle'i çalıştırmak için kullanılan JDK'yi Proje Yapısı iletişim kutusunda değiştirmek mümkündür. Bu ayarın değiştirilmesi yalnızca Gradle'i çalıştırmak için kullanılan JDK'yi değiştirir ve Studio'yu çalıştırmak için kullanılan JDK'yi değiştirmez.
Studio'nun Android Gradle eklentisiyle (AGP) uyumluluğu
Android Studio 4.2, AGP'de Gradle 4.8.1 ve sonraki sürümlerin çalıştırıldığı durumlarda AGP 3.1 ve sonraki sürümleri kullanan projeleri açabilir. Gradle uyumluluğu hakkında daha fazla bilgi için Gradle'i güncelleme başlıklı makaleyi inceleyin.
Gradle derlemelerini JDK 11 için optimize etme
JDK 8 paralel çöp toplayıcıyı, JDK 11 ise G1 çöp toplayıcıyı kullandığından JDK 11'deki bu güncelleme, JVM çöp toplayıcısının varsayılan yapılandırmasını etkiler.
Olası bir derleme performansı artışı için paralel çöp toplayıcıyla Gradle derlemelerinizi test etmenizi öneririz. gradle.properties
'te aşağıdakileri ayarlayın:
org.gradle.jvmargs=-XX:+UseParallelGC
Bu alanda zaten ayarlanmış başka seçenekler varsa yeni bir seçenek ekleyin:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Farklı yapılandırmalarla derleme hızını ölçmek için Derlemenizi profilleme başlıklı makaleyi inceleyin.
minSdk
= 28 veya daha yüksek olduğunda APK'larda sıkıştırılmamış DEX dosyaları
AGP artık minSdk
= 28 veya daha yeni sürümlerde DEX dosyalarını varsayılan olarak APK'larda sıkıştırılmamış şekilde paketliyor. Bu, APK boyutunun artmasına neden olur ancak cihazdaki yükleme boyutunun küçülmesine yol açar. İndirme boyutu ise yaklaşık olarak aynıdır.
AGP'yi DEX dosyalarını sıkıştırılmış olarak paketlemeye zorlamak için build.gradle
dosyanıza aşağıdakileri ekleyebilirsiniz:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Sıkıştırılmış yerel kitaplıkları paketlemek için DSL'yi kullanma
Yerel kitaplıkları sıkıştırılmamış biçimde paketlemenizi öneririz. Bu, uygulama yükleme boyutunun ve uygulama indirme boyutunun küçülmesine ve kullanıcılarınız için uygulama yükleme süresinin kısalmasına neden olur. Ancak Android Gradle eklentisinin, uygulamanızı derleyip paketlerken sıkıştırılmış yerel kitaplıkları paketlemesini istiyorsanız uygulamanızın build.gradle
dosyasında useLegacyPackaging
değerini true
olarak ayarlayın:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
useLegacyPackaging
işareti, extractNativeLibs
manifest özelliğinin yerini alır. Daha fazla bilgi için Varsayılan olarak sıkıştırılmamış şekilde paketlenmiş yerel kitaplıklar sürüm notuna bakın.