DEX kodu optimizasyonu, uygulamanızın derleme kalitesini, boyutunu ve performansını izlemenize ve iyileştirmenize yardımcı olan bir Android vitals bulgusudur. R8 veya alternatif araçlar (ör. ProGuard ile uyumlu optimize ediciler ya da ikincil DEX işlem sonrası araçları) kullanarak kodunuzu optimize etmek ve karartmak, uygulamanızın DEX boyutunu küçültür, çalışma zamanı performansını artırır ve bellek ayak izini en aza indirir.
DEX veya Dalvik Executable dosyaları, uygulamanızı çalıştırmak için kullanılan derlenmiş kodu içerir. Bu 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
Android vitals, uygulamanızın DEX kodu optimizasyon seviyeleri düşük olduğunda sizi uyarabilir. Buna, R8 kullanan uygulama ve oyunlar için kod karartma, küçültme ve optimizasyon dahildir. R8'i kullanmayan uygulamalarda Android vitals, optimizasyon, küçültme ve karartma oranlarını kontrol etmeye çalışır ancak gerektiğinde karartma sezgisel yöntemlerine geri döner.
Optimizasyon durumunu izleme
Android vitals, uygulamanız kod optimizasyonu için tanımlanan minimum yüzdeliklere uymadığında Play Console üzerinden sizi uyararak uygulamanızın performansını artırmanıza yardımcı olabilir. Küçültme, optimizasyon ve karartma ile ilgili ayrıntılı tanımlar için R8 Yapılandırma Analiz Aracı'nı kullanma başlıklı makaleyi inceleyin.
AGP 8.10 veya sonraki sürümlerin en son yamasıyla oluşturulan uygulamalarda bu yüzdeler, dahil edilen r8.json dosyasından alınır.
AGP'nin daha eski sürümlerinde veya r8.json dosyası dahil edilmediğinde, yüzdeler dahil edilmişse mapping.txt dosyasından, eşleme dosyası mevcut değilse DEX sezgisel yöntemleri kullanılarak hesaplanır.
Alternatif bir kod optimize ediciyle optimize edilmiş uygulamalar için Android vitals, uygulama paketinde karartılmış olan sınıfların, yöntemlerin ve alanların yüzdesini tahmin etmek üzere bir analiz gerçekleştirir.
Toplam DEX boyutu minimumları
Android vitals, tüm uygulamalar için kod optimizasyonu metriklerini hesaplarken 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çeriyor.
- Oyunlar: Pakette, sıkıştırılmamış boyut olarak ölçülen en az 50 MB DEX kodu bulunuyor.
Android vitals, uygulamanızın DEX boyutunu gösterir ancak bu boyutu komut satırını kullanarak yerel olarak da ölçebilirsiniz:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
R8 kod optimizasyonunu yerel olarak ölçme
Uygulamanız R8 ile optimize ediliyorsa R8 Yapılandırma Analiz Aracı'nı kullanarak uygulama paketinizin optimizasyon, kod karartma ve küçültme işlemlerini ölçebilirsiniz. R8 Yapılandırma Analiz Aracı raporu, R8 Analiz Aracı Becerisi'ne de dahildir. Rapor, saklama kurallarınızın optimizasyon, küçültme ve karartma puanlarınızı nasıl etkilediğini anlamanıza yardımcı olsa da bu yüzdeler optimizasyonlardan önce hesaplandığı için rapordaki yüzdeler Android vitals'daki değerlerle eşleşmez.
Android vitals'ın puanlarınızı hesaplamak için kullandığı meta verileri incelemek üzere uygulama paketinizden r8.json dosyasını çıkarın:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
Sorunu düzeltme
Düşük DEX kodu optimizasyon puanlarını düzeltmek için derleme sisteminize ve optimizasyon aracınıza göre önerileri inceleyin:
Android Gradle eklentisi ve R8
R8 DEX kodu optimizasyonu puanlarınızı artırmak için R8 optimizasyonunu iyileştirme başlıklı kılavuza bakın. Uygulamanızın saklama kurallarını optimize etme konusunda ek rehberlik almak için R8 Analiz Aracı becerisini de kullanabilirsiniz.
R8 dışı derleme sistemleri ve DEX sonrası işlemciler
Derleme işlem hattınızda ö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çın ve APK Analyzer'da görüntüleyin.
.dexdosyalarının tümünü seçin.- "Adların kodunu gösterme" düğmesini açıp kapatırken en büyük boyuta sahip dosyalara dikkat edin (Not: Bu işlem için
mapping.txtdosyası yüklemeniz gerekir). Bu dosyalardan bazılarının karartılmış haldeyken büyük kalmaya devam ettiğini fark ederseniz bu dosyalar paket genelinde saklama kurallarından etkileniyor olabilir. proguard-rules.prodosyanızda (configuration.txt) veya R8 kullanmıyorsanız optimize edicinizdeki eşdeğer dosyada, karartılmayan paketlerle eşleşen keep kurallarını arayın. Örneğin, dex'inizde büyük bir paket varsacom.foo.biçimindeki veya-keep com.foo.**-keep com.foo.bar.**biçimindeki saklama kurallarını arayın.- Kitaplık tüketicisi saklama kurallarının tanımlanması o kadar kolay olmayabilir. Bir kitaplık tüketicisi kuralının optimizasyonu etkilediğinden şüpheleniyorsanız AGP'nin yeni bir sürümünü kullanarak bağımsız bir örnek uygulamaya ekleyip R8 Yapılandırma Analiz Aracı ile inceleyerek yerel olarak doğrulayabilirsiniz.