Puoi verificare che i profili di avvio funzionino utilizzando Android Studio o esaminando i metadati della build R8.
Confermare con Android Studio
Per confermare l'ottimizzazione del layout DEX, utilizza Android Studio per aprire l'APK e verificare le classi nei file DEX. Assicurati che il file classes.dex principale non sia completamente pieno. Se la tua app è costituita da un singolo file DEX, puoi verificare se l'app contiene due file DEX dopo aver abilitato il profilo di avvio.
Android Studio ti avvisa se le classi di avvio non rientrano in un singolo file DEX.
Per ottenere informazioni diagnostiche che includano la quantità di metodi non di avvio nelle classi di avvio, assicurati che il compilatore R8 sia aggiornato almeno alla versione 8.3.21 apportando le seguenti modifiche al file settings.gradle quando applichi il profilo di avvio:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
Alla moda
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
Assicurati di aggiungere --info dopo assembleRelease nel seguente comando quando esegui la build con Gradle.
./gradlew assembleRelease --info
Le informazioni diagnostiche vengono stampate nel terminale.
Se la tua app o una delle librerie fa riferimento a una delle API desugared, le implementazioni di compatibilità in bundle di queste classi sono sempre contenute nell'ultimo file DEX. Questo ultimo file DEX desugared non partecipa alle ottimizzazioni del layout DEX.
Confermare con i metadati del bundle
A partire da AGP 8.8, R8 genera metadati nell'Android App Bundle (AAB) che puoi utilizzare per verificare se l'ottimizzazione del layout DEX è andata a buon fine. Per verificare se l'ottimizzazione ha funzionato:
Crea l'AAB della tua app:
./gradlew app:bundleReleaseVerifica che esista almeno un file DEX contenente il testo
"startup": true.Apri i metadati:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonIl percorso dell'AAB potrebbe essere simile a
app/build/outputs/bundle/release/app-release.aab.Controlla l'output, che dovrebbe essere simile al seguente:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Se nei metadati vedi solo
"startup": false, devi abilitare i profili di avvio e assicurarti che il profilo di avvio non sia offuscato.Verifica che i valori SHA-256 dei metadati corrispondano a quelli dell'AAB. Per ottenere i valori SHA-256 di tutti i file DEX, esegui il seguente comando:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*L'output dovrebbe essere simile al seguente:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexConfronta i valori hash con i valori "checksum" del passaggio 1. Se i valori SHA-256 non corrispondono, è possibile che un passaggio di compilazione interferisca con la capacità di R8 di generare file DEX.