Android Gradle Plugin 8.0.0 (Nisan 2023)

Android Gradle eklentisi 8.0.0, yeni ve özellikleri ve iyileştirmeleri.

Uyumluluk

Minimum sürüm Varsayılan sürüm Notlar
Gradle 8.0 8.0 Daha fazla bilgi edinmek için Gradle'ı güncelleme sayfasına göz atın.
SDK Derleme Araçları 30.0.3 30.0.3 SDK Derleme 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 edinmek için JDK sürümünü ayarlama bölümüne bakın.

Yama sürümleri

Aşağıda, Android Gradle eklentisi için yama sürümlerinin listesi verilmiştir 8.0.

Android Gradle Eklentisi 8.0.2 (Mayıs 2023)

AGP 8.0.2'de düzeltilen hataların listesi için bkz. Android Studio 2022.2.1 sorunları kapatıldı.

Android Gradle Eklentisi 8.0.1 (Mayıs 2023)

Bu küçük güncelleme aşağıdaki hata düzeltmelerini içerir:

Düzeltilen sorunlar
Hata: "Tabloda belirtilen kimliğe sahip Versiongereksinim yok" AGP 7.2.2 sürümüne geçtikten sonra -> 7.4.0
MarkTypeAsLive AGP 7.4.1'de R8 NullPointerException
[R8 4.0.53] Android 11'de sabit sınıf doğrulama hatası

Önemli değişiklik: Modül düzeyinde derleme komut dosyasında ad alanı gerekli

Bunun yerine, ad alanını modül düzeyindeki build.gradle.kts dosyasında manifest dosyasından farklı bir dosya görürsünüz. namespace DSL mülkünü kullanmaya başlayabilirsiniz AGP 7.3 ile başlayın. Daha fazla bilgi edinmek için bkz. Ad alanı ayarlayın.

Ad alanı DSL'sine taşıma işlemi yaparken aşağıdaki sorunlara dikkat edin:

  • AGP'nin önceki sürümleri, test ad alanını ana ad alanından belirler veya bazı durumlarda yanlış şekilde ayarlayabilirsiniz. AGP Yükseltme Asistanı, projenizin ana ad alanının ve test ad alanının aynıdır. Yükseltme engellenmişse testNamespace öğesini manuel olarak değiştirmeniz gerekir ve kaynak kodunuzu buna göre değiştirin.
  • Test ad alanını değiştirdikten sonra kodunuz, Ancak araçlı testleriniz çalışma zamanında başarısız olur. Bu durum, araçlı test kaynak kodu, hem androidTest ve uygulama kaynakları.

Daha fazla bilgi için bkz. sorun #191813691 yorum 19.

Zarar veren değişiklikler: Derleme seçeneği varsayılan değerleri

AGP 8.0 sürümünden itibaren, bu flag'lerin varsayılan değerleri geliştirmenizi sağlar. Kodunuzu AGP Yükseltme Asistanı'nı kullanın. (Araçlar > AGP Yükseltme Asistanı). Yükseltme Asistanı size rehberlik eder yeni davranışı içerecek şekilde kodunuzu güncellemek veya yardımcı olabilir.

İşaretle Yeni varsayılan değer Önceki varsayılan değer Notlar
android.defaults.buildfeatures.buildconfig false true AGP 8.0, varsayılan olarak BuildConfig oluşturmaz. İhtiyacınız olanlar kullanarak bu seçeneği, ihtiyaç duyduğunuz projelerde DSL'yi kullanarak belirtebilirsiniz.
android.defaults.buildfeatures.aidl false true AGP 8.0, AIDL desteğini varsayılan olarak etkinleştirmez. Şunları belirtmeniz gerekiyor: bu seçeneği, ihtiyaç duyduğunuz projelerde DSL kullanarak yapabilirsiniz. Bu bayrak AGP 9.0'da kaldırılması planlanmıştır.
android.defaults.buildfeatures.renderscript false true AGP 8.0, RenderScript desteğini varsayılan olarak etkinleştirmez. Şunları yapmanız gerekir: bu seçeneği, ihtiyacınız olan projelerde DSL'yi kullanarak belirtebilirsiniz. Bu işaretinin AGP 9.0'da kaldırılması planlanmaktadır.
android.nonFinalResIds true false AGP 8.0, aşağıdaki gibi nihai olmayan alanlara sahip R sınıf oluşturur: varsayılandır.
android.nonTransitiveRClass true false AGP 8.0, şurada tanımlanan kaynaklar için R sınıf oluşturur: yalnızca geçerli modül.
android.enableR8.fullMode true false AGP 8.0, varsayılan olarak R8 tam modunu etkinleştirir. Daha fazla bilgi için bkz. R8 tam modu.

Zarar veren değişiklikler: zorunlu kılınan derleme seçeneği değerleri

AGP 8.0 sürümünden itibaren, bu işaretlerin değerlerini artık değiştiremezsiniz. Eğer bunları gradle.properties dosyasında belirtirseniz değer yoksayılır ve AGP baskı uyarılarını açın.

İşaretle Zorunlu kılınan değer Notlar
android.dependencyResolutionAtConfigurationTime.warn true AGP 8.0, tarama sırasında yapılandırma çözünürlüğü tespit ederse uyarı gönderir. Gradle yapılandırmasını olumsuz etkileyeceğinden yapılandırma aşamasında kez.
android.r8.failOnMissingClasses true AGP 8.0, başarısız olan derlemelerde R8 kullanan derlemelerde daha iyi DEX optimizasyonu sağlar. Bu sorunu gidermek için eksik kitaplıklar veya -dontwarn saklama kuralları. Daha ayrıntılı bilgi için bkz. R8 daraltıcıda eksik sınıf uyarıları.
android.testConfig.useRelativePath true Android kaynaklarını, öğelerini ve manifest'lerini birim testleri etkinleştirildiğinde, AGP 8.0 bir Yalnızca göreli içeren test_config.properties dosyası yollar. Bu, Android birim testlerinin her zaman Gradle'ı kullanabilmesini sağlar. derler.
android.useNewJarCreator true AGP, JAR dosyalarını oluştururken Zipflinger kitaplığını kullanarak geliştirmenizi sağlar.
android.bundletool.includeRepositoriesInDependencyReport true AAB'lere ve APK'lara SDK bağımlılık bilgileri ekleme özelliği etkinleştirildiğinde AGP 8.0, bu bilgilere proje depolarının bir listesini de ekler. Alıcı: daha fazla bilgi için Play Console için bağımlılık bilgileri.
android.enableArtProfiles true Temel profiller artık her zaman oluşturuluyor. Ayrıntılar için Temel profiller bölümüne bakın.
android.enableNewResourceShrinker true Varsayılan olarak yeni kaynak shinker uygulamasını kullan. Yeni kaynak daraltıcı, dinamik özellikler için destek içerir.
android.enableSourceSetPathsMap true Göreceli kaynak yolu eşlemelerini hesaplamak için kullanılır. Bu nedenle Gradle, güncel bilgiler sağlar.
android.cacheCompileLibResources true Gradle, derlenen kitaplık kaynakları artık varsayılan olarak önbelleğe alınabilir kaynak dosyalarını proje konumuna göre takip eder. Gereken android.enableSourceSetPathsMap etkinleştirilecek.
android.disableAutomaticComponentCreation true AGP 8.0, varsayılan olarak hiçbir SoftwareBileşeni oluşturmaz. Bunun yerine AGP Yalnızca yayınlanmak üzere yapılandırılmış varyantlar için yazılım bileşenleri yayınlama DSL'sini kullanır.

Yürütme profili için yeni kararlı işaret

AGP'de yeni android.settings.executionProfile işareti bulunmaktadır. Bu işareti şunlar için kullanın: varsayılan yürütme profilini SettingsExtension. Daha fazla bilgi edinmek için ayar eklentisi dokümanlarına bakın.

Deneysel işaretleri önizlemek için şuraya bakın: sürüm notlarını önizleyin.

Kotlin geç özelliği ataması desteklenmiyor

Derleme komut dosyalarınızda Gradle'ın Kotlin DSL'sini kullanıyorsanız Android'in Studio ve AGP 8.0, = operatörü. Bu özellik hakkında daha fazla bilgi için sürüm notları ve belgeleri inceleyin.

Derleme Analiz Aracı görev kategorileri

Android Studio Flamingo'dan başlayarak Build Analiz Aracı'nın iki temel görevi göz önünde bulundurmaktır. Projenizde AGP 8.0 veya sonraki bir sürüm kullanılıyorsa Görevleri tek tek görüntülemek yerine, Build Analyzer'ın bu görevleri seçin. Örneğin, Android Kaynakları, Kotlin veya Dexing'e özel görevler sonra derleme süresine göre sıralanır. Böylece projenizin durumu hangi kategorinin derleme süresi üzerinde en fazla etkiye sahip olduğunu öğrenin. Her bir kategoriyi genişletme görev listesi görüntülenir. Görevleri tek tek görüntülemek için: gruplandırma olmadan ise Gruplandırma ölçütü açılır menüsünü kullanın.

Analiz Aracı görev kategorileri derleyin.

Yeni ayarlar eklentisi

AGP 8.0.0-alpha09, yeni ayarlar eklentisini sunar. Ayarlar eklentisi, tüm modüller için geçerli olan yapılandırmaları içeren genel yapılandırmalarda tek bir yerde saklamanızı öneririz. Böylece, yapılandırmaları birden çok modüllerinde yer alır. Ek olarak, Veriye Dayalı İlişkilendirme Aracı'nı oluşturmak için ayarlar eklentisini yürütme profilleri veya bir aracın çalıştırılmasına ilişkin farklı talimatlar ve arasında geçiş yapabilirsiniz.

Ayarlar eklentisini kullanmak için eklentiyi settings.gradle dosyasına uygulayın:

apply plugin 'com.android.settings'

Genel yapılandırmaları merkezileştirme

Genel yapılandırmaları yapılandırmak için şuradaki yeni android bloğunu kullanın: settings.gradle dosya Aşağıda bununla ilgili bir örnek verilmiştir:

android {
  compileSdk 31
  minSdk 28
  ...
}

Araç yürütme profilleri

Ayarlar eklentisi, bazı araçlar için yürütme profilleri oluşturmanıza da olanak tanır. yürütme profili bir aracın nasıl çalıştırılacağını belirler. farklı içerik seçeneklerini yürütme profillerine göz atın. Yürütme profilinde bir araç için JVM bağımsız değişkenlerini ayarlayabilir ve onu ayrı bir işlemde çalışacak şekilde yapılandırabilirsiniz. Şu an için yalnızca R8 aracı desteklenir.

Yürütme profilleri oluşturun ve settings.gradle dosyası yükleyin:

android {
  execution {
    profiles {
      high {
        r8 {
          jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      low {
        r8 {
          jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      ci {
        r8.runInSeparateProcess false
      }
    }
    defaultProfile "low"
  }
}

Varsayılan profili geçersiz kılmak için android.experimental.settings.executionProfile mülk gradle.properties dosyası:

android.experimental.settings.executionProfile=high

Bu özelliği, komut satırını kullanarak da ayarlayabilirsiniz. Komut satırını kullanarak farklı iş akışları oluşturabilirsiniz. Örneğin, sürekli entegrasyon iş akışınız varsa komut satırını kullanarak, bu işlemi yapmak zorunda kalmadan yürütme settings.gradle dosyasını değiştirin:

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

AGP 8.0'ı çalıştırmak için JDK 17 gerekir

Uygulamanızı geliştirmek için Android Gradle Plugin 8.0 kullanıyorsanız artık JDK 17 gerekir. bir araya geleceksiniz. Android Studio Flamingo, JDK 17'yi paketler ve Gradle'ı varsayılan olarak kullandığından çoğu Android Studio kullanıcısının değişiklik yapmadığını fark ettim.

JDK sürümünü manuel olarak ayarlamanız gerekiyorsa AGP tarafından Android Studio içinde kullanılıyorsa JDK 17 veya sonraki bir sürümü kullanmanız gerekir.

Android Studio'dan bağımsız AGP kullanırken JDK sürümünü JAVA_HOME ayarlanıyor ortam değişkeni veya -Dorg.gradle.java.home komut satırı seçeneği JDK 17'nin yükleme dizinine ekleyebilirsiniz.