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. |
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çinlintPublish
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çinlintChecks
bağımlılık yapılandırmasını kullanıyorsanız bu bağımlılıkları aşağıda açıklanan yenilintPublish
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.
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'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çinndkBuild
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.