Android Deobfuscation
11/11/2019
本文内容
ProGuard、DexGuard 和 R8 是用于对 Android 应用程序的代码进行优化和模糊处理的工具。 它会删除未使用的代码、重命名具有语义模糊名称的类、字段和方法,使基本代码更小,更难反向工程。 若要在 Android 应用中使用 ProGuard 或 R8 启用混淆,请遵循 官方 Android 开发人员文档。
如果在 Android 应用中启用了 ProGuard、DexGuard 或 R8,则堆栈跟踪必须 deobfuscated。 当你上传 mapping.txt 每个生成上创建的文件时,App Center 会自动为 Java、Kotlin 和响应本机 Android 应用 deobfuscates 堆栈跟踪。 此文件将原始类、方法和字段名称映射到可读取堆栈跟踪的经过模糊处理的名称。
App Center 生成和分发服务可以自动生成映射文件并将其上载到诊断服务。 如果使用 App Center 生成应用并将其自动分发给最终用户,则无需手动获取和上传映射文件,如以下步骤中所述。
正在上载 mapping.txt 文件
App Center 门户
mapping.txt从应用模块的生成目录下载文件
登录到 App Center 并选择你的应用
在左侧菜单中,导航到 " 诊断 " 部分
选择 映射
单击右上角的 " 上传映射 " 按钮
填写版本名称和版本代码 (它们必须匹配该生成的 Gradle 配置,才能使映射适用于特定生成)
从 mapping.txt 应用模块的生成目录上传文件。
单击“保存”按钮。
App Center API
通过 API 上传映射文件的过程涉及一系列三个 API 调用:一次用于分配后端空间,一次用于上传文件,另一次用于更新上传状态。 第一个 API 调用的正文应分别设置为 、、分别对应于版本代码和版本名称的属性 symbol_type AndroidProguard 以及 build version file_name 。
触发 POST 对 symbol_uploads API的请求。
此调用在文件后端为文件分配空间,并返回 symbol_upload_id 和 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}'
使用 upload_url 第一步中返回的属性,发出 PUT 带有标头的请求: "x-ms-blob-type: BlockBlob" 并提供文件在磁盘上的位置。 此调用会将文件上传到后端存储帐户。 了解有关 放置 Blob 请求标头的详细信息。
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
PATCH使用第一步中返回的属性向symbol_uploads API发出请求 symbol_upload_id 。 在请求正文中,指定是要将上传的状态设置 (为 "已 committed 成功完成") 上载过程,还是 ("未 aborted 成功完成) "。
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" }'
备注
符号上载 API 不适用于大小超过256MB 的文件。 使用 App Center CLI 上传这些文件。 可以按照我们的 APP CENTER cli存储库中的说明安装 App Center CLI。
App Center CLI
还可使用 CLI 上传映射文件:
appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}
备注
App Center无法检查是否上传了正确的 mapping.txt 文件。 建议在创建 .apk 文件后直接上传文件,或将其推送到代码存储库(如果要稍后上传)。
从生成中转发映射App Center
如果将生成 配置为生成文件 mapping.txt ,App Center生成文件作为可用下载。 自动分发生成或稍后手动分发它将文件转发到诊断,以对传入的崩溃 mapping.txt 报告进行模糊处理。 分发生成后,不需要手动 mapping.txt 上传文件。
删除映射文件
向 GET 应用程序 API symbols_list请求。 这会检索上传的映射文件的 ID。
使用 DELETE 映射文件 ID 向 symbols_upload API 进行请求。 这会删除指定的映射文件。