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 edinmek için Gradle'ı güncelleme başlıklı makaleyi inceleyin. |
SDK Build Tools | 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 dilinin 8. sürümü
AGP, 4.2 sürümünden itibaren varsayılan olarak Java 8 dil düzeyini kullanır. Java 8; lambda ifadeleri, yöntem referansları ve statik arayüz yöntemleri gibi 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'deki yeni JVM kaynak derleyici, AAPT2 kaynak derleyicinin bölümlerinin yerini alarak özellikle Windows makinelerde derleme performansını artırabilir. Yeni JVM kaynak derleyicisi varsayılan olarak etkindir.
v3 ve v4 imzalama artık destekleniyor
Android Gradle eklentisi 4.2 artık APK v3 ve APK v4 imza biçimlerini destekliyor.
Bu biçimlerden birini veya ikisini derlemenizde 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'yi 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ı ele alır.
Varyant başına uygulama imzalamayı yapılandırma
Artık Android Gradle eklentisinde uygulama imzalamayı etkinleştirmek veya devre dışı bırakmak mümkün.
Bu örnekte, Kotlin veya Groovy'de onVariants()
yöntemini kullanarak uygulama imzalama işleminin varyant başına nasıl ayarlanacağı gösterilmektedir:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Yeni Gradle özelliği:
android.native.buildOutput
AGP 4.2, derleme çıktısındaki karmaşayı azaltmak için CMake ve ndk-build
kullanan yerel derlemelerden gelen mesajları filtreler ve varsayılan olarak yalnızca C/C++ derleyici çıktısını gösterir. Daha önce, oluşturulan her dosya için bir çıktı satırı oluşturuluyordu. Bu da çok sayıda bilgilendirme mesajına neden oluyordu.
Yerel çıktının tamamını görmek istiyorsanız yeni Gradle özelliğini android.native.buildOutput
olarak ayarlayın.verbose
Bu özelliği gradle.properties
dosyasında veya komut satırı üzerinden ayarlayabilirsiniz.
gradle.properties
android.native.buildOutput=verbose
Komut satırı
-Pandroid.native.buildOutput=verbose
Bu özelliğin varsayılan değeri quiet
'dır.
gradle.properties dosyalarıyla ilgili davranış değişikliği
AGP 4.2'den itibaren, Gradle özelliklerinin alt projelerden geçersiz kılınması mümkün değildir. Diğer bir deyişle, bir özelliği kök proje yerine bir alt projedeki gradle.properties
dosyasında tanımlarsanız bu özellik yoksayılır.
Örneğin, önceki sürümlerde AGP, değerleri <var>projectDir</var>/gradle.properties
, <var>projectDir</var>/app/gradle.properties
, <var>projectDir</var>/library/gradle.properties
vb. öğelerden okuyordu. Uygulama modüllerinde, aynı Gradle özelliği hem <var>projectDir</var>/gradle.properties
hem de <var>projectDir</var>/app/gradle.properties
içinde mevcutsa <var>projectDir</var>/app/gradle.properties
'deki değer öncelikli oluyordu.
AGP 4.2'de bu davranış değiştirildi ve AGP, alt projelerdeki gradle.properties
değerlerini yüklemiyor (ör.
<var>projectDir</var>/app/gradle.properties
).
Bu değişiklik, yeni Gradle davranışını yansıtır ve yapılandırma önbelleğe almayı 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
Android Studio'da çalıştırıldığında Gradle derleme aracı, Studio'nun paketlenmiş JDK'sını kullanır. Önceki sürümlerde JDK 8, Studio ile birlikte paketleniyordu. Ancak 4.2 sürümünde artık JDK 11 paketlenmiştir. Gradle'ı çalıştırmak için yeni paketlenmiş JDK'yı kullanırken çöp toplayıcıda yapılan değişiklikler nedeniyle bazı uyumsuzluklar oluşabilir veya JVM performansı etkilenebilir. Bu sorunlar aşağıda açıklanmıştır.
Not: Gradle'ı JDK 11 ile çalıştırmanızı önersek de Gradle'ı çalıştırmak için kullanılan JDK'yı Project Structure (Proje Yapısı) iletişim kutusunda değiştirebilirsiniz. Bu ayarın değiştirilmesi yalnızca Gradle'ı çalıştırmak için kullanılan JDK'yı değiştirir ve Studio'yu çalıştırmak için kullanılan JDK'yı değiştirmez.
Android Gradle eklentisi (AGP) ile Studio uyumluluğu
Android Studio 4.2, AGP 3.1 ve sonraki sürümlerin kullanıldığı projeleri açabilir. Bunun için AGP'nin Gradle 4.8.1 ve sonraki sürümlerini çalıştırması gerekir. Gradle uyumluluğu hakkında daha fazla bilgi için Gradle'ı güncelleme başlıklı makaleyi inceleyin.
Gradle derlemelerini JDK 11 için optimize etme
JDK 11'e yönelik bu güncelleme, JVM çöp toplayıcısının varsayılan yapılandırmasını etkiler. Bunun nedeni, JDK 8'in paralel çöp toplayıcıyı, JDK 11'in ise G1 çöp toplayıcıyı kullanmasıdır.
Derleme performansını artırmak için Gradle derlemelerinizi paralel çöp toplayıcıyla test etmenizi öneririz. gradle.properties
'da aşağıdakileri ayarlayın:
org.gradle.jvmargs=-XX:+UseParallelGC
Bu alanda başka seçenekler ayarlanmışsa yeni bir seçenek ekleyin:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Derleme hızını farklı yapılandırmalarla ölçmek için Derlemenizin profilini oluşturma 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 yüksek olduğunda APK'lardaki DEX dosyalarını varsayılan olarak sıkıştırılmamış şekilde paketliyor. Bu durum APK boyutunun artmasına neden olur ancak cihazdaki yükleme boyutu küçülür ve indirme boyutu yaklaşık olarak aynı kalır.
AGP'nin DEX dosyalarını sıkıştırılmış olarak paketlemesini 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 sayede, kullanıcılarınız için daha küçük bir uygulama yükleme boyutu, daha küçük bir uygulama indirme boyutu ve daha hızlı uygulama yükleme süresi elde edersiniz. Ancak, Android Gradle eklentisinin uygulamanızı oluştururken sıkıştırılmış yerel kitaplıkları paketlemesini istiyorsanız uygulamanızın useLegacyPackaging
dosyasında true
değerini build.gradle
olarak ayarlayın:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
useLegacyPackaging
işareti, manifest özelliğinin extractNativeLibs
yerini alır. Daha fazla bilgi için Yerel kitaplıklar varsayılan olarak sıkıştırılmamış şekilde paketlenir başlıklı sürüm notunu inceleyin.