Por padrão, as bibliotecas de código nativo são removidas em builds de lançamento do seu app. Essa remoção consiste em remover a tabela de símbolos e as informações de depuração contidas em qualquer biblioteca nativa usada pelo app. A remoção de bibliotecas de código nativo resulta em uma economia significativa de tamanho. No entanto, é impossível diagnosticar falhas no Google Play Console devido à falta de informações, como nomes de classes e funções. Para depurar falhas, inclua um arquivo de símbolos de depuração com o app no Play Console.
Fazer upload de um arquivo de símbolos
O Google Play Console informa falhas nativas em Android vitals. Em poucas etapas, você pode gerar e fazer upload de um arquivo de símbolos de depuração nativo para seu app. Esse arquivo permite o stack trace de falhas nativas simbolizadas (que incluem nomes de classe e função) no Android vitals para ajudar você a depurar seu app na produção. Essas etapas variam dependendo da versão do Plug-in do Android para Gradle usada no projeto e se você está usando um Android App Bundle (recomendado) ou um APK.
Versão do Plug-in do Android para Gradle: 4.1 ou mais recente
Se o projeto criar um Android App Bundle (AAB), você poderá configurar o build
para incluir automaticamente o arquivo de símbolos de depuração nativo no AAB. Assim, ele será
enviado ao Play Console quando você publicar o app. Para incluir esse arquivo em
builds de lançamento, adicione o seguinte ao arquivo build.gradle.kts do app:
android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }
Selecione o nível do símbolo de depuração:
- Use
SYMBOL_TABLEpara conseguir os nomes de função nos stack traces simbólicos do Play Console. Esse nível tem suporte a Tombstones. - Use
FULLpara conseguir os nomes de função, arquivos e números de linha nos stack traces simbólicos do Play Console.
Se o projeto cria um APK, use a
configuração android.buildTypes.release.ndk.debugSymbolLevel mostrada anteriormente para
gerar o arquivo de símbolos de depuração nativo separadamente. Faça upload manual do arquivo de símbolos de depuração nativos no Google Play Console. O processo é semelhante ao upload de um arquivo de mapeamento para desofuscar stack traces.
Como parte do processo de build, o Plug-in do Android para Gradle gera esse arquivo no
seguinte local do projeto:
app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip
Se as dependências contiverem bibliotecas nativas, as informações de depuração provavelmente serão
removidas para reduzir o tamanho. Para verificar isso, execute um build com o nível de registro info e defina debugSymbolLevel = { SYMBOL_TABLE | FULL }.
Em seguida, procure a seguinte linha na saída do build:
Unable to extract native debug metadata from ... because the native debug metadata has already been stripped.
Versão do plug-in do Android para Gradle: 4.0 ou versões anteriores (e outros sistemas de build)
Como parte do processo de compilação, o Plug-in do Android para Gradle mantém uma cópia das bibliotecas sem símbolos de depuração em um diretório do projeto. Essa estrutura de diretório é semelhante a esta:
app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│ ├── libgameengine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── arm64-v8a/
│ ├── libgameengine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── x86/
│ ├── libgameengine.so
│ ├── libothercode.so
│ └── libvideocodec.so
└── x86_64/
├── libgameengine.so
├── libothercode.so
└── libvideocodec.so
Compacte o conteúdo do diretório:
cd app/build/intermediates/cmake/universal/release/obj zip -r symbols.zip .Faça upload manual do arquivo
symbols.zipno Google Play Console.