Android Gradle Plugin 8.0.0 (Nisan 2023)

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

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 konusuna bakın.
SDK Oluşturma Araçları 30.0.3 30.0.3 SDK Derleme Araçlarını yükleyin veya yapılandırın.
400 Yok 25.1.8937393 Farklı bir NDK sürümü 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 Plugin 8.0 için yama sürümlerinin bir listesi bulunmaktadır.

Android Gradle Eklentisi 8.0.2 (Mayıs 2023)

AGP 8.0.2'de düzeltilen hataların listesi için Android Studio 2022.2.1'de kapatılan sorunlar sayfasına bakın.

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
AGP 7.2.2 -> 7.4.0 sürümüne geçtikten sonra Hata: "Tabloda belirtilen kimliğe sahip Sürüm Gereksinimi Yok"
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üzeyindeki derleme komut dosyasında ad alanı gerekli

Ad alanını, manifest dosyası yerine modül düzeyindeki build.gradle.kts dosyasında ayarlamanız gerekir. AGP 7.3'ten itibaren namespace DSL özelliğini kullanmaya başlayabilirsiniz. Daha fazla bilgi edinmek için Ad alanı belirleme bölümünü inceleyin.

DSL ad alanına geçiş yaparken aşağıdaki sorunlara dikkat edin:

  • AGP'nin önceki sürümleri, ana ad alanından veya uygulama kimliğinden bazı durumlarda yanlış bir şekilde test ad alanını tahmin eder. AGP Yükseltme Asistanı, projenizin ana ad alanı ile test ad alanının aynı olduğunu tespit ederse yükseltme işlemini engeller. Yükseltme engellendiyse manuel olarak testNamespace değiştirmeniz ve kaynak kodunuzu buna göre değiştirmeniz gerekir.
  • Test ad alanını değiştirdikten sonra kodunuz derlenebilir ancak araç kullanılan testleriniz çalışma zamanında başarısız olabilir. Araçlı test kaynak kodunuz hem androidTest hem de uygulama kaynaklarınızda tanımlı bir kaynağa referans veriyorsa bu durum meydana gelebilir.

Daha fazla bilgi için 191813691 numaralı yoruma bakın.

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

AGP 8.0'dan itibaren, derleme performansını iyileştirmek için bu işaretlerin varsayılan değerleri değiştirildi. Bu değişikliklerden bazılarını destekleyecek şekilde kodunuzu ayarlama konusunda yardım almak için AGP Yükseltme Asistanı'nı (Araçlar > AGP Yükseltme Asistanı) kullanın. Yükseltme Asistanı, yeni davranışa uyum sağlamak için kodunuzu güncelleme veya önceki davranışı korumak için işaretleri ayarlama konusunda size yol gösterir.

İş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 olan projelerde DSL'yi kullanarak bu seçeneği belirtmeniz gerekir.
android.defaults.buildfeatures.aidl false true AGP 8.0, AIDL desteğini varsayılan olarak etkinleştirmez. İhtiyacınız olan projelerde DSL'yi kullanarak bu seçeneği belirtmeniz gerekir. AGP 9.0'da bu işaretin kaldırılması planlanmaktadır.
android.defaults.buildfeatures.renderscript false true AGP 8.0, RenderScript desteğini varsayılan olarak etkinleştirmez. İhtiyacınız olan projelerde DSL'yi kullanarak bu seçeneği belirtmeniz gerekir. AGP 9.0'da bu işaretin kaldırılması planlanmaktadır.
android.nonFinalResIds true false AGP 8.0, varsayılan olarak nihai olmayan alanlara sahip R sınıfları oluşturur.
android.nonTransitiveRClass true false AGP 8.0 yalnızca mevcut modülde tanımlanan kaynaklar için R sınıfları oluşturur.
android.enableR8.fullMode true false AGP 8.0 varsayılan olarak R8 tam modunu etkinleştirir. Daha fazla bilgi için R8 tam mod bölümüne göz atın.

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

AGP 8.0'dan başlayarak, bu işaretlerin değerlerini değiştiremezsiniz. Bunları gradle.properties dosyasında belirtirseniz değer yoksayılır ve AGP uyarı yazdırır.

İşaretle Zorunlu kılınan değer Notlar
android.dependencyResolutionAtConfigurationTime.warn true AGP 8.0, Gradle yapılandırma sürelerini olumsuz etkilediği için yapılandırma aşamasında yapılandırma çözünürlüğü tespit ederse uyarı verir.
android.r8.failOnMissingClasses true AGP 8.0, daha iyi DEX optimizasyonu sağlamak için eksik sınıflar varsa R8 kullanan derlemelerde başarısız olur. Bu sorunu gidermek için eksik kitaplıkları veya -dontwarn Keep kurallarını eklemeniz gerekir. Daha fazla bilgi için R8 küçültücüde eksik sınıf uyarıları bölümüne bakın.
android.testConfig.useRelativePath true Birim testlerinde Android kaynakları, öğeleri ve manifestleri kullanma desteği etkinleştirildiğinde AGP 8.0 yalnızca göreli yollar içeren bir test_config.properties dosyası oluşturur. Bu, Android birim testlerinin her zaman Gradle derleme önbelleğini kullanabilmesini sağlar.
android.useNewJarCreator true AGP, derleme performansını iyileştirmek için JAR dosyaları oluştururken Zipflinger kitaplığını kullanır.
android.bundletool.includeRepositoriesInDependencyReport true AAB'lerde ve APK'larda SDK bağımlılık bilgileri ekleme etkinken AGP 8.0, bu bilgilere proje depolarının listesini de ekler. Daha fazla bilgiyi Play Console için bağımlılık bilgileri bölümünde bulabilirsiniz.
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 değiştirici uygulamasını kullanın. Yeni kaynak küçültücü, dinamik özellikleri destekler.
android.enableSourceSetPathsMap true Göreli kaynak yolu eşlemelerini hesaplamak için kullanılır. Böylece Gradle derlemeleri daha sık günceldir.
android.cacheCompileLibResources true Gradle, kaynak dosyalarını proje konumuna göre izlediği için derlenen kitaplık kaynakları artık varsayılan olarak önbelleğe alınabilir. android.enableSourceSetPathsMap özelliğinin etkinleştirilmesini gerektirir.
android.disableAutomaticComponentCreation true AGP 8.0 varsayılan olarak hiçbir SoftwareComponent oluşturmaz. Bunun yerine AGP, yalnızca yayınlama DSL'si kullanılarak yayınlanacak şekilde yapılandırılan varyantlar için SoftwareComponents oluşturur.

Yürütme profili için yeni sabit işaret

AGP, android.settings.executionProfile adlı yeni işareti içerir. SettingsExtension öğesindeki varsayılan yürütme profilini geçersiz kılmak için bu işareti kullanın. Daha fazla bilgi edinmek için ayarlar eklentisi dokümanlarına bakın.

Deneysel işaretleri önizlemek için önizleme sürüm notlarına bakın.

Kotlin geç özellik ataması desteklenmiyor

Derleme komut dosyalarınız için Gradle'ın Kotlin DSL'sini kullanıyorsanız Android Studio ve AGP 8.0'ın, = operatörünü kullanan deneysel özellik atamasını desteklemediğini unutmayın. Bu özellik hakkında daha fazla bilgi için sürüm notlarına ve belgelere göz atın.

Analiz Aracı görev kategorileri oluşturma

Derleme Analiz Aracı, Android Studio Flamingo'dan başlayarak derleme süresini etkileyen görevler için yeni bir varsayılan görünüme sahiptir. Projenizde AGP 8.0 veya daha yeni bir sürüm kullanılıyorsa, Build Analiz Aracı görevleri ayrı ayrı görüntülemek yerine kategoriye göre gruplandırır. Örneğin, Android Kaynakları, Kotlin veya Dexing'e özgü görevler birlikte gruplandırılır ve derleme süresine göre sıralanır. Bu, derleme süresi üzerinde en fazla etkiye sahip olan kategorinin bulunmasını kolaylaştırır. Her bir kategoriyi genişlettiğinizde ilgili görevlerin bir listesi görüntülenir. Görevleri gruplandırmadan tek tek görüntülemek için Gruplandırma ölçütü açılır listesini kullanın.

Analiz Aracı görev kategorileri oluşturun.

Yeni ayarlar eklentisi

AGP 8.0.0-alpha09 yeni ayarlar eklentisini kullanıma sunuyor. Ayarlar eklentisi, genel yapılandırmaları (tüm modüller için geçerli olan yapılandırmalar) tek bir yerde toplamanıza olanak tanır. Böylece yapılandırmaları birden fazla modüle kopyalayıp yapıştırmanıza gerek kalmaz. Ek olarak, ayarlar eklentisini kullanarak araç yürütme profilleri veya bir aracın nasıl çalıştırılacağına ilişkin farklı talimatlar oluşturabilir ve bunlar 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ştirin

Genel yapılandırmaları yapılandırmak için settings.gradle dosyasındaki yeni android bloğunu kullanın. 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ışacağını belirler. Ortama bağlı olarak farklı yürütme profilleri seçebilirsiniz. Yürütme profilinde, bir araç için JVM bağımsız değişkenleri ayarlayabilir ve ayrı bir işlemde çalışacak şekilde yapılandırabilirsiniz. Şu anda yalnızca R8 aracı desteklenmektedir.

Aşağıdaki örnekte gösterildiği gibi settings.gradle dosyasında yürütme profilleri oluşturun ve varsayılan yürütme profilini ayarlayın:

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 gradle.properties dosyasındaki android.experimental.settings.executionProfile özelliğini kullanarak farklı bir profil seçin:

android.experimental.settings.executionProfile=high

Bu özelliği, farklı iş akışları ayarlamanızı sağlayan komut satırını kullanarak da ayarlayabilirsiniz. Örneğin, sürekli entegrasyon iş akışınız varsa settings.gradle dosyasını değiştirmek zorunda kalmadan yürütme profilini değiştirmek için komut satırını kullanabilirsiniz:

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

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

Uygulamanızı derlemek için Android Gradle Plugin 8.0 kullanırken, Gradle'ı çalıştırmak için artık JDK 17 gerekiyor. Android Studio Flamingo, JDK 17'yi paketler ve Gradle'ı varsayılan olarak kullanacak şekilde yapılandırır. Böylece çoğu Android Studio kullanıcısının projelerinde herhangi bir yapılandırma değişikliği yapması gerekmez.

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

Android Studio'dan bağımsız AGP kullanırken JAVA_HOME ortam değişkenini veya -Dorg.gradle.java.home komut satırı seçeneğini ayarlayarak JDK sürümünü JDK 17 yükleme dizininize yükseltin.