Android Release构建混淆后崩溃日志如何定位至实际文件行号
解决Android Release混淆后崩溃的映射文件定位与反混淆问题
一、定位混淆映射文件(mapping.txt)
- 默认路径:开启
minifyEnabled true后,R8/ProGuard生成的mapping.txt会存放在模块的build/outputs/mapping/release/目录下。例如App模块的完整路径为app/build/outputs/mapping/release/mapping.txt - 自定义路径检查:若项目修改过混淆输出配置,可查看模块级
build.gradle文件中的mappingFile相关配置,确认实际存储位置
二、反混淆崩溃日志
- Android Studio内置工具:打开Android Studio,依次点击
Tools > App Links Assistant > Open Mapping File,选择找到的mapping.txt,粘贴混淆后的崩溃日志J2.c.l(SourceFile:46)即可得到对应的原始类、方法及行号 - 命令行工具:在Android SDK的
tools/proguard/bin/目录下,使用retrace.sh(Mac/Linux)或retrace.bat(Windows)执行命令:
直接输出反混淆后的结果retrace.sh mapping.txt 你的崩溃日志文件.txt
三、关键注意事项
- 每次Release构建都会生成新的
mapping.txt,必须和对应版本的APK归档保存,否则无法反混淆旧版本的崩溃日志 - 若同时开启
shrinkResources true,需额外关注资源混淆映射文件resources.txt,但本次问题为代码混淆,重点处理mapping.txt
内容的提问来源于stack exchange,提问作者Amit Yadav
相关产品推荐
相关产品推荐

