Incluir símbolos nativos no build de lançamento

Por padrão, as bibliotecas de código nativo são removidas nos builds de lançamento do app. Esse processo consiste em remover a tabela de símbolos e as informações de depuração contidas em todas as bibliotecas nativas usadas pelo app. A remoção de bibliotecas de código nativo resulta em economia de tamanho significativa. No entanto, é impossível diagnosticar falhas no Google Play Console devido à falta de informações (como nomes de classe e função). Para depurar falhas, inclua um arquivo de símbolos de depuração com seu 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, é possível 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 pacote de apps Android (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 para que ele seja 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_TABLE para conseguir os nomes de função nos stack traces simbólicos do Play Console. Esse nível tem suporte a Tombstones.
  • Use FULL para 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 do arquivo de símbolos de depuração nativo manualmente para o 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 o arquivo no seguinte local do projeto:

app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip

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
  1. Compacte o conteúdo do diretório:

    cd app/build/intermediates/cmake/universal/release/obj
    zip -r symbols.zip .
    
  2. Faça upload do arquivo symbols.zip manualmente no Google Play Console.