NDK de Android

Importante

Visual Studio App Center está programado para la retirada el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.

Obtenga más información sobre las escalas de tiempo de soporte técnico y las alternativas.

Android NDK le permite implementar partes de las aplicaciones de Android mediante C y C++. Puede usar la biblioteca cliente de Google Breakpad para sus aplicaciones Android para recibir seguimientos de pila válidos en código nativo. Los seguimientos de la pila solo pueden contener direcciones de memoria. No muestran nombres de clase, métodos, nombres de archivo y números de línea necesarios para leer y comprender los bloqueos. 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 de carga de bloqueos personalizados.

Bloqueos sinmbolicar

Los bloqueos sin asignar se muestran en la sección Diagnósticos de App Center para que pueda 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 asignar". Si se cargan los símbolos que faltan, el grupo de bloqueos sin asignar se reemplazará por un grupo de bloqueos simbólico.

Nota

App Center no admite la simbólica de fotogramas que proceden de bibliotecas del sistema. Dada la alta fragmentación de archivos binarios del sistema para Android y otras plataformas , que podrían ser diferentes en cualquier combinación de versión de dispositivo o sistema operativo determinada, App Center no proporciona símbolos para los archivos binarios del sistema y omite automáticamente los fotogramas de los archivos binarios del sistema en la simbólica.

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 bien puede cargar los símbolos del Panel de interrupción 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. Volque los símbolos mediante la cadena de herramientas breakpad como se describe en la documentación del Breakpad en la sección "Obtener los símbolos de depuración".
  2. Cree un archivo symbols.zip con la estructura siguiente:

Nota

Si va a cargar los símbolos desde macOS, debe limpiar los símbolos de cualquier carpeta extraña, por ejemplo, __MACOS se genera y para eliminarlo, puede 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

Carga de 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 la aplicación aún no ha notificado ningún bloqueo, deberá usar la API o la CLI para cargar símbolos de Breakpad.
  4. Si la aplicación ya ha informado de bloqueos que necesitan símbolos, compruebe la pestaña Unsymbolicated y debe haber un grupo de versiones con símbolos que faltan, haga clic en él para mostrar el menú para cargar el archivo.
  5. Una vez que App Center indexe los símbolos, los bloqueos se simbolizarán automáticamente.

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. Desencadene una POST solicitud a la API de symbol_uploads. Esta llamada asigna espacio a 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. Realice una PATCH solicitud a la API de symbol_uploads mediante la symbol_upload_id propiedad devuelta desde el primer paso. En el cuerpo de la solicitud, especifique si desea establecer el estado de la carga committed en (completado correctamente) el proceso de carga o aborted (completado incorrectamente).
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 los informes de bloqueos totalmente simbólicos, los bloqueos se muestran en la pestaña Sinmbolicar . 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 y los símbolos lo antes posible con los símbolos del archivo. Una vez que hayan terminado de procesarse, aparecerán en la pestaña Bloqueos parcialmente simbólicos. Los nuevos bloqueos que también dependen de los mismos identificadores de símbolo marcados como omitido omitirán la pestaña Sinmbolicar a medida que entran y fluyen a través del sistema.