Para verificar se os perfis de inicialização estão funcionando, use o Android Studio ou consulte os metadados de build do R8.
Confirmar com o Android Studio
Para confirmar a otimização de layout DEX, use o Android Studio para abrir o APK e
verificar as classes nos arquivos DEX. Verifique se o classes.dex principal não está
totalmente preenchido. Se o app consistir em um único arquivo DEX, verifique
se ele contém dois arquivos DEX depois de ativar o perfil de inicialização.
O Android Studio vai avisar se as classes de inicialização não couberem em um único arquivo DEX.
Para receber informações de diagnóstico que incluem a quantidade de métodos não relacionados à inicialização nas classes de inicialização, verifique se o compilador R8 está atualizado para pelo menos a versão 8.3.21 fazendo as seguintes mudanças no arquivo settings.gradle ao aplicar o perfil de inicialização:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
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" } } }
Adicione --info depois de
assembleRelease no comando a seguir ao criar com o Gradle.
./gradlew assembleRelease --info
Em seguida, o diagnóstico é impresso no terminal.
Se o app ou alguma biblioteca fizer referência a APIs sem açúcar, as implementações de compatibilidade agrupadas dessas classes sempre estarão contidas no último arquivo DEX. Esse último arquivo DEX dessintetizado não participa das otimizações de layout DEX.
Confirmar com metadados do pacote
A partir do AGP 8.8, o R8 gera metadados no Android App Bundle (AAB) que podem ser usados para verificar se a otimização de layout DEX foi bem-sucedida. Para verificar se a otimização funcionou, faça o seguinte:
Crie o AAB do seu app:
./gradlew app:bundleReleaseVerifique se há pelo menos um arquivo DEX que contenha o texto
"startup": true.Abra os metadados:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonO caminho para seu AAB pode ser algo como
app/build/outputs/bundle/release/app-release.aab.Confira a saída, que deve ser parecida com esta:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Se você só vir
"startup": falsenos metadados, ative os perfis de inicialização e verifique se o perfil não está ofuscado.Verifique se os valores SHA-256 dos metadados correspondem aos do AAB. Para receber os valores SHA-256 de todos os seus arquivos DEX, execute o seguinte:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*A resposta será semelhante a esta:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexCompare os valores de hash com os valores de "checksum" da etapa 1. Se os valores SHA-256 não corresponderem, talvez haja uma etapa de compilação interferindo na capacidade do R8 de gerar arquivos DEX.