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 edinmek için Gradle'ı 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üşer. Bu durum, derleme performansında gerilemeye neden olabilir. Bu varsayılan ayarı geçersiz kılmak için projenizin gradle.properties dosyasında Gradle daemon yığın boyutunu belirtin.
SDK Build Tools 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'deki paket görünürlüğü için yeni varsayılan ayarlar 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. Önemli 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. Önemli hata düzeltmelerinin listesini görmek için Sürüm Güncellemeleri blogundaki ilgili yayını okuyun.

Yeni özellikler

  • Yeni lint kontrolü bağımlılığı yapılandırmaları: lintChecks davranışında değişiklik yapıldı ve Android kitaplıklarınızda hangi lint kontrollerinin paketleneceği konusunda daha fazla kontrol sahibi olmanızı sağlamak için lintPublish adlı yeni bir bağımlılık yapılandırması kullanıma sunuldu.

    • lintChecks: Bu, yalnızca projenizi yerel olarak oluştururken çalıştırmak istediğiniz lint kontrolleri için kullanmanız gereken mevcut bir yapılandırmadır. Yayınlanan AAR'ye lint kontrollerini dahil etmek için daha önce lintChecks bağımlılık yapılandırmasını kullanıyorsanız bu bağımlılıkları taşıyarak bunun yerine aşağıda açıklanan yeni lintPublish yapılandırmasını kullanmanız gerekir.
    • lintPublish: Yayınlanan AAR'ye dahil etmek istediğiniz lint kontrolleri için kitaplık projelerinde bu yeni yapılandırmayı aşağıdaki şekilde kullanın. Bu nedenle, kütüphanenizi kullanan projeler de bu lint kontrollerini uygular.

    Aşağıdaki kod örneğinde, yerel bir Android kitaplığı projesinde her iki bağımlılık yapılandırması da kullanılmaktadı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ülmelidir. Bu görevlerle ilgili performans düşüşü fark ederseniz lütfen hatayı bildirin.

Davranış değişiklikleri

  • Android Instant Apps Feature eklentisinin desteği sonlandırıldı uyarısı: Hazır uygulamanızı oluşturmak için hâlâ com.android.feature eklentisini kullanıyorsanız Android Gradle eklentisi 3.4.0 size kullanımdan kaldırma uyarısı verecektir. Eklentinin gelecekteki sürümlerinde hazır uygulamanızı oluşturmaya devam edebilmek için hazır uygulamanızı dinamik özellik eklentisini kullanacak şekilde taşıyın. Bu eklenti, hem yüklü uygulama 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, desugaring, küçültme, karartma, optimizasyon ve dexing işlemlerini tek bir adımda entegre ederek gözle görülür derleme performansı iyileştirmeleri sağlar. R8, Android Gradle eklentisi 3.3.0'da kullanıma sunuldu ve artık 3.4.0 ve sonraki sürümleri kullanan hem uygulama hem de Android kitaplık projelerinde varsayılan olarak etkin.

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ı.

R8 ile birlikte, aşağıda gösterildiği gibi, desugaring, küçültme, karartma, optimizasyon ve dexing (D8) tek bir adımda tamamlanır.

R8 ile desugaring, küçültme, karartma, optimizasyon ve dexleme 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 herhangi bir işlem yapmanız gerekmeyebilir. Ancak, ProGuard'dan farklı bir teknoloji olduğu ve özellikle Android projeleri için tasarlandığı için küçültme ve optimizasyon, ProGuard'ın kaldırmadığı kodların kaldırılmasına neden olabilir. Bu nedenle, bu olası olmayan durumda, söz konusu kodu derleme çıktınızda tutmak için ek kurallar eklemeniz gerekebilir.

R8'i kullanırken sorun yaşıyorsanız sorununuzun çözümü olup olmadığını kontrol etmek için R8 uyumluluğuyla ilgili SSS sayfasını inceleyin. Çözüm belgelenmemişse 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ıza bakılmaksızın bu derleme türü için uygulamanızın kodunu 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ıyorsunuz. 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 tutulmamaktadır ancak eklentinin sonraki sürümlerinde daha katı bir şekilde uygulanacaktır. Android'de Gradle eklentisi 3.4.0 sürümünde, aşağıdaki satırı gradle.properties dosyanıza ekleyerek projenizin kabul edilebilir paket adları bildirip bildirmediğini kontrol etmeyi etkinleştirebilirsiniz.

              android.uniquePackageNames = true
              
            

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