DEX kodu optimizasyonu, uygulamanızın derleme kalitesini, boyutunu ve performansını izleyip iyileştirmenize yardımcı olan bir Android vitals bulgusudur. R8 veya alternatif araçları (ör. ProGuard uyumlu optimize ediciler ya da ikincil DEX son işlemcileri) kullanarak kodunuzu optimize etmek ve kodunuzun karartılmasını sağlamak, uygulamanızın DEX boyutunu küçültür, çalışma zamanı performansını artırır ve bellekte kapladığı yeri en aza indirir.
DEX veya Dalvik Executable dosyaları, uygulamanızı çalıştırmak için kullanılan derlenmiş kodu içerir. Bu kod, genellikle derlenmiş C++ kodu veya .so dosyalarının aksine Java ve Kotlin kodunu içerir.
Android vitals, tüm uygulama ve oyunlar için DEX kodu optimizasyonu metriklerini raporlar ancak yalnızca belirli boyut şartlarını karşılayan uygulama ve oyunlar için eşikleri zorunlu kılar.
Sorunu tespit etme
Uygulamanızın DEX kodu optimizasyonu, küçültme veya kod karartma seviyeleri minimum tanımlanmış yüzdeleri karşılamadığında Android vitals, Play Console'da sizi uyarabilir.
Optimizasyon puanlarının hesaplanması
AGP 8.10 veya sonraki sürümlerin en son yama sürümüyle (ör. 8.10.0 yerine 8.10.1) oluşturulan uygulamalarda bu yüzdeler, dahil edilen r8.json dosyasından alınır. Doğru meta verilerin oluşturulması için alt sürümünüzde AGP ve R8'in en son yama sürümünü kullandığınızdan emin olun.
AGP'nin önceki sürümleriyle oluşturulan uygulamalar veya r8.json'nin dahil edilmediği alternatif bir kod optimize ediciyle optimize edilen uygulamalar için Android vitals, mapping.txt dosyasını (dahil edilmişse) veya DEX bulgularını kullanarak kod karartma yüzdelerini proxy olarak tahmin eder.
Toplam DEX boyutu minimumları
Android vitals, tüm uygulamalar için kod optimizasyonu metriklerini hesaplar ancak yalnızca uygulama paketiniz aşağıdaki toplam DEX boyutu şartlarını karşılıyorsa uyarı alırsınız:
- Uygulamalar: Paket, sıkıştırılmamış boyut olarak ölçülen en az 10 MB DEX kodu içerir.
- Oyunlar: Paket, sıkıştırılmamış boyut olarak ölçülen en az 50 MB DEX kodu içerir.
Kod optimizasyonunu yerel olarak ölçme
Uygulama paketinizin sıkıştırılmamış DEX boyutunu ölçmek ve Android vitals'daki bulgularla eşleşen optimizasyon, küçültme ve kod karartma yüzdelerini elde etmek için android analyze komutunu çalıştırın:
android analyze <yourapp>.aab
Sorunu çözün
Düşük DEX kodu optimizasyon puanlarını düzeltmek için derleme sisteminize ve optimize edicinize göre önerileri inceleyin:
R8
R8 DEX kodu optimizasyon puanlarınızı artırmak için R8 optimizasyonunu iyileştirme bölümündeki talimatları inceleyin ve saklama kurallarınızın optimizasyon, küçültme ve kod karartma puanlarınızı nasıl etkilediğini anlamak için R8 Yapılandırma Analiz Aracı'nı kullanın (Bu metriklerin ayrıntılı tanımları için Raporu anlama bölümüne bakın).
Android Gradle Eklentisi'ni (AGP) kullanıyorsanız uygulamanızın saklama kurallarını optimize etme konusunda daha fazla bilgi edinmek için R8 Analyzer becerisini de kullanabilirsiniz. Bazel kullanıyorsanız R8 Yapılandırma Analiz Aracı'na da erişebilirsiniz.
rules_android R8 optimizasyon belgelerine bakın.
R8 dışı optimize ediciler ve DEX son işlemcileri
Derleme ardışık düzeninizde özel derleme araçları veya ikincil DEX işlem sonrası araçları kullanılıyorsa uygulamanızın optimizasyonunu iyileştirmek için aşağıdaki adımları uygulayın:
- Uygulama paketinizi Android Studio'da açıp APK Analyzer'da görüntüleyin.
.dexdosyanın tümünü seçin.- "Adları kod gösterme" düğmesini açıp kapatırken en büyük boyuta sahip dosyalara dikkat edin (Not: Bunun için bir
mapping.txtdosyası yüklemeniz gerekir). Bu dosyalardan bazılarının gizlendikten sonra da büyük kaldığını fark ederseniz bu durum, paket genelindeki saklama kurallarından kaynaklanıyor olabilir. proguard-rules.prodosyanıza (configuration.txt) veya R8 kullanmıyorsanız optimize edicinizdeki eşdeğer dosyaya bakıp gizlenmeyen paketlerle eşleşen saklama kurallarını arayın. Örneğin,com.foo.DEX dosyalarınızda büyük bir paketse-keep com.foo.**veya-keep com.foo.bar.**biçimindeki saklama kurallarını arayın.- Kitaplık tüketicisi saklama kurallarını belirlemenin o kadar kolay olmayabileceğini unutmayın. Bir kitaplık tüketici kuralının optimizasyonu etkilediğinden şüpheleniyorsanız
kitaplığı doğrudan
android analyze <library>.aarkullanarak inceleyebilir veya kitaplığı AGP'nin yeni bir sürümünü kullanan bağımsız bir örnek uygulamaya ekleyip R8 Yapılandırma Analiz Aracı ile inceleyerek doğrulayabilirsiniz.