Cómo incluir símbolos nativos en tu compilación de lanzamiento

De forma predeterminada, las bibliotecas de código nativo se quitan en las compilaciones de lanzamiento de tu app. Esta eliminación consiste en quitar la tabla de símbolos y la información de depuración contenida en las bibliotecas nativas que usa tu app. Quitar las bibliotecas de código nativo genera ahorros de tamaño significativos. Sin embargo, es imposible diagnosticar fallas en Google Play Console debido a la información faltante (como los nombres de las clases y las funciones). Para depurar fallas, debes incluir un archivo de símbolos de depuración con tu app en Play Console.

Sube un archivo de símbolos

Google Play Console informa las fallas por error en código nativo, en Android vitals. Con solo unos pasos, puedes generar y subir un archivo nativo de símbolos de depuración para tu app. Este archivo habilita seguimientos de pila de fallas simbólicas por error en código nativo (que incluyen nombres de clases y funciones), en Android vitals para que te ayuden a depurar tu app en producción. Estos pasos varían según la versión del complemento de Android para Gradle que uses en tu proyecto y si usas un Android App Bundle (recomendado) o un APK.

Versión del complemento de Gradle para Android: 4.1 o posterior

Si tu proyecto compila un Android App Bundle (AAB), puedes configurar tu compilación para que incluya automáticamente el archivo de símbolos de depuración nativo en el AAB, de modo que se suba a Play Console cuando publiques tu app. Para incluir este archivo en las compilaciones de lanzamiento, agrega lo siguiente al archivo build.gradle.kts de tu app:

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

Selecciona uno de los siguientes niveles de símbolos de depuración:

  • Usa SYMBOL_TABLE para obtener los nombres de las funciones en los seguimientos de pila simbólicos de Play Console. Este nivel es compatible con tombstones.
  • Usa FULL para obtener los nombres de funciones, los archivos y los números de línea en los seguimientos de pila simbólicos de Play Console.

Si tu proyecto compila un APK, usa la configuración de android.buildTypes.release.ndk.debugSymbolLevel que se mostró antes para generar el archivo nativo de símbolos de depuración por separado. De forma manual, sube el archivo nativo de símbolos de depuración a Google Play Console (el proceso es similar al de subir un archivo de asignación para desofuscar seguimientos de pila). Como parte del proceso de compilación, el complemento de Android para Gradle genera este archivo en la siguiente ubicación del proyecto:

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

Complemento de Gradle para Android versión 4.0 o anterior (y otros sistemas de compilación)

Como parte del proceso de compilación, el complemento de Android para Gradle conserva una copia de las bibliotecas sin extraer en un directorio de proyecto. Esta estructura de directorios es similar a la siguiente:

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. Comprime el contenido de este directorio:

    cd app/build/intermediates/cmake/universal/release/obj
    zip -r symbols.zip .
    
  2. De forma manual, sube el archivo symbols.zip a Google Play Console.