Compartir a través de


NDK de Android

Importante

Visual Studio App Center se retiró el 31 de marzo de 2025, excepto las características de análisis y diagnóstico, que seguirán siendo compatibles hasta el 30 de junio de 2026. Más información.

Android NDK permite implementar partes de las aplicaciones de Android mediante C y C++. Puede usar la biblioteca cliente de Google Breakpad para sus aplicaciones de Android y recibir rastros de pila válidos en código nativo. Los seguimientos de la pila solo pueden contener direcciones de memoria. No muestran los nombres de clase, los métodos, los nombres de archivo y los números de línea que son necesarios para leer y comprender los fallos. Para obtener las direcciones de memoria traducidas para la aplicación NDK de Android, debe cargar símbolos de aplicación para cada compilación.

Para obtener información sobre cómo notificar bloqueos de NDK, consulte la documentación de Android SDK para aplicaciones android o la documentación del SDK de Unity para aplicaciones de Unity.

Si quiere enviar bloqueos de Breakpad desde otras plataformas a App Center, consulte la documentación para cargar bloqueos personalizados.

Bloqueos no simbolizados

Los bloqueos sin simbolizar se muestran en la sección "Diagnósticos" del App Center para que puedas ver algunos detalles incluso antes de cargar símbolos. Los símbolos que faltan de estos bloqueos se mostrarán en la pestaña "sin simbolizar". Si se cargan los símbolos que faltan, el grupo de bloqueos sin simbolizar se reemplazará por un grupo de bloqueos simbolizados.

Nota:

App Center no admite la simbólica de fotogramas que proceden de bibliotecas del sistema. Dada la alta fragmentación de los archivos binarios del sistema para Android y otras plataformas, que podría variar en cualquier combinación determinada de versión de dispositivo y sistema operativo, App Center no proporciona símbolos para los archivos binarios del sistema y omite automáticamente los marcos de estos archivos durante el proceso de simbólico.

Generación de un archivo .zip para cargar

Hay dos maneras de que App Center recupere los símbolos necesarios para la simbólica. App Center puede generarlos a partir de los archivos binarios nativos que se usan en el proyecto o puede cargar los símbolos del Breakpad directamente.

Opción 1: Cargar archivos binarios nativos

Coloque todos los archivos .so del directorio del obj/local/$ABI/ proyecto en un archivo .zip.

Opción 2: Cargar símbolos de Breakpad

  1. Volcar los símbolos mediante la cadena de herramientas Breakpad tal y como se describe en la documentación de Breakpad en la sección "Obtener los símbolos de depuración".
  2. Cree un archivo symbols.zip con la siguiente estructura:

Nota:

Si estás cargando tus símbolos desde macOS, entonces debes limpiar tus símbolos de cualquier carpeta innecesaria, por ejemplo, cuando se genera la carpeta __MACOS, para eliminarla puedes usar zip -d <symbols.zip> __MACOSX/\*.

$ unzip -l symbols.zip
Archive:  symbols.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  07-22-13 15:07   symbols/
        0  07-22-13 15:07   symbols/libnative.so/
        0  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
    12468  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
        0  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
    12467  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
 --------                   -------
    24935                   6 files

Cargar símbolos

Nota:

El servicio de compilación y distribución de App Center puede reenviar automáticamente símbolos al servicio de diagnóstico. Si usa App Center para compilar y distribuir automáticamente la aplicación a los usuarios finales, no es necesario obtener y cargar manualmente los archivos de símbolos, como se detalla en los pasos siguientes.

App Center Portal

  1. Inicie sesión en App Center y seleccione la aplicación.
  2. En el menú de la izquierda, vaya a la sección Diagnósticos y, a continuación, a Problemas.
  3. Si su aplicación aún no ha notificado ningún fallo, deberá usar la API o la CLI para cargar los símbolos de Breakpad.
  4. Si la aplicación ya ha notificado bloqueos que necesitan símbolos, verifique la pestaña Sin simbolizar y debe haber un grupo de versiones que carecen de símbolos ausentes; haga clic sobre el grupo para desplegar el menú y cargar el archivo.
  5. Una vez que App Center indexe los símbolos, los bloqueos se simbolizarán automáticamente para ti.

App Center API

El proceso para cargar símbolos a través de la API implica una serie de tres llamadas API: una para asignar espacio en nuestro back-end, otra para cargar el archivo y otra para actualizar el estado de la carga. El cuerpo de la primera llamada API debe establecerse symbol_type en Breakpad.

  1. Realice una POST solicitud a la API de Symbol_uploads. Esta llamada asigna espacio en nuestro back-end para el archivo y devuelve una symbol_upload_id propiedad y .upload_url
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. Con la upload_url propiedad devuelta desde el primer paso, realice una PUT solicitud con el encabezado : "x-ms-blob-type: BlockBlob" y proporcione la ubicación del archivo en el disco. Esta llamada carga el archivo en nuestras cuentas de almacenamiento de back-end. Obtenga más información sobre los encabezados de solicitud PUT Blob .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Haga una PATCH solicitud a la API de symbol_uploads mediante la symbol_upload_id propiedad proporcionada en el primer paso. En el cuerpo de la solicitud, especifique si desea establecer el estado de la carga en committed (completado correctamente) el proceso de carga o aborted (no se completó correctamente).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Nota:

La API de carga de símbolos no funciona para archivos de más de 256 MB. Use la CLI de App Center para cargar estos archivos. Puede instalar la CLI de App Center siguiendo las instrucciones del repositorio de la CLI de App Center.

App Center CLI

También puede usar la CLI para cargar archivos de símbolos:

appcenter crashes upload-symbols --breakpad {symbols file}

Omitir símbolos

Cuando App Center no tiene todos los archivos de símbolos para transformar completamente los informes de bloqueos, los bloqueos se muestran en la pestaña Insimbolicados. Los símbolos necesarios se cargan desde esta página si tiene acceso a ellos.

Si no puede cargar los símbolos, puede marcarlos como Omitir seleccionando filas en la tabla y haciendo clic en el botón Omitir versiones . Este botón indica a App Center que procese los bloqueos e intentará simbolizarlos en la mayor medida posible con los símbolos registrados. Una vez que hayan terminado de procesarse, aparecerán en la pestaña Bloqueos simbolizados parcialmente. Los nuevos bloqueos que también dependen de los mismos identificadores de símbolo marcados como omitidos pasarán por alto la pestaña Sin asignar al entrar y pasar por el sistema.