Android Gradle eklentisi 3.4.0 (Nisan 2019)

Android eklentisinin bu sürümü için aşağıdakiler gereklidir:

Minimum sürüm Varsayılan sürüm Notlar
Gradle 5.1.1 5.1.1 Daha fazla bilgi için Gradle'i güncelleme başlıklı makaleyi inceleyin. Gradle 5.0 ve sonraki sürümler kullanılırken varsayılan Gradle daemon bellek yığın boyutu 1 GB'tan 512 MB'a düşürülür. Bu durum, derleme performansında gerilemeyle sonuçlanabilir. Bu varsayılan ayarı geçersiz kılmak için projenizin gradle.properties dosyasında Gradle daemon yığın boyutunu belirtin.
SDK Oluşturma Araçları 28.0.3 28.0.3 SDK Oluşturma Araçları'nı yükleyin veya yapılandırın.

3.4.3 (Temmuz 2020)

Bu küçük güncelleme, Android 11'de paket görünürlüğü ile ilgili yeni varsayılan ayar ve özelliklerle uyumluluğu destekler.

Ayrıntılar için 4.0.1 sürüm notlarına bakın.

3.4.2 (Temmuz 2019)

Bu küçük güncelleme, Android Studio 3.4.2'yi destekler ve çeşitli hata düzeltmeleri ile performans iyileştirmeleri içerir. Dikkat çeken hata düzeltmelerinin listesini görmek için Sürüm Güncellemeleri blogundaki ilgili yayını okuyun.

3.4.1 (Mayıs 2019)

Bu küçük güncelleme, Android Studio 3.4.1'i destekler ve çeşitli hata düzeltmeleri ile performans iyileştirmeleri içerir. Dikkat çeken hata düzeltmelerinin listesini görmek için Sürüm Güncellemeleri blogundaki ilgili yayını okuyun.

Yeni özellikler

  • Yeni lint denetimi bağımlılık yapılandırmaları: lintChecks'nin davranışı değişti ve Android kitaplıklarınızda hangi lint denetimlerinin paketleneceği konusunda size daha fazla kontrol sunmak için lintPublish adlı yeni bir bağımlılık yapılandırması kullanıma sunuldu.

    • lintChecks: Bu, yalnızca projenizi yerel olarak derlediğinizde çalıştırmak istediğiniz lint kontrolleri için kullanmanız gereken mevcut bir yapılandırmadır. Daha önce yayınlanan AAR'a lint kontrollerini dahil etmek için lintChecks bağımlılık yapılandırmasını kullanıyorsanız bu bağımlılıkları aşağıda açıklanan yeni lintPublish yapılandırmasını kullanmak üzere taşımanız gerekir.
    • lintPublish: Aşağıda gösterildiği gibi, yayınlanan AAR'a dahil etmek istediğiniz lint kontrolleri için kitaplık projelerinde bu yeni yapılandırmayı kullanın. Bu, kitaplığınızı kullanan projelerin de bu lint kontrollerini uyguladığı anlamına gelir.

    Aşağıdaki kod örneği, yerel bir Android kitaplık projesinde her iki bağımlılık yapılandırmasını da kullanır.

    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks project(':lint')
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish project(':lintpublish')
    }
            
    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks(project(":lint"))
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish(project(":lintpublish"))
        }
            
    • Genel olarak paketleme ve imzalama görevlerinde genel bir derleme hızı iyileşmesi görülecektir. Bu görevlerle ilgili performansta gerileme fark ederseniz lütfen hata bildirin.

Davranışta yapılan değişiklikler

  • Android Hazır Uygulamalar özellik eklentisinin desteğinin sonlandırılması uyarısı: Hazır uygulamanızı derlemek için hâlâ com.android.feature eklentisini kullanıyorsanız Android Gradle eklentisi 3.4.0 size desteğin sonlandırılması uyarısı verir. Hazır uygulamanızı eklentinin gelecekteki sürümlerinde de derleyebilmeniz için hazır uygulamanızı dinamik özellik eklentisini kullanarak taşıyın. Bu eklenti, hem yüklü hem de hazır uygulama deneyimlerinizi tek bir Android App Bundle'dan yayınlamanıza da olanak tanır.

  • R8 varsayılan olarak etkindir: R8, şeker çıkarma, küçültme, karartma, optimize etme ve dex çıkarma işlemlerini tek bir adımda entegre eder. Bu da derleme performansında belirgin iyileştirmeler sağlar. R8, Android Gradle eklentisi 3.3.0'da kullanıma sunuldu ve artık 3.4.0 ve sonraki sürümlerin kullanıldığı hem uygulama hem de Android kitaplık projeleri için varsayılan olarak etkinleştirildi.

Aşağıdaki resimde, R8'in kullanıma sunulmasından önceki derleme sürecine genel bir bakış sunulmaktadır.

R8'den önce ProGuard, dexing ve desugaring'den farklı bir derleme adımıydı.

Artık R8 ile şeker çıkarma, küçültme, karartma, optimizasyon ve kod çıkarma (D8) işlemlerinin tümü aşağıda gösterildiği gibi tek bir adımda tamamlanıyor.

R8 ile şekerleme kaldırma, küçültme, karartma, optimizasyon ve kod kaldırma işlemlerinin tümü tek bir derleme adımında gerçekleştirilir.

R8'in mevcut ProGuard kurallarınızla çalışacak şekilde tasarlandığını unutmayın. Bu nedenle, R8'den yararlanmak için muhtemelen herhangi bir işlem yapmanız gerekmez. Ancak ProGuard'dan farklı bir teknoloji olduğu ve özellikle Android projeleri için tasarlandığı için sıkıştırma ve optimizasyon, ProGuard'ın kaldırmayacağı kodların kaldırılmasına neden olabilir. Bu nedenle, bu olasılık düşük bir durumda, bu kodu derleme çıkışınızda tutmak için ek kurallar eklemeniz gerekebilir.

R8'i kullanırken sorun yaşarsanız sorununuzun çözümü olup olmadığını kontrol etmek için R8 uyumluluk SSS bölümünü okuyun. Çözüm dokümanda yer almıyorsa lütfen hata bildirin. Aşağıdaki satırlardan birini projenizin gradle.properties dosyasına ekleyerek R8'i devre dışı bırakabilirsiniz:

      # Disables R8 for Android Library modules only.
      android.enableR8.libraries = false
      # Disables R8 for all modules.
      android.enableR8 = false
      
    

Not: Belirli bir derleme türü için uygulama modülünüzün build.gradle dosyasında useProguard değerini false olarak ayarlarsanız Android Gradle eklentisi, projenizin gradle.properties dosyasında R8'i devre dışı bırakıp bırakmadığınızdan bağımsız olarak uygulamanızın kodunu söz konusu derleme türü için küçültmek üzere R8'i kullanır.

  • ndkCompile desteği sonlandırıldı: Artık yerel kitaplıklarınızı derlemek için ndkBuild kullanmaya çalıştığınızda derleme hatası alırsınız. Bunun yerine projenize C ve C++ kodu eklemek için CMake veya ndk-build'i kullanmanız gerekir.

Bilinen sorunlar

  • Benzersiz paket adlarının doğru kullanımı şu anda zorunlu tutulmuyor ancak eklentinin sonraki sürümlerinde daha katı bir şekilde uygulanacak. Android Gradle eklentisinin 3.4.0 sürümünde, projenizin kabul edilebilir paket adları bildirdiğini kontrol etmek için gradle.properties dosyanıza aşağıdaki satırı ekleyerek bu özelliği etkinleştirebilirsiniz.

              android.uniquePackageNames = true
              
            

    Android Gradle eklentisi aracılığıyla paket adı belirleme hakkında daha fazla bilgi edinmek için Uygulama kimliğini ayarlama başlıklı makaleyi inceleyin.