Android Studio'yu kullanarak veya R8 derleme meta verilerine bakarak başlangıç profillerinizin çalıştığını kontrol edebilirsiniz.
Android Studio ile onaylama
DEX düzeni optimizasyonunu onaylamak için Android Studio'yu kullanarak APK'yı açın ve DEX dosyalarındaki sınıfları doğrulayın. Birincil classes.dex alanının tamamen dolu olmadığından emin olun. Uygulamanız tek bir DEX dosyasından oluşuyorsa Başlangıç Profilini etkinleştirdikten sonra uygulamanın iki DEX dosyası içerip içermediğini kontrol edebilirsiniz.
Android Studio, başlangıç sınıfları tek bir DEX dosyasına sığmıyorsa sizi uyarır.
Başlatma sınıflarındaki başlatma dışı yöntemlerin sayısını içeren teşhis bilgilerini almak için, Başlatma Profilini uygularken settings.gradle dosyasında aşağıdaki değişiklikleri yaparak R8 derleyicisinin en az 8.3.21 sürümüne güncellendiğinden emin olun:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
Modern
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
Gradle ile derleme yaparken aşağıdaki komutta --info öğesini assembleRelease öğesinden sonra eklediğinizden emin olun.
./gradlew assembleRelease --info
Teşhis daha sonra terminale yazdırılır.
Uygulamanız veya kitaplıklarınız desugared API'leri referans alıyorsa bu sınıfların paketlenmiş uyumluluk uygulamaları her zaman son DEX dosyasında yer alır. Bu son DEX dosyası, DEX düzeni optimizasyonlarına katılmıyor.
Paket meta verileriyle onaylama
AGP 8.8'den itibaren R8, Android App Bundle'ınızda (AAB) DEX düzeni optimizasyonunun başarılı olup olmadığını kontrol etmek için kullanabileceğiniz meta veriler oluşturur. Optimizasyonun çalışıp çalışmadığını kontrol etmek için aşağıdakileri yapın:
Uygulamanızın AAB'sini oluşturun:
./gradlew app:bundleRelease"startup": truemetnini içeren en az bir DEX dosyası olduğundan emin olun.Meta verileri açın:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonAAB'nizin yolu
app/build/outputs/bundle/release/app-release.aabgibi olabilir.Çıkışı kontrol edin. Çıkış aşağıdaki gibi görünmelidir:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Meta verilerde yalnızca
"startup": falsesimgesini görüyorsanız başlangıç profillerini etkinleştirmeniz ve başlangıç profilinizin karartılmadığından emin olmanız gerekir.Meta verilerdeki SHA-256 değerlerinin AAB'deki değerlerle eşleştiğini kontrol edin. Tüm DEX dosyalarınızın SHA-256 değerlerini almak için aşağıdakileri çalıştırın:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*Çıkış şu şekilde görünmelidir:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexKarma değerlerini 1. adımda elde ettiğiniz "sağlama toplamı" değerleriyle karşılaştırın. SHA-256 değerleri eşleşmiyorsa R8'in DEX dosyaları oluşturma özelliğini engelleyen bir derleme adımı olabilir.