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üme dahil edilen 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 bytecode dönüşümü yapamıyor
  • Gradle senkronizasyonu "com.android.build.api.extension.AndroidComponentsExtension sınıfı yüklenemedi" hatasıyla 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'si: Oluşturulan javadoc jar imzalanmıyor
  • ClassesDataSourceCache, 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 Patch 2 blog yayınını inceleyin.

7.1.1 (Şubat 2022)

Bu küçük güncelleme, Android Studio Bumblebee 1. Yama sürümüne karşılık gelir.

Bu sürüme dahil edilen 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 için Gradle'i güncelleme başlıklı makaleyi inceleyin.
SDK Oluşturma Araçları 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 başlıklı makaleyi inceleyin.

Lint analizi görevi artık önbelleğe alınabilir

AndroidLintAnalysisTask artık Gradle derleme önbelleği ile uyumludur. gradle.properties dosyanızda org.gradle.caching=true ayarını yaparak derleme önbelleğini etkinleştirirseniz lint analiz görevi, mümkün olduğunda çıktısını derleme önbelleğinden alır.

Android Gradle eklentisiyle lint çalıştırırken genellikle en büyük darboğaz lint analiz görevidir. Bu nedenle, derleme önbelleğini etkinleştirmek, birçok durumda lint çalıştırı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 belirgin bir performans artışı 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. Prefab protokolü, Gradle modülleri arasında başlıkları ve kitaplıkları iletmek için kullanılır.

Şartlar

  • Tüketen modül ndk-build değil, CMake olmalıdır. ndk-build desteği için gelecekte bir NDK güncellemesi gerekecek. Yayınlama modülü CMake veya ndk-build olabilir.

  • Tüketen modülü, build.gradle dosyasında prefab değerini etkinleştirmelidir.

android {
  buildFeatures {
    prefab true
  }
}
  • Yayınlama modülü, build.gradle dosyasında prefabPublishing değerini etkinleştirmelidir.
android {
  buildFeatures {
    prefabPublishing true
  }
}
  • Tüketen modülü, build.gradle dosyasına dependencies bloğu ekleyerek yayınlama modülüne referans vermelidir. Örnek:
dependencies {
  implementation project(':mylibrary')
}
  • Yayınlama modülü, prefab bölümü kullanarak bir paketi göstermelidir. Örnek:
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çin find_package() kullanabilir. Örnek:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
  myapplication
  mylibrary::mylibrary)
   android {
      defaultConfig {
        externalNativeBuild {
          cmake {
            arguments '-DANDROID_STL=c++_shared'
          }
        }
      }
    }

Yerel AAR tüketicilerinin ve üreticilerinin AGP ile nasıl yapılandırılacağı hakkında daha fazla bilgi için AGP ile yerel bağımlılıklar başlıklı makaleyi inceleyin.

settings.gradle dosyasındaki depo ayarları

Android Studio Bumblebee'de yeni bir proje oluşturulduğunda üst düzey build.gradle dosyasında plugins bloğu bulunur. Bu bloğun ardından derleme dizininizi temizleyen kod yer alır:

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 veya Gradle'in kendisi için geçerli olan depolar ve bağımlılıklar için geçerli derleme yapılandırmalarını 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.

İyileştirilmiş kaynak küçültücü

Android Studio Bumblebee, uygulamanızın boyutunu küçültmenize yardımcı olan gelişmiş bir kaynak küçültücü içerir.

Dinamik özelliklere sahip uygulamalar için destek

Android kaynak sıkıştırıcının varsayılan uygulaması, Android Gradle Eklentisi 7.1.0-alpha09 sürümünde güncellendi. Yeni uygulama, dinamik özelliklere sahip uygulamaların küçültülmesini destekler.

Deneysel olarak daha fazla uygulama boyutu azaltma

Yeni kaynak sıkıştırıcı uygulaması, kullanılmayan değer kaynaklarını ve kullanılmayan dosya kaynaklarına yapılan referansları kaldıracak şekilde kaynak tablosunu değiştirerek sıkıştırılmış uygulamanızın boyutunu daha da küçültebilir. Yeni kaynak küçültücü, kullanılmayan dosya kaynaklarını tamamen silerek uygulamanızın boyutunu daha da küçültebilir. Bu davranış henüz varsayılan olarak etkinleştirilmemiştir ancak denemek için projenizin gradle.properties dosyasına deneysel android.experimental.enableNewResourceShrinker.preciseShrinking=true seçeneğini ekleyerek etkinleştirebilirsiniz.

Lütfen yeni kaynak sıkıştırıcıda veya deneysel işarette karşılaştığınız sorunları bildirin. Sorunları teşhis etmek için veya geçici bir çözüm olarak, projenizin gradle.properties bölümüne android.enableNewResourceShrinker=false ekleyerek önceki uygulamaya geri dönebilirsiniz. Yeni sıkıştırıcı, kullanılmayan dosya tabanlı kaynakları önceki kaynak sıkıştırıcıdan biraz farklı olan minimum dosyalarla değiştirir ancak bunun çalışma zamanında herhangi bir etkisinin olması beklenmez.

Eski uygulamanın Android Gradle eklentisi 8.0.0 sürümünde kaldırılması planlanmıştır.

Derleme varyantı yayınlama

Android Gradle eklentisi 7.1.0 ve sonraki sürümler, hangi derleme varyantlarının Apache Maven deposuna yayınlanacağını yapılandırmanıza olanak tanır. AGP, yeni yayınlama DSL'sine göre tek veya birden fazla derleme varyantına sahip bir bileşen oluşturur. Bu bileşeni, bir yayını Maven deposunda özelleştirmek için kullanabilirsiniz. Önceki sürümlere kıyasla bu yöntem, varsayılan olarak hiçbir bileşen oluşturulmayacağından gereksiz çalışmalardan da kaçınır. 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'lara ek olarak 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ı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 dosyasını yayınlama

AGP 7.1.0 ve sonraki sürümler, kitaplık projeleri için AAR'lara ek olarak Java ve Kotlin kaynak JAR dosyalarını 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ı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 uyuyor. Örneğin, bir sorunu finalizeDsl() bölümünde kritik olarak ayarlamak artık ana DSL'de devre dışı bırakılmasını geçersiz kılar. Daha fazla bilgi için lint{} blok referans dokümanlarını ve Android derleme akışı ile uzantı noktalarını inceleyin.

Gezinme Güvenli Arg'leri 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 esnada geçici bir çözüm olarak AGP 7.1'i Navigation Safe Args'in anlık görüntü derlemesiyle (Navigation 2.5.0-SNAPSHOT) kullanabilirsiniz. Anlık görüntü derlemesini kullanmak için 8054565 numaralı derleme kimliğiyle anlık görüntü talimatlarını uygulayın.

Ayrıca, Navigation Safe Args 2.4.1 ve 2.5.0 sürümleri artık AGP 4.2 ile çalışmayacaktır. Safe Args'in bu sürümlerini kullanmak için AGP 7.0 ve sonraki sürümleri kullanmanız gerekir.

Otomatik bileşen oluşturmayı devre dışı bırakma

AGP 8.0'dan itibaren otomatik bileşen oluşturma varsayılan olarak devre dışı bırakılacak. Şu anda AGP 7.1, her derleme varyantı için derleme varyantıyla aynı ada sahip bir bileşen ve tüm derleme varyantlarını içeren bir all bileşeni otomatik olarak oluşturur. Bu otomatik bileşen oluşturma işlemi devre dışı bırakılır. Yeni davranışa geçmek için android.disableAutomaticComponentCreation true. olarak ayarlayarak otomatik bileşen oluşturmayı manuel olarak devre dışı bırakmanız gerekir. Daha fazla bilgi için Maven Yayınlama 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 bulunan bilinen sorunlar açıklanmaktadır.

Hilt eklentisini kullanan bir uygulama projesinin birim testiyle ilgili sorunlar

Birim testi sınıf yolu, enstrümante edilmemiş uygulama sınıflarını içerir. Bu, Hilt'in birim testleri çalıştırırken uygulama sınıflarını bağımlılık eklemeyi işlemesi için enstrümante etmediği anlamına gelir.

Bu sorun 7.1.1 sürümünde düzeltilecektir. 213534628 numaralı soruna bakın.