Android Gradle Plugin 7.1.0 (Ocak 2022)
Android Gradle eklentisi 7.1.0, çeşitli yeni özellikler ve iyileştirmeler içeren ana 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 Yama 3 blog yayınına bakın.
7.1.2 (Şubat 2022)
Bu küçük güncelleme aşağıdaki hata düzeltmelerini içerir:
- Android Gradle Plugin 7.1.0-rc01, birim testleri sırasında ASM bayt kodu dönüştürme işlemini gerçekleştiremiyor
- Gradle senkronizasyonu, "Allowed to load the class 'com.android.build.api.extension.AndroidComponentsExtension'" hatası nedeniyle 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'sı: oluşturulan javadoc jar dosyası imzalanmıyor
- ClassDataSourceCache 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 Yama 2 blog yayınına bakın.
7.1.1 (Şubat 2022)
Bu küçük güncelleme, Android Studio Bumblebee Yama 1'e karşılık gelir.
Bu sürümdeki hata düzeltmelerinin listesini görmek için Android Studio Bumblebee Yama 1 blog yayınına bakın.
Uyumluluk
Minimum sürüm | Varsayılan sürüm | |
---|---|---|
Gradle | 7,2 | 7,2 |
SDK Oluşturma Araçları | 30.0.3 | 30.0.3 |
400 | Yok | 21.4.7075529 |
JDK | 11 | 11 |
Lint analizi görevi artık önbelleğe alınabilir
AndroidLintAnalysisTask
artık Gradle derleme önbelleğiyle uyumludur. Derleme önbelleğini, gradle.properties
dosyanızda org.gradle.caching=true
ayarını yaparak etkinleştirirseniz lint analizi görevi, mümkün olduğunda çıktısını derleme önbelleğinden alır.
lint analizi görevi, Android Gradle eklentisiyle lint çalıştırırken genellikle en büyük performans sorunudur. Bu nedenle, derleme önbelleğinin etkinleştirilmesi, birçok durumda lint çalıştırılı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 önemli bir performans artışı görürsünüz.
C/C++ modülleri artık aynı projedeki diğer C/C++ modüllerine referans verebilir
Artık başka bir Gradle modülünde başlık dosyalarına ve kitaplık koduna referans vermek için C/C++ kodlu bir Gradle Android modülü ayarlanabilir. Gradle modülleri arasında başlıkları ve kitaplıkları iletmek için Prefab protokolü kullanılır.
Şartlar
-
Temsil eden modül
ndk-build
değil,CMake
olmalıdır. ndk-build desteği, ileride bir NDK güncellemesi gerektirir. Yayınlama modülüCMake
veyandk-build
olabilir. -
Tüketen modül,
build.gradle
dosyasındaprefab
öğesini etkinleştirmelidir.
android {
buildFeatures {
prefab true
}
}
- Yayınlama modülü,
build.gradle
dosyasındaprefabPublishing
özelliğini etkinleştirmelidir.
android {
buildFeatures {
prefabPublishing true
}
}
- Tüketim modülü,
build.gradle
dosyasıdependencies
blokuna bir satır ekleyerek yayınlama modülüne başvurmalıdır. Örneğin:
dependencies {
implementation project(':mylibrary')
}
- Yayınlama modülü,
prefab
bölümünü kullanan bir paketi göstermelidir. Örneğin:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- Kullanıcı modülün
CMakeLists.txt
dosyası, üretim modülü tarafından yayınlanan paketi bulmak içinfind_package()
kullanabilir. Örneğin:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- Tüm uygulama için tek bir STL olmalıdır. Böylece, örneğin hem tüketen hem de yayınlama modülleri C++ paylaşılan STL'sini kullanabilir.
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
Yerel AAR tüketicilerinin ve üreticilerinin AGP ile nasıl yapılandırılacağıyla ilgili daha ayrıntılı açıklama için AGP ile yerel bağımlılıklar bölümüne bakın.
settings.gradle
dosyasındaki kod deposu ayarları
Android Studio Bumblebee'de yeni bir proje oluşturulduğunda üst düzey build.gradle
dosyası, plugins
bloğunu ve derleme dizininizi temizlemek için kullanılacak kodu içerir:
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ı şimdi 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şmedi. Bu nedenle, projenizdeki tüm modüller için geçerli olan derleme yapılandırmaları veya Gradle'ın kendisi için geçerli olan depoları ve bağımlılıkları tanımlamak için ü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üçültmeye yardımcı olan iyileştirilmiş bir kaynak küçültücü içerir.
Dinamik özelliklere sahip uygulamalar için destek
Android kaynak küçültücünün varsayılan uygulaması, Android Gradle Eklentisi 7.1.0-alpha09'da güncellendi. Yeni uygulama, dinamik özelliklere sahip uygulamaların küçültülmesini destekler.
Deneysel uygulama boyutu küçültme
Yeni kaynak küçültücü uygulaması, kullanılmayan değer kaynaklarını ve kullanılmayan dosya kaynaklarına referansları kaldırmak için kaynak tablosunu değiştirerek küçültülmüş uygulamanızın boyutunu daha da küçültebilir. Yeni kaynak düzenleyici, kullanılmayan dosya kaynaklarını tamamen silerek uygulamanızın boyutunu daha küçük hale getirebilir. Bu davranış henüz varsayılan olarak etkin değildir ancak projenizin gradle.properties
dosyasına android.experimental.enableNewResourceShrinker.preciseShrinking=true
deneysel seçeneğini ekleyerek bu davranışı denemek için etkinleştirebilirsiniz.
Lütfen yeni kaynak küçültücü veya deneysel işaretle ilgili bulduğunuz tüm sorunları bildirin. Sorunların teşhis edilmesine yardımcı olmak veya geçici bir çözüm olarak, projenizin gradle.properties
öğesine android.enableNewResourceShrinker=false
öğesini ekleyerek önceki uygulamaya geri dönebilirsiniz.
Yeni küçültücü, kullanılmayan dosya tabanlı kaynakları önceki kaynak küçültücüden biraz farklı minimum dosyalarla değiştirir ancak bunun çalışma zamanı üzerinde herhangi bir etkisi olması beklenmez.
Eski uygulamanın, Android Gradle eklentisi 8.0.0'dan kaldırılması planlanmıştır.
Derleme varyantı yayınlama
Android Gradle eklentisinin 7.1.0 ve sonraki sürümleri, Apache Maven deposunda yayınlanacak derleme varyantlarını yapılandırmanıza olanak tanır. AGP, yeni yayınlama DSL'sini temel alan bir veya daha fazla derleme varyantına sahip bir bileşen oluşturur. Bu bileşeni kullanarak bir yayını Maven deposuna göre özelleştirmek için kullanabilirsiniz. Varsayılan olarak hiçbir bileşen oluşturulmayacağı için önceki sürümlere kıyasla bu sayede gereksiz işlerin önüne geçilir. Daha fazla bilgi edinmek için yayınlama kodu örneğine bakın.
Javadoc JAR'si Yayınlama
AGP 7.1.0 ve sonraki sürümler, kitaplık projeleri için AAR'lerin yanı sıra Java ve Kotlin kaynaklarından Javadoc oluşturmanıza ve 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ın bloğuna withJavadocJar()
ekleyerek bu özelliği etkinleştirin.
Daha fazla bilgi için yayınlama seçenekleri kod örneğine bakın.
Kaynakları JAR yayınlama
AGP 7.1.0 ve sonraki sürümler, kitaplık projeleri için AAR'lerin yanı sıra Java ve Kotlin kaynak JAR dosyaları 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ın bloğuna withSourcesJar()
ekleyerek etkinleştirebilirsiniz. Daha fazla bilgi için yayınlama seçenekleri kod örneğine bakın.
Hata analizi bloku semantik değişikliği
Bir sorunun belirtilen önem düzeyini (enable
, disable
/ignore
, informational
, warning
, error
, fatal
) geçersiz kılan tüm lint yöntemleri artık yapılandırma sırasına uyuyor. Örneğin, finalizeDsl()
ürününde bir sorunun önemli olarak ayarlanması artık ana DSL'de devre dışı bırakılmasını geçersiz kılar. Daha fazla bilgi için lint{}
blok referans belgeleri ile Android derleme akışı ve uzantı noktalarını inceleyin.
Gezinme Güvenli Aramaları uyumluluğu
Gezinme Safe Args Gradle eklentisinin bağlı olduğu AGP API'leri kaldırıldı. AGP 7.1, Navigation Safe Args sürüm 2.4.0-rc1 veya 2.4.0 ile çalışmaz ancak 2.5.0-alpha01 ve 2.4.1 sürümleriyle çalışır. Bu sırada, geçici bir çözüm olarak AGP 7.1'i, Navigation Safe Args, Navigation 2.5.0-SNAPSHOT anlık görüntüsüyle kullanabilirsiniz. Anlık görüntü derlemesini kullanmak için 8054565 derleme kimliğiyle anlık görüntü talimatlarını uygulayın.
Ayrıca, Navigasyon Güvenli Arama'nın 2.4.1 ve 2.5.0 sürümleri artık AGP 4.2 ile çalışmayacaktır. Güvenli Arama'ların bu sürümlerini kullanmak için AGP 7.0 ve sonraki sürümlerini kullanmanız gerekir.
Otomatik bileşen oluşturmayı devre dışı bırak
AGP 8.0'dan itibaren otomatik bileşen oluşturma varsayılan olarak devre dışı olacaktır.
Şu anda AGP 7.1, her derleme varyantı için otomatik olarak derleme varyantıyla aynı ada sahip bir bileşen ve tüm derleme varyantlarını içeren bir all
bileşeni oluşturmaktadır. Bu otomatik bileşen oluşturma devre dışı bırakılacak. Yeni davranışa geçiş yapmak için android.disableAutomaticComponentCreation
ayarını true.
yaparak otomatik bileşen oluşturmayı manuel olarak devre dışı bırakmanız gerekir. Daha fazla bilgi için Maven Publish 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 otomatik olarak 1.4.1 sürümüne güncellemez. Bu nedenle, firebase-perf
kullanıyor ve AGP'yi 7.1 sürümüne yükseltmek istiyorsanız bu yeni sürüme geçirme işlemini 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 projesini test etmeyle ilgili sorunlar
Birim testi sınıf yolu, araç içermeyen uygulama sınıflarını içerir. Yani Hilt, birim testlerini çalıştırırken uygulama sınıflarını bağımlılık yerleştirmeyi ele alacak şekilde ayarlamaz.
Bu sorun, 7.1.1 sürümüyle birlikte düzeltilecektir (213534628 numaralı soruna bakın).