DEX kodu optimizasyonu

Kodunuzu R8 veya alternatif araçlar (ör. ProGuard ile uyumlu optimize ediciler ya da ikincil DEX işlem sonrası araçları) kullanarak optimize edip 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.

R8 kod optimizasyonunu yerel olarak ölçme

Komut satırını kullanarak uygulama paketinizin sıkıştırılmamış DEX boyutunu yerel olarak ölçmek için şunu çalıştırın:

unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Uygulamanız R8 ile optimize ediliyorsa R8 Yapılandırma Analiz Aracı'nı kullanarak uygulama paketinizin optimizasyonunu, karartmasını ve küçültülmesini ölçebilirsiniz. Küçültme, optimizasyon ve kod karartma ile ilgili ayrıntılı tanımlar için R8 Yapılandırma Analiz Aracı'nı kullanma başlıklı makaleyi inceleyin. R8 Yapılandırma Analiz Aracı raporu, R8 Analiz Aracı Becerisi'ne de dahildir.

Uygulama paketinize yerleştirilmiş optimizasyon sonrası meta verileri incelemek için (AGP 8.10 veya sonraki sürümler için) 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ı gidermek 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 Analyzer becerisini de kullanabilirsiniz.

R8 dışı derleme sistemleri ve DEX sonrası işlemciler

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:

  • Android Studio'da uygulama paketinizi açın ve APK Analyzer'da görüntüleyin.
  • .dex dosyaların tümünü seçin.
  • "Adları netleştir" düğmesini açıp kapatırken en büyük boyuta sahip dosyalara dikkat edin (Not: Bu işlem için mapping.txt dosyası yüklemeniz gerekir). Bu dosyalardan bazılarının karartılmış haldeyken büyük kalmaya devam ettiğini fark ederseniz bunun nedeni, bu dosyaların paket genelinde saklama kurallarından etkileniyor olmasıdır.
  • proguard-rules.pro dosyanı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 com.foo.büyük bir paket varsa -keep com.foo.** biçimindeki veya -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üketici kuralının optimizasyonu etkilediğinden şüpheleniyorsanız AGP'nin son sürümünü kullanarak bağımsız bir örnek uygulamaya ekleyip R8 Yapılandırma Analiz Aracı ile inceleyerek yerel olarak doğrulayabilirsiniz.