Android Studio'yu kullanarak veya R8 derleme meta verilerine bakarak başlangıç profillerinizin çalışıp çalışmadığını kontrol edebilirsiniz.
Android Studio ile doğrulama
DEX düzen 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
'ün tamamen doldurulmadığından emin olun. Uygulamanız tek bir DEX dosyasından oluşuyorsa Başlangıç Profili'ni 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ığmazsa sizi uyarır.
Başlangıç sınıflarındaki başlangıç dışı yöntemlerin sayısını içeren teşhis bilgilerini almak için, başlangıç profilini uygularken settings.gradle
dosyasında aşağıdaki değişiklikleri yaparak R8 derleyicisinin en az 8.3.36-dev 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.6-dev") } } }
Groovy
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 assembleRelease
'den sonra --info
eklediğinizden emin olun.
./gradlew assembleRelease --info
Teşhis daha sonra terminale yazdırılır.
Uygulamanız veya kitaplıklarınız herhangi bir şeker içermeyen API'ye referans veriyorsa bu sınıfların paketlenmiş uyumluluk uygulamaları her zaman son DEX dosyasında bulunur. Bu şeker içermeyen son DEX dosyası, DEX düzen optimizasyonlarına dahil edilmez.
Paket meta verileriyle onaylama
AGP 8.8'den itibaren R8, Android App Bundle'ınızda (AAB) DEX düzen optimizasyonunun başarılı olup olmadığını kontrol etmek için kullanabileceğiniz meta veriler oluşturur. Optimizasyonun işe yarayıp yaramadığını kontrol etmek için aşağıdakileri yapın:
Uygulamanızın AAB'sini oluşturma:
./gradlew app:bundleRelease
"startup": true
metnini içeren en az bir DEX dosyası olup olmadığını kontrol edin.Meta verileri açın:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.json
AAB'nizin yolu
app/build/outputs/bundle/release/app-release.aab
gibi olabilir.Çıkışı kontrol edin. Çıkış şu şekilde görünecektir:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Meta verilerde yalnızca
"startup": false
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'dekilerle eşleşip eşleşmediğ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ünecektir:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dex
Karma değerleri 1. adımdaki "checksum" (şifre) değerleriyle karşılaştırın. SHA-256 değerleri eşleşmiyorsa R8'in DEX dosyası oluşturma özelliğini etkileyen bir derleme adımı olabilir.