Android Gradle Eklentisi 8.3.0 (Şubat 2024)

Android Gradle eklentisi 8.3.0, çeşitli yeni özellikler ve iyileştirmeler içeren önemli bir sürümdür.

Uyumluluk

Android Gradle eklentisi 8.3'ün desteklediği maksimum API düzeyi 34'tür. Diğer uyumluluk bilgileri:

Minimum sürüm Varsayılan sürüm Notlar
Gradle 8.4 8.4 Daha fazla bilgi için Gradle'i güncelleme başlıklı makaleyi inceleyin.
SDK Oluşturma Araçları 34.0.0 34.0.0 SDK Oluşturma Araçları'nı yükleyin veya yapılandırın.
NDK Yok 25.1.8937393 NDK'nın farklı bir sürümünü yükleyin veya yapılandırın.
JDK 17 17 Daha fazla bilgi için JDK sürümünü ayarlama başlıklı makaleyi inceleyin.

Aşağıda, Android Gradle eklentisi 8.3'teki yeni özellikler verilmiştir.

Yama sürümleri

Aşağıda, Android Studio Iguana ve Android Gradle eklentisi 8.3'teki yama sürümlerinin listesi verilmiştir.

Android Studio Iguana | 2023.2.1 Yama 2 ve AGP 8.3.2 (Nisan 2024)

Bu küçük güncelleme, bu hata düzeltmelerini içerir.

Android Studio Iguana | 2023.2.1 Yama 1 ve AGP 8.3.1 (Mart 2024)

Bu küçük güncelleme, bu hata düzeltmelerini içerir.

Gradle Sürüm Katalogları için Destek

Android Studio, bağımlılıklarını tek bir merkezi konumda yönetmenize ve modüller ya da projeler arasında paylaşmanıza olanak tanıyan bir özellik olan TOML tabanlı Gradle Sürüm Kataloglarını destekler. Android Studio artık düzenleyici önerileri ve Proje Yapısı iletişim kutusuyla entegrasyon sayesinde sürüm kataloglarını yapılandırmayı kolaylaştırıyor. Gradle sürüm kataloglarını nasıl oluşturacağınızı ve yapılandıracağınızı veya derlemenizi sürüm kataloglarına nasıl taşıyacağınızı öğrenin.

Kod tamamlama ve gezinme

Android Studio, TOML dosya biçiminde bir sürüm kataloğunu düzenlerken veya bir sürüm kataloğundan derleme dosyasına bağımlılık eklerken kod tamamlama özelliği sunar. Kod tamamlamayı kullanmak için Ctrl+Boşluk (macOS'te Command+Boşluk) tuşlarına basın. Ayrıca, Ctrl+b (macOS'te Komut+b) tuşlarına basarak uygulamanızın build.gradle dosyasında bir bağımlılık referansından sürüm kataloğunda bu referansın tanımlandığı yere hızlıca gidebilirsiniz.

Bağımlılık eklerken kod tamamlama

Proje Yapısı iletişim kutusuyla entegrasyon

Projenizde TOML dosya biçiminde tanımlanmış bir sürüm kataloğu kullanılıyorsa Android Studio'daki Proje Yapısı iletişim kutusunun Değişkenler görünümünden (Dosya > Proje Yapısı > Değişkenler) burada tanımladığınız değişkenleri düzenleyebilirsiniz. Her sürüm kataloğu için, söz konusu katalogdaki değişkenleri listeleyen bir açılır liste bulunur. Bir değişkeni düzenlemek için değerini tıklayın ve üzerine yazın. Bu değişiklikleri kaydettiğinizde TOML dosyası buna göre güncellenir.

Proje Yapısı iletişim kutusundaki bir sürüm kataloğundaki değişkenler

Bağımlılıkları Proje Yapısı iletişim kutusunun Bağımlılıklar görünümünde de (Dosya > Proje Yapısı > Bağımlılıklar) güncelleyebilirsiniz. Proje Yapısı iletişim kutusunu kullanarak sürümleri güncellemek için düzenlemek istediğiniz modüle ve bağımlılığa gidin, ardından İstenen Sürüm alanını güncelleyin. Bu değişiklikleri kaydettiğinizde TOML dosyası buna göre güncellenir. Bağımlılık sürümü bir değişken kullanılarak tanımlandıysa sürümü doğrudan bu şekilde güncellemenin, değişkenin yerini sabit kodlanmış bir değerle değiştirdiğini unutmayın. Ayrıca, Proje Yapısı iletişim kutusunu kullanıp kullanmadığınıza bakılmaksızın, bir derleme dosyasından kaldırılan bağımlılıkların sürüm kataloğundan kaldırılmadığını unutmayın.

Proje Yapısı iletişim kutusunda bir sürüm kataloğundaki bağımlılar

Bilinen sorunlar ve sınırlamalar

Aşağıda, Android Studio'da Gradle Sürüm Katalogları desteğiyle ilgili bilinen sorunlar veya sınırlamalar verilmiştir.

  • Kotlin komut dosyası dosyalarında eklenti takma adı bildirimlerinin hata vurgulaması: alias(libs.plugins.example) biçiminde bir eklenti bildirimi eklediğinizde düzenleyici, libs kısmının altına kırmızı bir alt çizgi ekler. Bu, Gradle 8.0 ve önceki sürümlerde bilinen bir sorundur ve Gradle'ın gelecekteki bir sürümünde çözülecektir.

  • Android Studio yalnızca TOML biçimindeki sürüm kataloglarını destekler: Şu anda Android Studio kod tamamlama, gezinme ve Proje Yapısı iletişim kutusu desteği yalnızca TOML dosya biçiminde tanımlanan sürüm katalogları için kullanılabilir. Ancak doğrudan settings.gradle dosyasına sürüm kataloğu ekleyebilir ve projenizde bu kataloğun bağımlılarını kullanabilirsiniz.

  • KTS derleme dosyaları için gezinme desteklenmez: Ctrl+tıklama (macOS'te Command+tıklama) kullanarak bir sürüm kataloğunda bağımlılık tanımına gitmek, Kotlin komut dosyası kullanılarak yazılmış derleme dosyaları için henüz desteklenmemektedir.

  • Firebase Asistanı, bağımlılıkları doğrudan derleme komut dosyalarına ekler: Firebase Asistanı, sürüm katalogları aracılığıyla değil, bağımlılıkları doğrudan derleme komut dosyalarınıza ekler.

  • "Kullanım yerlerini bul" işlevi desteklenmiyor: KTS veya Groovy'da yazılmış olsun, bir sürüm kataloğu değişkeninin diğer derleme dosyalarındaki kullanım yerlerini bulma özelliği henüz desteklenmemektedir. Yani, bir sürüm kataloğundaki değişken tanımında Ctrl+tıklama (macOS'te Komut+tıklama) kullanıldığında, değişkenin kullanıldığı derleme dosyalarına yönlendirilmezsiniz.

  • Android Studio'daki Proje Yapısı iletişim kutusu, kök gradle klasöründeyse birden fazla katalog dosyasını gösterir ancak kompozit derleme için katalogları göstermez. Örneğin, biri uygulamanız için diğeri de birleşik derleme için olmak üzere iki katalog dosyanız varsa Proje Yapısı iletişim kutusunda yalnızca uygulama katalog dosyası gösterilir. Kompozit derleme kullanabilirsiniz ancak TOML dosyasını doğrudan düzenlemeniz gerekir.

Ek SDK analizleri: politika sorunları

Android Studio, Google Play SDK Dizini'nde Play politikası ihlalleri olan herkese açık SDK'lar için build.gradle.kts ve build.gradle dosyalarında ve Proje Yapısı İletişim Kutusu'nda lint uyarıları gösterir. Play politikalarını ihlal eden tüm bağımlılıklarını güncellemeniz gerekir. Bu ihlallerin gelecekte Google Play Console'da yayınlamanızı engelleyebileceğini unutmayın. Politika ihlali uyarıları, Android Studio tarafından gösterilen eski sürüm uyarılarını tamamlar.

Android Studio compileSdk sürümü desteği

Projenizde Android Studio'nun mevcut sürümü tarafından desteklenmeyen bir compileSdk kullanılıyorsa Android Studio bir uyarı görüntüler. Varsa projenizin kullandığı compileSdk sürümünü destekleyen bir Android Studio sürümüne geçmenizi de önerir. Android Studio'yu yükseltirken AGP'yi de yükseltmeniz gerekebileceğini unutmayın. AGP, projeniz tarafından kullanılan compileSdk AGP'nin mevcut sürümü tarafından desteklenmiyorsa Derleme araç penceresinde de uyarı gösterir.

Lint davranışında yapılan değişiklikler

Android Gradle eklentisi 8.3.0-alpha02'den itibaren, bir modülde lint çalıştırıldığında modülün ana ve test bileşenleri için ayrı lint analizi görevleri çalıştırılır. Bu değişikliğin nedeni performansı iyileştirmektir. Önceki davranışa dönmek için gradle.properties dosyanızda android.experimental.lint.analysisPerComponent=false değerini ayarlayın.

Hassas kaynak küçültme varsayılan olarak açıktır

resources.arsc dosyasından kullanılmayan girişleri kaldıran ve kullanılmayan kaynak dosyalarını ortadan kaldıran hassas kaynak küçültme özelliği varsayılan olarak açıktır. Bu küçültme etkinleştirildiğinde kaynak tablonuz küçültülür ve APK'ya yalnızca referans verilen res klasör girişleri dahil edilir.

Hassas kaynak küçültmeyi devre dışı bırakmak için projenizin gradle.properties dosyasında android.enableNewResourceShrinker.preciseShrinking değerini false olarak ayarlayın.

Çözülen sorunlar

Android Gradle eklentisi 8.3.0

Çözülen Sorunlar
Android Gradle eklentisi
Derleme önbelleği, PackageForUnitTest görevi için gereksiz
[AGP 8.1.0] Hem splits.abi.isEnable hem de testOptions.unitTests.isIncludeAndroidResources doğruysa ./gradlew test "Manifest çıkışı bulunamadı" hatasıyla başarısız oluyor
İç içe yerleştirilmiş gradle birleşik derlemeleri ile AGP modeli oluşturma işlemi başarısız oluyor
Kaynak küçültücü, kaynak kimliklerini bozarak çalışma zamanında kilitlenmelere neden oluyor
Minimum Gradle sürümü kontrolü ikinci derlemede ve sonrasında çalışmıyor
AGP 8.0.2'den 8.1.0'a güncellendikten sonra ":app:mergeReleaseClasses" görevi için yürütme başarısız oldu
[Gradle 8.4][upgrade] Kotlin gradle eklentisinde desteği sonlandırılan özelliğin kullanılması nedeniyle yükseltme işleminden sonra entegrasyon testi hatası
Yapılandırma aşamasında manifest yer paylaşımı dosyalarının varlığını kontrol etmez.
MergeJavaResWorkAction hatası ile ilgili Gradle dokümanındaki bozuk bağlantı
Gradle 8.1, .gradle/.android/analytics.settings nedeniyle yapılandırma önbelleğe alma işlemini bozuyor
AGP, ProjectComponentIdentifier.build olmadan ProjectComponentIdentifier.projectPath kullanmamalıdır.
Lütfen AGP "Analytics other plugin to proto: ..." için bilgi düzeyinde günlüğe kaydetmeyi azaltın/kaldırın
[Gradle 8.4][upgrade] ProcessJavaResTask'ta yapılandırma sırasında dosya işlemi, yapılandırma önbelleğe alma işlemini bozuyor
Simge tablosunu (R.txt) almak için Variant API
lint bağımsız eklentisi, gradleApi() bağımlılığını düzgün şekilde işlemiyor
AGP sınıflarında/mülklerinde kötü kDocs. "VariantOutput.enable" ile değiştirilmesi önerilir.
AGP 8.3.0-alpha02, Windows ana makinelerine sürüm profilleri yükleyemiyor
"android.enableDexingArtifactTransform=true" değerini zorunlu kılma
[Gradle 8.4][upgrade] Yapılandırma aşamasında dosya işleme nedeniyle yükseltme işleminden sonra entegrasyon testi hatası
AGP 8.3.0-alpha-02 - "Hata: Önbelleğe alınmış kaynak deposunun seri dışına çıkarılması başarısız oldu."
[Gradle 8.4][upgrade] TestLabBuildService'in yapılandırma aşamasında dosya işleme nedeniyle yükseltme sonrası entegrasyon testi hatası
AGP 8.1.0, enstrümante testleri çalıştırdıktan sonra uygulamayı kaldırıyor ancak 7.4.2 kaldırmıyor
Bir APK'yı dönüştürmek, ListingFileRedirectTask ile ilgili bir hataya neden oluyor
ASSETS yapısını dönüştürmek bozuk giriş/çıkış konumları veriyor
android.experimental.r8.dex-startup-optimization=true değerini varsayılan olarak tanıtma
Yeni Gradle yapılandırma uyumluluğu API'sine geçiş
Kotlin derleyicisi IDEA 21.3'e güncellemeye çalışırken kaynak derleme başarısız oluyor
Artifacts API ile reaktif get()
"android.lint.printStackTrace" AGP özelliğini kararlı sürüme geçirin
AGP 8.1.0: dinamik özellik: exportReleaseConsumerProguardFiles ile extractProguardFiles arasındaki dolaylı bağımlılık derleme hatalarına neden oluyor
"variant.unitTest.jniLibs.addGeneratedSourceDirectory" hiçbir şey yapmıyor
Gradle 8.4 uyumluluğu için AGP'de kullanılan XML ayrıştırıcıyı güncelleme
AGP 8.0.1 sürüm paketinde jacoco enstrümanı geçerli olmuyor
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
AGP 8.3.0-alpha11, android.content.res.Resources$NotFoundException hatasıyla başlangıçta kilitlenen bir sürüm APK'sı oluşturuyor
"android.lint.printStackTrace" AGP özelliğini kararlı sürüme geçirin
Özellik İsteği: com.android.build.api.extension.impl.CURRENT_AGP_VERSION'ı herkese açık bir API olarak tanıtın
SDK Yöneticisi, günlük bilgilerini stdout'a spam göndermeyi durdurmalıdır
DexArchiveBuilderTaskDelegate, yalnızca kaynak kitaplık modülüyle başarısız oldu
AGP7.4 özel eklentisi varyantı toTransform for all throw duplicate entry: META-INF/MANIFEST.MF exception
Yeni Manifest etiketlerini destekler.
Stüdyo ayarlarındaki "Bağımsız Projeler" bağlantısı yanlış yere yönlendiriyor.
Lütfen oluşturulan kaynakları Javadoc ve SourceJar'a dahil etme seçenekleri sağlayın
compileSdk ile minCompileSdkVersion arasındaki bağımlılıktaki tutarsızlık için hızlı düzeltme gerekiyor
[Gradle] tools:overrideLibrary yıldız işaretini (*) desteklemelidir
Manifest düzenlerken kullanıcı arayüzü donuyor
AGP 8.2.0'da JaCoCo sürümü ayarlanamıyor
Android Gradle eklentisi 8.2.0'ın yükleme görevi, dinamik özellikler kullanan projelerde başarısız oluyor
Android Gradle eklentisi 8.2.0'ın yükleme görevi, dinamik özellikler kullanan projelerde başarısız oluyor
Dexer (D8)
[desugared library] Desugared library version 2.1 is not compatible with previous versions of R8
Optimizasyonlar yalnızca D8 ile bile çalışıyor mu?
Lint
[Lint] TranslucentViewDetector, filterIncident işlevinde kilitleniyor ve lint'in yanlış sonuç vermesine neden oluyor
TranslucentViewDetector, "behind" değerini kabul etmelidir
Android Lint, "variantInputs.name" özelliğinin yapılandırılmış bir değeri olmadığı bir KMP kitaplığında başarısız oluyor.
TranslucentViewDetector, manifest'te yanlış satır olduğunu bildirdi
lintDebug, proje bağımlılıkları kullanılırken UseTomlInstead uyarılarını yanlış raporlar
Android Lint tarafından işaretlenen başka bir projedeki beklenmeyen sorunlar
LINT, bağlama ve tıklama dinleyicisi içinde Kullanılmayan Kaynak yanlış pozitif algılamasını kontrol eder
Özel lint kontrol jar dosyası yüklenemedi: Node, TreeNode olarak yayınlanamıyor
Değişken tanımlarında ek açıklamalı sınıfların kullanımı için Lint visitAnnotationUsage çağrılmadı
Lint 31.0.2, java.util.NoSuchElementException hatasıyla başarısız: Dizi boş.
API 26 gerektiren kotlin.text.MatchNamedGroupCollection#get(String) ile ilgili Lint uyarısı yok
lint:TypographyQuotes yanlış negatifler: birden fazla kaçışlı apostrof yoksayılır
AGP 8.0.2 lint InvalidId detector false positive
LintError sorunları, lint temel hatlarına eklendi
Hızlı Düzeltme Lint çalışmıyor ve IDE hatasına neden oluyor
Kısmi analiz nedeniyle tutarsız test hatası
Yanlış pozitif olan bir uyarının geçersiz vurgusu
Değişken tanımlarında ek açıklamalı sınıfların kullanımı için Lint visitAnnotationUsage çağrılmadı
Kullanılmayan Kaynak İşleyici, Gradle derleme dosyasını silebilir
NewApi lint denetimi, "isAtleastU() && otherCondition()" nihai alanını anlamıyor
"LintClient.getSdkHome" kaynağından StackOverflow
Android Studio / Lint, "platform" bağımlılıkları güncel olmadığında size bilgi vermiyor
Hata: Firebase-bom bağımlılığını güncelleme önerisi yok
Proje yapısı (ve Gradle (?)), yeni bir sürüme yükseltilecek Firebase BOM bağımlılıklarını keşfetmiyor.
Lint Entegrasyonu
testImplementation bağımlılığından DuplicatePlatformClasses lint hatası
Shrinker (R8)
AGP 8.0.2'den 8.1.0'a yükseltme yapıldıktan sonra R8 çalışmıyor
isShrinkResources, 8.3.0-alpha11 ile alpha14 arasında aşırı optimizasyon yapıyor
AGP 8.2.0 ile R8 Flurry SDK kilitlenmesi
Android - R8, LinearLayoutManager alt sınıfının kilitlenmesine neden oluyor
R8 v8.2.33, yükseltme işleminden sonra "java.lang.VerifyError: Bad type on operand stack" çalışma zamanı kilitlenmesi
[R8 8.3.21] R8 8.3.21, R8 8.1.56'dan 1,57 MB daha büyük
[R8 8.3.21] R8 8.3.21, R8 8.1.56'dan 1,57 MB daha büyük
class.getInterfaces() boş döndürüyor
Test SimpleKotlinEnumUnboxingTest, kotlin_dev bot'unda başarısız oluyor

Android Gradle eklentisi 8.3.1

Çözülen Sorunlar
Android Gradle eklentisi
MergeJavaResourcesTask artımlı girişleri işleme sorunu
Lint Entegrasyonu
Lint, AGP 8.3.0-rc02'de kardeş kaynak kümelerinin türlerini çözemiyor

Android Gradle eklentisi 8.3.2

Çözülen Sorunlar
Android Gradle eklentisi
Şeker çıkarma özelliğinin etkin olduğu AGP 8.3'te kilitlenme yaşanabilir
AGP 8.3, zipApksFor Görevi'ni bozuyor
Lint Entegrasyonu
Lint, KMP bağımlılığının anlamını netleştiremiyor