Android Gradle Plugin 3.3.0 (Ocak 2019)

Android eklentisinin bu sürümü için gerekenler:

3.3.3 (Temmuz 2020)

Bu küçük güncelleme, Android 11'de paket görünürlüğü ile ilgili 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.3.2 (Mart 2019)

Android Studio 3.3.2'yi destekleyen bu küçük güncelleme, çeşitli hata düzeltmeleri ve performans iyileştirmeleri içerir. Dikkate değer hata düzeltmelerinin listesini görmek için Sürüm Güncellemeleri blogundaki ilgili yayını okuyun.

3.3.1 (Şubat 2019)

Android Studio 3.3.1'i destekleyen bu küçük güncelleme, çeşitli hata düzeltmeleri ve performans iyileştirmeleri içerir.

Yeni özellikler

  • İyileştirilmiş sınıf yolu senkronizasyonu: Android Gradle eklentisi, çalışma zamanınızdaki bağımlılıkları çözümlerken ve zaman sınıf yollarını derlerken birden çok sınıf yolunda görünen bağımlılıklar için belirli aşağı akış sürümü çakışmalarını düzeltmeye çalışır.

    Örneğin, çalışma zamanı sınıf yolu, Kitaplığı A sürüm 2.0'ı, derleme sınıf yolu ise Kitaplığı A sürüm 1.0'ı içeriyorsa eklenti, hataları önlemek için derleme sınıf yoluna olan bağımlılığı otomatik olarak Kitaplık A sürüm 2.0 olarak günceller.

    Ancak, çalışma zamanı sınıf yolu, Kitaplığı A sürüm 1.0'ı içeriyorsa ve derleme işlemi, Kitaplığı A sürüm 2.0'ı içeriyorsa eklenti, derleme sınıf yolunun bağımlılığını Kitaplık A sürüm 1.0'a düşürmez. Bu durumda bir hata alırsınız. Daha fazla bilgi edinmek için Sınıf yolları arasındaki çakışmaları düzeltme bölümüne bakın.

  • Ek açıklama işlemcileri kullanılırken iyileştirilmiş artımlı Java derlemesi: Bu güncelleme, ek açıklama işlemcileri kullanılırken artımlı Java derlemesi için sağlanan desteği iyileştirerek derleme süresini kısaltır.

    Not: Bu özellik, Gradle sorunu 8194 nedeniyle Gradle 5.1 dışında Gradle 4.10.1 ve sonraki sürümlerle uyumludur.

    • Kapt kullanan projeler (yalnızca Kotlin projelerinin çoğu ve Kotlin-Java karma projeleri): Veri bağlama veya retro-lambda eklentisi kullandığınızda bile artımlı Java derlemesi etkinleştirilir. Kapt görevi tarafından ek açıklama işleme henüz tamamlanmadı.

    • Kapt kullanmayan projeler için (yalnızca Java projeleri): Kullandığınız ek açıklama işlemcilerinin tümü artımlı ek açıklama işlemeyi destekliyorsa artımlı Java derlemesi varsayılan olarak etkinleştirilir. Artımlı ek açıklama işlemcisi kullanımını izlemek için Gradle sorunu 5277'yi izleyin.

      Bununla birlikte, bir veya daha fazla ek açıklama işlemcisi artımlı derlemeleri desteklemiyorsa artımlı Java derlemesi etkinleştirilmez. Bunun yerine, aşağıdaki işareti gradle.properties dosyanıza ekleyebilirsiniz:

      android.enableSeparateAnnotationProcessing=true
                  

      Bu işareti eklediğinizde Android Gradle eklentisi, ek açıklama işlemcilerini ayrı bir görevde yürütür ve Java derleme görevinin kademeli olarak çalıştırılmasını sağlar.

  • Eski API'yi kullanırken daha iyi hata ayıklama bilgileri: Eklenti, artık desteklenmeyen bir API kullandığınızı algıladığında artık API'nin nerede kullanıldığını belirlemenize yardımcı olmak için daha ayrıntılı bilgiler sağlayabilir. Ek bilgileri görmek için projenizin gradle.properties dosyasına aşağıdakileri eklemeniz gerekir:

              android.debug.obsoleteApi=true
            

    İşareti, komut satırından -Pandroid.debug.obsoleteApi=true öğesini ileterek de etkinleştirebilirsiniz.

  • Komut satırından özellik modülleri üzerinde araç testleri çalıştırabilirsiniz.

Davranış değişiklikleri

  • Geç görev yapılandırması: Eklenti, mevcut derlemeyi (veya yürütme görevi grafiğinde yer almayan görevleri) tamamlamak için gerekli olmayan görevlerin başlatılmasını ve yapılandırılmasını önlemek amacıyla artık Gradle'ın yeni görev oluşturma API'sini kullanıyor. Örneğin, "yayınlama" ve "hata ayıklama" derleme varyantları gibi birden fazla derleme varyantınız varsa ve uygulamanızın "hata ayıklama" sürümünü oluşturuyorsanız eklenti, uygulamanızın "yayınlama" sürümü için görevleri başlatmak ve yapılandırmaktan kaçınır.

    Variants API'de variant.getJavaCompile() gibi bazı eski yöntemleri çağırmak görev yapılandırmasını zorunlu kılmaya devam edebilir. Derlemenizin geç görev yapılandırması için optimize edildiğinden emin olmak amacıyla variant.getJavaCompileProvider() gibi TaskProvider nesnesi döndüren yeni yöntemler çağırın.

    Özel derleme görevleri yürütüyorsanız Gradle'ın yeni görev oluşturma API'sine nasıl uyarlayacağınızı öğrenin.

  • Belirli bir derleme türü için useProguard false ayarlanırken eklenti artık uygulamanızın kodunu ve kaynaklarını küçültmek ve gizlemek için ProGuard yerine R8 kullanıyor. R8 hakkında daha fazla bilgi edinmek için Android Geliştirici Blogu'ndaki bu blog yayınını okuyun.

  • Kitaplık projeleri için daha hızlı R sınıfı oluşturma: Önceden Android Gradle eklentisi, projenizin bağımlılıklarının her biri için bir R.java dosyası oluşturuyor ve ardından bu R sınıflarını uygulamanızın diğer sınıflarıyla birlikte derliyordu. Eklenti artık, önce ara R.java sınıfları oluşturmadan, uygulamanızın derlenmiş R sınıfını doğrudan içeren bir JAR oluşturur. Bu optimizasyon, birçok kitaplık alt projesi ve bağımlılığı içeren projeler için derleme performansını önemli ölçüde iyileştirebilir ve Android Studio'da dizine ekleme hızını artırabilir.

  • Android App Bundle oluştururken, Android 6.0 (API düzeyi 23) veya sonraki sürümleri hedefleyen bu uygulama paketinden oluşturulan APK'lar artık varsayılan olarak yerel kitaplıklarınızın sıkıştırılmamış sürümlerini içeriyor. Bu optimizasyon, cihazın kitaplığın bir kopyasını oluşturma ihtiyacını ortadan kaldırır ve böylece uygulamanızın diskteki boyutunu küçültür. Bu optimizasyonu devre dışı bırakmak isterseniz aşağıdaki kodu gradle.properties dosyanıza ekleyin:

    android.bundle.enableUncompressedNativeLibs = false
            
  • Eklenti, bazı üçüncü taraf eklentilerinin minimum sürümlerini zorunlu kılar.

  • Tek varyantlı proje senkronizasyonu: Android Studio'nun projenizin nasıl yapılandırıldığını anlamasını sağlamak için derleme yapılandırmanızla projenizi senkronize etmeniz önemli bir adımdır. Ancak bu süreç büyük projelerde çok zaman alabilir. Projenizde birden fazla derleme varyantı kullanılıyorsa proje senkronizasyonlarını artık yalnızca seçtiğiniz varyantla sınırlandırarak optimize edebilirsiniz.

    Bu optimizasyonu etkinleştirmek için Android Gradle Plugin 3.3.0 veya sonraki sürümleriyle birlikte Android Studio 3.3 veya sonraki bir sürümünü kullanmanız gerekir. Bu gereksinimleri karşıladığınızda IDE, projenizi senkronize ederken bu optimizasyonu etkinleştirmenizi ister. Optimizasyon yeni projelerde de varsayılan olarak etkindir.

    Bu optimizasyonu manuel olarak etkinleştirmek için Dosya > Ayarlar > Deneysel > Gradle'ı (Mac'te Android Studio > Tercihler > Deneysel > Gradle) tıklayın ve Yalnızca etkin varyantı senkronize et onay kutusunu seçin.

    Not: Bu optimizasyon, Java ve C++ dillerini içeren projeleri tam olarak destekler. Ayrıca, Kotlin için de bir miktar destek sunar. Kotlin içeriği olan projeler için optimizasyonu etkinleştirdiğinizde Gradle senkronizasyonu, dahili olarak tam varyantları kullanmaya başlar.

  • Eksik SDK paketlerinin otomatik olarak indirilmesi: Bu işlev, NDK'yı destekleyecek şekilde genişletilmiştir. Daha fazla bilgi edinmek için Gradle ile eksik paketleri otomatik olarak indirme bölümünü okuyun.

Hata Düzeltmeleri

  • Android Gradle eklentisi 3.3.0, aşağıdaki sorunları düzeltir:

    • Jetifier etkin olmasına rağmen AndroidX sürümü yerine android.support.v8.renderscript.RenderScript çağıran derleme işlemi
    • Statik olarak gruplandırılmış annotation.AnyRes dahil olmak üzere androidx-rs.jar nedeniyle oluşan çakışmalar
    • RenderScript kullanırken artık build.gradle dosyalarınızda Derleme Araçları sürümünü manuel olarak ayarlamanız gerekmez