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ümde yer alan 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 bayt kodu dönüştürmesini gerçekleştiremiyor
- Gradle senkronizasyonu "Unable to load class 'com.android.build.api.extension.AndroidComponentsExtension'." hatasıyla başarısız oluyor.
- Android Gradle Plugin 7.0.0'da bazı yeni DSL blokları Groovy DSL'den kullanılamaz.
- AGP 7.1 yeni yayınlama API'si: Oluşturulan javadoc jar dosyası imzalanmıyor
- ClassesDataSourceCache, en son Asm sürümünü kullanmalıdır
- Android Studio BumbleBee, en son değişiklikleri her zaman dağıtmıyor
Bu sürümde yer alan 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 Patch 1'in yayınlanmasına karşılık gelir.
Bu sürümde yer alan 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 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 | 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 konusuna bakın. |
Lint analizi görevi artık önbelleğe alınabilir
AndroidLintAnalysisTask
artık Gradle
derleme önbelleği ile uyumlu. org.gradle.caching=true
dosyanızda gradle.properties
ayarını yaparak derleme önbelleğini etkinleştirirseniz lint analiz görevi, mümkün olduğunda çıkışını derleme önbelleğinden alır.
Android Gradle eklentisiyle lint çalıştırılırken en büyük darboğaz genellikle lint analizidir. 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 temizlerseniz performansınızda belirgin bir iyileşme 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. Gradle modülleri arasında başlıkları ve kitaplıkları iletmek için Prefab protokolü kullanılır.
Şartlar
-
Tüketim modülü
CMake
olmalı vendk-build
olmamalıdır. ndk-build desteği için gelecekte bir NDK güncellemesi yapılması gerekecektir. Yayınlama modülüCMake
veyandk-build
olabilir. -
Tüketim modülü,
build.gradle
dosyasındaprefab
'yi 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ındakidependencies
bloğuna bir satır eklenerek yayınlama modülüne referans vermelidir. Örneğin:
dependencies {
implementation project(':mylibrary')
}
- Yayınlama modülü,
prefab
bölümü kullanarak bir paket sunmalıdır. Örneğin:
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. Örneğin:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- Uygulamanın tamamı için tek bir STL olmalıdır. Bu nedenle, örneğin hem tüketim hem de yayınlama modülleri C++ paylaşılan STL'yi kullanabilir.
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
AGP ile yerel AAR tüketicilerinin ve üreticilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için AGP ile yerel bağımlılıklar başlıklı makaleye bakın.
settings.gradle
dosyasındaki depo ayarları
Android Studio Bumblebee'de yeni bir proje oluşturulduğunda en üst düzeydeki build.gradle
dosyası plugins
bloğunu ve ardından derleme dizininizi temizleyecek 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ı 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 için geçerli olan derleme yapılandırmalarını veya Gradle'ın kendisi için geçerli olan depoları ve bağımlıları 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.
Geliştirilmiş kaynak küçültücü
Android Studio Bumblebee, uygulamanızın boyutunu küçültmenize yardımcı olan geliştirilmiş bir kaynak küçültücü içerir.
Dinamik özellikli uygulamalar için destek
Android Gradle eklentisi 7.1.0-alpha09'da Android kaynak küçültücünün varsayılan uygulaması güncellendi. Yeni uygulama, dinamik özelliklere sahip uygulamaların küçültülmesini destekler.
Deneysel olarak uygulama boyutunu daha da küçültme
Yeni kaynak küçültücü uygulaması, kaynak tablosunu değiştirerek kullanılmayan değer kaynaklarını ve kullanılmayan dosya kaynaklarına yapılan referansları kaldırır. Böylece küçültülmüş uygulamanızın boyutu daha da küçülür. Yeni kaynak küçültücü, kullanılmayan dosya kaynaklarını tamamen silebilir ve uygulamanızın boyutunu daha da küçültebilir. Bu davranış henüz varsayılan olarak etkinleştirilmemiştir ancak deneysel seçeneği android.experimental.enableNewResourceShrinker.preciseShrinking=true
projenizin gradle.properties
dosyasına ekleyerek bu özelliği deneyebilirsiniz.
Lütfen yeni kaynak küçültücü veya deneysel işaretle ilgili bulduğunuz sorunları bildirin. Sorunları teşhis etmeye yardımcı olmak veya geçici bir çözüm olarak, projenizin android.enableNewResourceShrinker=false
bölümüne gradle.properties
ekleyerek önceki uygulamaya geri dönebilirsiniz.
Yeni küçültücü, kullanılmayan dosya tabanlı kaynakları önceki kaynak küçültücüden biraz farklı olan minimal dosyalarla değiştirir ancak bunun çalışma zamanı üzerinde herhangi bir etkisi olması beklenmez.
Eski uygulamanın Android Gradle eklentisi 8.0.0'da kaldırılması planlanmaktadır.
Derleme varyantı yayınlama
Android Gradle eklentisinin 7.1.0 ve sonraki sürümleri, hangi derleme varyantlarının Apache Maven deposunda yayınlanacağını yapılandırmanıza olanak tanır. AGP, yeni yayınlama DSL'sine dayalı olarak tek veya birden fazla derleme varyantı içeren bir bileşen oluşturur. Bu bileşeni, bir yayını Maven deposunda özelleştirmek için kullanabilirsiniz. Önceki sürümlere kıyasla, varsayılan olarak bileşen oluşturulmayacağından gereksiz iş yükü de önlenir. 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'lere ek olarak Javadoc JAR dosyaları yayınlamanıza olanak tanır. Javadoc, POM ve Gradle Module Metadata{:.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'ını yayınlama
AGP 7.1.0 ve sonraki sürümler, kitaplık projeleri için AAR'lere ek olarak Java ve Kotlin kaynak JAR dosyalarını yayınlamanıza olanak tanır. Kaynaklar, POM ve Gradle Module Metadata{:.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 uymaktadır. Örneğin, finalizeDsl()
'de bir sorunu kritik olarak ayarlamak, artık ana DSL'de devre dışı bırakmayı geçersiz kılıyor. Daha fazla bilgi için lint{}
blok referans dokümanları ve
Android derleme
akışı ve uzantı noktaları başlıklı makaleleri inceleyin.
Navigation Safe Args uyumluluğu
Navigation Safe Args 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 arada, geçici çözüm olarak Navigation Safe Args'ın anlık görüntü derlemesi olan Navigation 2.5.0-SNAPSHOT ile AGP 7.1'i kullanabilirsiniz. Anlık görüntü derlemesini kullanmak için anlık görüntü talimatlarını uygulayın. Derleme kimliği #8054565 olmalıdır.
Ayrıca, Navigation Safe Args 2.4.1 ve 2.5.0 sürümleri artık AGP 4.2 ile çalışmayacak. Bu Safe Args sürümlerini kullanmak için AGP 7.0 ve sonraki sürümleri kullanmanız gerekiyor.
Otomatik bileşen oluşturmayı devre dışı bırakma
AGP 8.0'dan itibaren otomatik bileşen oluşturma özelliği varsayılan olarak devre dışı bırakılacak.
Şu anda AGP 7.1, her derleme çeşidi için otomatik olarak bir bileşen oluşturur. Bu bileşen, derleme çeşidiyle aynı ada sahiptir ve tüm derleme çeşitlerini içeren bir all
bileşeni içerir. Bu otomatik bileşen oluşturma özelliği devre dışı bırakılır. Yeni davranışa geçmek için android.disableAutomaticComponentCreation
değerini true.
olarak ayarlayarak 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 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 bilinen sorunlar açıklanmaktadır.
Hilt eklentisini kullanan bir uygulama projesinde birim testiyle ilgili sorunlar
Birim testi sınıf yolu, enstrümanlı olmayan uygulama sınıflarını içerir. Bu nedenle, birim testleri çalıştırılırken Hilt, bağımlılık eklemeyi işlemek için uygulama sınıflarını enstrümanlı hale getirmez.
Bu sorun, 7.1.1 sürümünde düzeltilecektir. 213534628 numaralı soruna bakın.