Android Gradle Plugin 3.4.0 (Nisan 2019)

Android eklentisinin bu sürümü aşağıdakileri gerektirir:

3.4.3 (Temmuz 2020)

Bu küçük güncelleme, yeni varsayılan ayarlarla uyumluluğu destekler ve şunun özellikleri: paket görünürlüğü kullanıma sunuyoruz.

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 hatalar içerir. hata düzeltmeleri ve performans iyileştirmeleri. Dikkate değer hata düzeltmelerinin listesini görmek için Sürüm Güncellemeleri bloguna bakın.

3.4.1 (Mayıs 2019)

Bu küçük güncelleme, Android Studio 3.4.1'i destekler ve çeşitli hatalar içerir. hata düzeltmeleri ve performans iyileştirmeleri. Dikkate değer hata düzeltmelerinin listesini görmek için Sürüm Güncellemeleri bloguna bakın.

Yeni özellikler

  • Yeni lint kontrolü bağımlılık yapılandırmaları: lintChecks davranışı değişti ve yeni bir bağımlılık lintPublish yapılandırmasını kullanıma sunduk. Android cihazınızda hangi lint kontrollerinin paketleneceği konusunda daha fazla kontrol sahibi olursunuz. kitaplıklar.

    • lintChecks: Bu, şu özelliklere sahip mevcut bir yapılandırmadır: Yalnızca derleme sırasında çalıştırmak istediğiniz lint kontrolleri için yerel olarak da kullanabilirsiniz. Daha önce lint dahil edilecek lintChecks bağımlılık yapılandırması AAR'de bu bağımlıları taşımanız gerekir. yerine yeni lintPublish yapılandırmasını kullanın bakın.
    • lintPublish: Kitaplıktaki bu yeni yapılandırmayı kullan ya da yayınlanan AAR'ye dahil etmek istediğiniz lint kontrollerine ilişkin projeler, aşağıda gösterildiği gibidir. Bu durumda, kitaplığınızı kullanan projeler bu lint kontrollerini de uygulayabilirsiniz.

    Aşağıdaki kod örneği, yerel Android kitaplık projesi.

    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örevlerinin genel bir yapıya sahip olması gerekir. hız artışı. Anahtar kelime listelerinizle ilgili bir performans regresyonu lütfen hata bildiriminde bulunun.

Davranış değişiklikleri

  • Android Hazır Uygulamalar Özelliği eklentisinin kullanımdan kaldırılması uyarı: com.android.feature eklentisi kullanıyorsanız Android Gradle eklentisi 3.4.0 size desteği sonlandırma uyarısı verir. Gelecekteki sürümlerinde hazır uygulamanızı geliştirmeye devam edebilmek için hazır uygulamanızı dinamik özellik eklentisini kullanıyorsanız Böylece hem yüklü hem de hazır uygulamanızı yayınlayabilirsiniz. tek bir Android App Bundle'dan denetlenmesi gerekiyor.

  • R8 varsayılan olarak etkindir: R8, sadeleştirmeyi, tek bir adımda küçültme, kodu karartma, optimize etme ve ayrıştırma inç fark edilebilir derleme performansı hakkında daha fazla bilgi edinin. R8, Android Gradle eklentisi 3.3.0 ve artık hem uygulama hem de Android kitaplık projeleri için varsayılan olarak etkin eklentisi 3.4.0 veya daha yeni bir sürüm kullanarak.

Aşağıdaki resimde, derleme işlemine üst düzey bir genel bakış sunulmaktadır teste tabi tutulmuştur.

ProGuard, R8'den önce dexing ve çıkarma işleminden farklı bir derleme adımıydı.
              bu sorunun cevabını arıyoruz.

Şimdi, R8 ile, budama, sadeleştirme, küçültme, karartma, optimize etme ve dexing (D8) tümü aşağıda gösterildiği gibi tek adımda tamamlanır.

R8 ile, bu sadeleştirme, azaltma, kod karartma, optimize etme ve
      dexing işlemleri tek bir derleme adımında gerçekleştirilir.

R8'in mevcut ProGuard kurallarınızla çalışacak şekilde tasarlandığını unutmayın. R8'den yararlanmak için herhangi bir işlem yapmanız gerekmeyecektir. Ancak, Çünkü bu, özel olarak tasarlanmış ProGuard'dan farklı bir teknolojidir. küçültme ve optimizasyon, kodun kaldırılmasına neden olabilir. ProGuard'da olmayabilir. Dolayısıyla, böyle bir olasılık söz konusu olduğunda bu kodu derleme çıkışınızda tutmak için ek kurallar eklemeniz gerekir.

R8'i kullanırken sorun yaşarsanız R8 uyumluluğu hakkında SSS sorununuzun bir çözümü olup olmadığını kontrol edin. Çözüm belgelenmemişse lütfen hata bildiriminde bulunun. Aşağıdaki satırlardan birini projenize ekleyerek R8'i devre dışı bırakabilirsiniz: gradle.properties dosyası:

      # 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ünde, Uygulamanızda useProguard ile false arasında modülünün build.gradle dosyası yüklediğinizde Android Gradle eklentisi R8'i hem bu derleme türüne göre uygulamanızın kodunu küçültmek için projenizin gradle.properties dosyasında R8'i devre dışı bırakın.

  • ndkCompile desteği sonlandırıldı: Artık bir derlemek için ndkBuild kullanmaya çalışırsanız derleme hatası yerel kitaplıklar var. Bunun yerine aşağıdakileri yapmak için CMake veya ndk-build C ve C++ kodunu inceleyebilirsiniz.

Bilinen sorunlar

  • Benzersiz paket adlarının doğru kullanımı şu anda zorunlu kılınmamaktadır ancak eklentinin sonraki sürümlerinde daha katı olacaktır. Android'de Gradle eklentisi 3.4.0 sürümünü kullanıyorsanız, kabul edilebilir paket isimleri bildirdiği için aşağıdaki satırı gradle.properties dosyanız.

              android.uniquePackageNames = true
              
            

    Android Gradle ile paket adı ayarlama hakkında daha fazla bilgi edinmek için eklentisine göz atın Uygulama kimliğini ayarlayın.