Aby sprawdzić, czy profile uruchamiania działają, możesz użyć Androida Studio lub sprawdzić metadane kompilacji R8.
Potwierdzenie w Android Studio
Aby potwierdzić optymalizację układu DEX, otwórz plik APK w Android Studio i sprawdź klasy w plikach DEX. Upewnij się, że główny classes.dex nie jest całkowicie wypełniony. Jeśli aplikacja składa się z jednego pliku DEX, po włączeniu profilu uruchamiania możesz sprawdzić, czy zawiera 2 pliki DEX.
Android Studio ostrzega, jeśli klasy uruchamiania nie mieszczą się w jednym pliku DEX.
Aby uzyskać informacje diagnostyczne, które obejmują liczbę metod innych niż metody uruchamiania w klasach uruchamiania, upewnij się, że kompilator R8 jest zaktualizowany do co najmniej wersji 8.3.21. W tym celu wprowadź te zmiany w pliku settings.gradle podczas stosowania profilu uruchamiania:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
Dynamiczny
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
Podczas kompilowania za pomocą Gradle upewnij się, że po --info dodasz znak
assembleRelease w tym poleceniu.
./gradlew assembleRelease --info
Wynik diagnostyki jest następnie wyświetlany w terminalu.
Jeśli Twoja aplikacja lub jakiekolwiek biblioteki odwołują się do odcukrzonych interfejsów API, dołączone implementacje zgodności tych klas są zawsze zawarte w ostatnim pliku DEX. Ten ostatni plik DEX po usunięciu cukru syntaktycznego nie uczestniczy w optymalizacji układu DEX.
Potwierdzenie za pomocą metadanych pakietu
Od wersji 8.8 wtyczki AGP R8 generuje w pakiecie aplikacji na Androida (AAB) metadane, których możesz użyć do sprawdzenia, czy optymalizacja układu DEX się powiodła. Aby sprawdzić, czy optymalizacja zadziałała:
Utwórz pakiet AAB aplikacji:
./gradlew app:bundleReleaseSprawdź, czy jest co najmniej 1 plik DEX, który zawiera tekst
"startup": true.Otwórz metadane:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonŚcieżka do pliku AAB może wyglądać tak:
app/build/outputs/bundle/release/app-release.aabSprawdź dane wyjściowe, które powinny wyglądać mniej więcej tak:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Jeśli w metadanych widzisz tylko
"startup": false, musisz włączyć profile startowe i upewnić się, że Twój profil startowy nie jest zaciemniony.Sprawdź, czy wartości SHA-256 z metadanych są zgodne z wartościami z pakietu AAB. Aby uzyskać wartości SHA-256 dla wszystkich plików DEX, wykonaj to polecenie:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*Dane wyjściowe powinny wyglądać mniej więcej tak:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexPorównaj wartości skrótu z wartościami „checksum” z kroku 1. Jeśli wartości SHA-256 nie pasują do siebie, może to oznaczać, że etap kompilacji zakłóca możliwość generowania plików DEX przez R8.