Android Gradle Eklentisi 7.1.0 (Ocak 2022)
Android Gradle eklentisi 7.1.0, çeşitli yeni özellikler ve iyileştirmeler içeren önemli bir sürümdür.
7.1.3 (Nisan 2022)
Bu küçük güncelleme aşağıdaki hata düzeltmelerini içerir:
- R8 tarafından bildirilen yinelenen sınıf sorunları
Bu sürüme dahil edilen hata düzeltmelerinin tam listesini görmek için Android Studio Bumblebee Patch 3 blog yayınını inceleyin.
7.1.2 (Şubat 2022)
Bu küçük güncelleme aşağıdaki hata düzeltmelerini içerir:
- Android Gradle eklentisi 7.1.0-rc01, birim testleri sırasında ASM bytecode dönüşümü yapamıyor
- Gradle senkronizasyonu "com.android.build.api.extension.AndroidComponentsExtension sınıfı yüklenemedi" hatasıyla başarısız oluyor.
- Bazı yeni DSL blokları, Android Gradle Plugin 7.0.0'da Groovy DSL'den kullanılamaz
- AGP 7.1 yeni yayınlama API'si: Oluşturulan javadoc jar imzalanmıyor
- ClassesDataSourceCache, en son Asm sürümünü kullanmalıdır
- Android Studio BumbleBee her zaman en son değişiklikleri dağıtmaz
Bu sürüme dahil edilen hata düzeltmelerinin tam listesini görmek için Android Studio Bumblebee Patch 2 blog yayınını inceleyin.
7.1.1 (Şubat 2022)
Bu küçük güncelleme, Android Studio Bumblebee 1. Yama sürümüne karşılık gelir.
Bu sürüme dahil edilen hata düzeltmelerinin listesini görmek için Android Studio Bumblebee Patch 1 blog yayınını inceleyin.
Uyumluluk
Minimum sürüm | Varsayılan sürüm | Notlar | |
---|---|---|---|
Gradle | 7.2 | 7.2 | 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 | 21.4.7075529 | NDK'nın farklı bir sürümünü yükleyin veya yapılandırın. |
JDK | 11 | 11 | Daha fazla bilgi için JDK sürümünü ayarlama başlıklı makaleyi inceleyin. |
Lint analizi görevi artık önbelleğe alınabilir
AndroidLintAnalysisTask
artık Gradle derleme önbelleği ile uyumludur. gradle.properties
dosyanızda org.gradle.caching=true
ayarını yaparak derleme önbelleğini etkinleştirirseniz lint analiz görevi, mümkün olduğunda çıktısını derleme önbelleğinden alır.
Android Gradle eklentisiyle lint çalıştırırken genellikle en büyük darboğaz lint analiz görevidir. Bu nedenle, derleme önbelleğini etkinleştirmek, birçok durumda lint çalıştırırken derleme hızını artırır. Örneğin, çok modüllü bir projeniz varsa ve CI sunucunuzda lint çalıştırmadan önce derleme dizininizi temizlediyseniz belirgin bir performans artışı görürsünüz.
C/C++ modülleri artık aynı projedeki diğer C/C++ modüllerine referans verebilir
C/C++ kodu içeren bir Gradle Android modülü artık başka bir Gradle modülündeki başlık dosyalarına ve kitaplık koduna referans verecek şekilde ayarlanabilir. Prefab protokolü, Gradle modülleri arasında başlıkları ve kitaplıkları iletmek için kullanılır.
Şartlar
-
Tüketen modül
ndk-build
değil,CMake
olmalıdır. ndk-build desteği için gelecekte bir NDK güncellemesi gerekecek. Yayınlama modülüCMake
veyandk-build
olabilir. -
Tüketen modülü,
build.gradle
dosyasındaprefab
değerini etkinleştirmelidir.
android {
buildFeatures {
prefab true
}
}
- Yayınlama modülü,
build.gradle
dosyasındaprefabPublishing
değerini etkinleştirmelidir.
android {
buildFeatures {
prefabPublishing true
}
}
- Tüketen modülü,
build.gradle
dosyasınadependencies
bloğu ekleyerek yayınlama modülüne referans vermelidir. Örnek:
dependencies {
implementation project(':mylibrary')
}
- Yayınlama modülü,
prefab
bölümü kullanarak bir paketi göstermelidir. Örnek:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- Tüketen modülün
CMakeLists.txt
dosyası, üreten modül tarafından yayınlanan paketi bulmak içinfind_package()
kullanabilir. Örnek:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- Uygulamanın tamamı için bir STL olmalıdır. Örneğin, hem tüketen hem de yayınlayan modüller C++ paylaşılan STL'yi kullanabilir.
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
Yerel AAR tüketicilerinin ve üreticilerinin AGP ile nasıl yapılandırılacağı hakkında daha fazla bilgi için AGP ile yerel bağımlılıklar başlıklı makaleyi inceleyin.
settings.gradle
dosyasındaki depo ayarları
Android Studio Bumblebee'de yeni bir proje oluşturulduğunda üst düzey build.gradle
dosyasında plugins
bloğu bulunur. Bu bloğun ardından derleme dizininizi temizleyen kod yer alır:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Daha önce üst düzey build.gradle
dosyasında bulunan depo ayarları artık settings.gradle
dosyasında yer alıyor:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
Modül düzeyindeki build.gradle
dosyası değişmemiştir. Bu nedenle, projenizdeki tüm modüller veya Gradle'in kendisi için geçerli olan depolar ve bağımlılıklar için geçerli derleme yapılandırmalarını tanımlamak üzere üst düzey build.gradle
dosyasını ve settings.gradle
dosyasını kullanın; projenizdeki belirli bir modüle özgü derleme yapılandırmalarını tanımlamak için modül düzeyindeki build.gradle
dosyasını kullanın.
İyileştirilmiş kaynak küçültücü
Android Studio Bumblebee, uygulamanızın boyutunu küçültmenize yardımcı olan gelişmiş bir kaynak küçültücü içerir.
Dinamik özelliklere sahip uygulamalar için destek
Android kaynak sıkıştırıcının varsayılan uygulaması, Android Gradle Eklentisi 7.1.0-alpha09 sürümünde güncellendi. Yeni uygulama, dinamik özelliklere sahip uygulamaların küçültülmesini destekler.
Deneysel olarak daha fazla uygulama boyutu azaltma
Yeni kaynak sıkıştırıcı uygulaması, kullanılmayan değer kaynaklarını ve kullanılmayan dosya kaynaklarına yapılan referansları kaldıracak şekilde kaynak tablosunu değiştirerek sıkıştırılmış uygulamanızın boyutunu daha da küçültebilir. Yeni kaynak küçültücü, kullanılmayan dosya kaynaklarını tamamen silerek uygulamanızın boyutunu daha da küçültebilir. Bu davranış henüz varsayılan olarak etkinleştirilmemiştir ancak denemek için projenizin gradle.properties
dosyasına deneysel android.experimental.enableNewResourceShrinker.preciseShrinking=true
seçeneğini ekleyerek etkinleştirebilirsiniz.
Lütfen yeni kaynak sıkıştırıcıda veya deneysel işarette karşılaştığınız sorunları bildirin. Sorunları teşhis etmek için veya geçici bir çözüm olarak, projenizin gradle.properties
bölümüne android.enableNewResourceShrinker=false
ekleyerek önceki uygulamaya geri dönebilirsiniz.
Yeni sıkıştırıcı, kullanılmayan dosya tabanlı kaynakları önceki kaynak sıkıştırıcıdan biraz farklı olan minimum dosyalarla değiştirir ancak bunun çalışma zamanında herhangi bir etkisinin olması beklenmez.
Eski uygulamanın Android Gradle eklentisi 8.0.0 sürümünde kaldırılması planlanmıştır.
Derleme varyantı yayınlama
Android Gradle eklentisi 7.1.0 ve sonraki sürümler, hangi derleme varyantlarının Apache Maven deposuna yayınlanacağını yapılandırmanıza olanak tanır. AGP, yeni yayınlama DSL'sine göre tek veya birden fazla derleme varyantına sahip bir bileşen oluşturur. Bu bileşeni, bir yayını Maven deposunda özelleştirmek için kullanabilirsiniz. Önceki sürümlere kıyasla bu yöntem, varsayılan olarak hiçbir bileşen oluşturulmayacağından gereksiz çalışmalardan da kaçınır. Daha fazla bilgi edinmek için yayınlama kodu örneğine bakın.
Javadoc JAR'ı yayınlama
AGP 7.1.0 ve sonraki sürümler, Java ve Kotlin kaynaklarından Javadoc oluşturmanıza ve kitaplık projeleri için AAR'lara ek olarak Javadoc JAR dosyaları yayınlamanıza olanak tanır. Javadoc, POM ve Gradle Modülü Meta Verileri{:.external} dosyalarına eklenir. singleVariant
veya multipleVariants
yayınlama bloğuna withJavadocJar()
ekleyerek bu özelliği etkinleştirin.
Daha fazla bilgi edinmek için yayınlama seçenekleri kod örneğine bakın.
Kaynak JAR dosyasını yayınlama
AGP 7.1.0 ve sonraki sürümler, kitaplık projeleri için AAR'lara ek olarak Java ve Kotlin kaynak JAR dosyalarını yayınlamanıza olanak tanır. Kaynaklar, POM ve Gradle Modülü Meta Verileri{:.external} dosyalarına eklenir. Bu özelliği, singleVariant
veya multipleVariants
yayınlama bloğuna withSourcesJar()
ekleyerek etkinleştirebilirsiniz. Daha fazla bilgi edinmek için yayınlama seçenekleri kod örneğine bakın.
Lint bloğu semantik değişikliği
Bir sorunun verilen önem düzeyini geçersiz kılan tüm lint yöntemleri (enable
, disable
/ignore
, informational
, warning
, error
, fatal
) artık yapılandırma sırasına uyuyor. Örneğin, bir sorunu finalizeDsl()
bölümünde kritik olarak ayarlamak artık ana DSL'de devre dışı bırakılmasını geçersiz kılar. Daha fazla bilgi için lint{}
blok referans dokümanlarını ve Android derleme akışı ile uzantı noktalarını inceleyin.
Gezinme Safe Args uyumluluğu
Gezinme Güvenli Arg'leri Gradle eklentisinin bağlı olduğu AGP API'leri kaldırıldı. AGP 7.1, Navigation Safe Args 2.4.0-rc1 veya 2.4.0 sürümleriyle çalışmaz ancak 2.5.0-alpha01 ve 2.4.1 sürümleriyle çalışır. Bu esnada geçici bir çözüm olarak AGP 7.1'i Navigation Safe Args'in anlık görüntü derlemesiyle (Navigation 2.5.0-SNAPSHOT) kullanabilirsiniz. Anlık görüntü derlemesini kullanmak için 8054565 numaralı derleme kimliğiyle anlık görüntü talimatlarını uygulayın.
Ayrıca, Navigation Safe Args 2.4.1 ve 2.5.0 sürümleri artık AGP 4.2 ile çalışmayacaktır. Safe Args'in bu sürümlerini kullanmak için AGP 7.0 ve sonraki sürümleri kullanmanız gerekir.
Otomatik bileşen oluşturmayı devre dışı bırakma
AGP 8.0'dan itibaren otomatik bileşen oluşturma varsayılan olarak devre dışı bırakılacak.
Şu anda AGP 7.1, her derleme varyantı için derleme varyantıyla aynı ada sahip bir bileşen ve tüm derleme varyantlarını içeren bir all
bileşeni otomatik olarak oluşturur. Bu otomatik bileşen oluşturma işlemi devre dışı bırakılır. Yeni davranışa geçmek için android.disableAutomaticComponentCreation
true.
olarak ayarlayarak otomatik bileşen oluşturmayı manuel olarak devre dışı bırakmanız gerekir. Daha fazla bilgi için Maven Yayınlama eklentisini kullanma başlıklı makaleyi inceleyin.
Firebase Performance Monitoring uyumluluğu
AGP 7.1, Firebase Performance Monitoring Gradle eklentisinin 1.4.0 ve önceki sürümleriyle uyumlu değildir. AGP Yükseltme Asistanı, eklentiyi 1.4.1 sürümüne otomatik olarak güncellemez. Bu nedenle, firebase-perf
kullanıyorsanız ve AGP'yi 7.1 sürümüne yükseltmek istiyorsanız bu yükseltmeyi manuel olarak yapmanız gerekir.
Bilinen sorunlar
Bu bölümde, Android Gradle eklentisi 7.1.0'da bulunan bilinen sorunlar açıklanmaktadır.
Hilt eklentisini kullanan bir uygulama projesinin birim testiyle ilgili sorunlar
Birim testi sınıf yolu, enstrümante edilmemiş uygulama sınıflarını içerir. Bu, Hilt'in birim testleri çalıştırırken uygulama sınıflarını bağımlılık eklemeyi işlemesi için enstrümante etmediği anlamına gelir.
Bu sorun 7.1.1 sürümünde düzeltilecektir. 213534628 numaralı soruna bakın.