Compartir a través de


Desobfuscación 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.

ProGuard, DexGuard y R8 son herramientas para optimizar y ofuscar el código de las aplicaciones de Android. Quita el código sin usar, cambia el nombre de las clases, los campos y los métodos con nombres semánticamente ocultos, lo que hace que la base de código sea más pequeña y difícil de invertir. Para habilitar la ofuscación con ProGuard o R8 en la aplicación Android, siga la documentación oficial para desarrolladores de Android.

Con ProGuard, DexGuard o R8 habilitado en la aplicación Android, los seguimientos de la pila deben desuscarse. App Center desoplica automáticamente los seguimientos de la pila para las aplicaciones de Java, Kotlin y React Native Android al cargar el mapping.txt archivo creado en cada compilación. Este archivo asigna los nombres de clase, método y campo originales a los nombres ofuscados que hacen que los seguimientos de la pila sean legibles.

El servicio de compilación y distribución de App Center puede generar automáticamente archivos de asignación y cargarlos en el 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 asignación, como se detalla en los pasos siguientes.

Carga del archivo mapping.txt

App Center Portal

  1. Descarga del mapping.txt archivo del directorio de compilación del módulo de la aplicación
  2. Inicie sesión en App Center y seleccione la aplicación.
  3. En el menú de la izquierda, vaya a la sección Diagnósticos .
  4. Seleccionar asignaciones
  5. Haga clic en el botón Cargar asignaciones en la esquina superior derecha.
  6. Rellene el nombre de versión y el código de versión (estos deben coincidir con la configuración de Gradle de la compilación para que la asignación funcione para una compilación determinada).
  7. Cargue el archivo desde el mapping.txt directorio de compilación del módulo de la aplicación.
  8. Haga clic en el botón Save (Guardar).

App Center API

El proceso para cargar archivos de asignación 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 AndroidProguardsymbol_type en y versionbuild las propiedades que corresponden al código de versión y al nombre de la versión, respectivamente, así como a file_name.

  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 asignación:

appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}

Nota

App Center no puede comprobar si ha cargado el archivo correcto mapping.txt . Se recomienda cargar el archivo directamente después de crear el archivo .apk o insertarlo en el repositorio de código si desea cargarlo más adelante.

Reenvío de la asignación desde una compilación en App Center

Si una compilación está configurada para generar un mapping.txt archivo, las compilaciones de App Center generan el archivo como descarga disponible. Distribuir automáticamente la compilación o distribuirla manualmente más adelante reenviará el mapping.txt archivo a Diagnostics para desactivar los informes de bloqueo entrantes. No es necesario cargar manualmente el mapping.txt archivo después de distribuir una compilación.

Eliminación de un archivo de asignación

  1. Realice una GET solicitud a la API de symbols_list. Esto recupera los identificadores de los archivos de asignación que cargó.
  2. Realice una DELETE solicitud a la API de symbols_upload con el identificador de archivo de asignación. Esto elimina el archivo de asignación especificado.