Belirtilen paketleri packageScope ile optimize etme (Deneysel)

R8'i packageScope ile kullanarak belirli paketleri optimize edebilirsiniz. Bu, henüz R8 kullanmayan uygulamalar için isteğe bağlı bir ilk adım olarak tasarlanmıştır ve R8 kullanan uygulamalar için önerilmez.

packageScope kullanıp kullanmayacağınıza karar verin

Uygulamanızda zaten R8 kullanılıyorsa packageScope kullanmayın. Bu, performans ve uygulama boyutu açısından ideal olmayan bir yapılandırmadır. Bunun yerine, uygulamanızın R8 yapılandırmasını geliştirilmiş keep kurallarıyla iyileştirin veya uyumluluk modunu kullanıyorsanız R8'in tam moduna geçin.

Henüz R8 kullanmayan ancak R8'i kullanmaya başlayan uygulamalarda geçişi kademeli olarak yönetmek için packageScope kullanın. R8, uygulama davranışını değiştirebilecek güçlü optimizasyonlar uyguladığından bu optimizasyonları, AndroidX ve Kotlin gibi optimize edilmesi güvenli olan belirli paketlerle sınırlamak, minimum riskle performans artışı elde etmenizi sağlar. Uygulamanız kararlı hale geldikten sonra bu optimizasyonları, kod tabanınızın ve bağımlılıklarınızın geri kalanına kademeli olarak genişletebilir ve her aşamada kararlılık testi yapabilirsiniz.

Ön koşullar

packageScope ile R8'i kullanmak için Android Gradle eklentisi 9.0 veya sonraki bir sürüm gereklidir.

Optimizasyonu yapılandırma

packageScope ile optimizasyonu etkinleştirmek için aşağıdaki adımları tamamlayın.

Optimize edilecek kitaplıkları seçin

Optimize edilecek kitaplıkları belirleyin. AndroidX ve Kotlin kitaplıklarıyla androidx.**, kotlin.** ve kotlinx.** başlamanızı öneririz. Bu kitaplıklar, R8 uyumluluğu için yapılandırılmış kararlı kitaplıklardır.

R8'in packageScope ile kullanılmasını desteklemeyi etkinleştirme

Projenizin gradle.properties dosyasına aşağıdakileri ekleyin:

android.r8.gradual.support=true

Optimizasyon bloğunu ayarlama

Modül düzeyindeki build.gradle.kts (veya build.gradle) dosyanızda, yayın derleme yapılandırmanıza bir optimization bloğu ekleyin. Bu blokta, optimize etmek istediğiniz belirli paketleri listelemek için packageScope kullanın. build.gradle.kts dosyanızda, paket listenizi setOf() içine alın.

Kotlin

android {
  buildTypes {
    release {
      proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro")
      optimization {
        enable = true
        packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**")
      }
    }
  }
}

Groovy

android {
  buildTypes {
    release {
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      optimization {
        enable = true
        packageScope = ["androidx.**", "kotlin.**", "kotlinx.**"]
      }
    }
  }
}

Optimizasyonu test etme

packageScope beyanını uyguladıktan veya güncelledikten sonra, beklenmedik kilitlenmelerin ya da davranış değişikliklerinin oluşmadığını doğrulamak için uygulamanızı kapsamlı bir şekilde test edin.

Belirtilen paketleri optimize etmekten uygulamanızın tamamını optimize etmeye geçiş

Optimizasyon avantajlarını en üst düzeye çıkarmak için uygulamanızın tamamında packageScope yerine R8'e kademeli olarak geçiş yapmayı hedeflemelisiniz. Bu süreç, optimizasyon kapsamınızı artırmayı içerir:

  1. Kararlı kitaplıklarla başlayın. packageScope listesine yalnızca yaygın olarak kullanılan, kararlı ve R8'in optimizasyonlarıyla uyumlu kitaplıkları ekleyerek başlayın. AndroidX ve Kotlin kitaplıkları androidx.**, kotlin.** ve kotlinx.** ile başlayın.
  2. Paketleri kademeli olarak ekleyin. packageScope'ya yavaş yavaş yeni paket önekleri ekleyin:
    1. Bağımlılıkları değerlendirin. Uygulamanızın kitaplıklarını inceleyin. packageScope listesine eklenebilecek iyi adaylar arasında resmi Google kitaplıkları (ör. com.google.**) ve OkHttp gibi diğer güçlü kitaplıklar (ör. okhttp3.** ve okio.**) yer alır. Yoğun yansıtma, serileştirme veya yerel kod çağrıları (JNI) içermeyen kitaplıklara öncelik verin.
    2. Paket boyutuna göre önceliklendirme Uygulama boyutunuza en çok katkıda bulunan öğeleri belirlemek için Android Studio'nun APK Analiz Aracı'nı kullanın. 1. R8 devre dışı bırakılmış bir sürüm AAB'si veya APK'sı oluşturun. 1. Dosyayı analiz aracında açın ve dex dosyalarını inceleyin. 1. Paketleri boyuta göre sıralayın. En büyük paketler, optimizasyon için en yüksek yatırım getirisini (YG) sunar. Bu kitaplıklar aşırı geniş kapsamlı tutma kurallarına sahip olmadığı sürece, bunları ilk olarak hedeflemek, işlemin başlarında en önemli boyut küçültmesini sağlar. Daha fazla bilgi için Kitaplıkları akıllıca seçme başlıklı makaleyi inceleyin.
  3. Davranış değişikliklerini doğrulayın. Her yeni paket önekini ekledikten sonra, gerilemeleri veya beklenmedik davranışları tespit edip çözmek için kapsamlı testler yapın.
  4. Uygulama paketlerini en son ekleyin. Uygulama paketlerinizde çok fazla yansıtma kullanılmıyorsa uygulama paketlerini packageScope'ya ekleyin ve gerektiğinde kademeli olarak koruma kuralları ekleyin. Uygulama paketlerinizde çok fazla yansıtma kullanılıyorsa paketleri packageScope'ya ekleyin ve gerekli paketler için paket genelinde koruma kuralları ekleyin. Saklama kurallarını iyileştirmek için bunları yineleyin.
  5. Uygulamanızın tamamında R8'i kullanmaya geçin. Uygulamanızın bağımlılıklarının büyük bir kısmı packageScope beyanına dahil edildikten ve uygulamanız kararlı hale geldikten sonra, uygulamanızın tamamını tam modda optimize etmek için packageScope beyanını kaldırın.