问题描述:项目开了混淆之后,发现android app 崩溃之后,堆栈里面显示代码行数对应不上。
问题解决:1、android gradle高版本,使用的是R8混淆,就是会看不到真实行数。如何确认是不是R8混淆,打开混淆生成的map文件(类似mapping.txt或者map.txt),如果是
R8,就会有这个
# compiler: R8
如果是R8,就没法直接在日志里面看到真实行数。
2、如果是使用友盟之类的日志平台抓取崩溃日志,只需要把map文件,上传到平台就可以看到对应代码行数。
3、如何在本地查看,在你android SDK的目录下的(Sdk\tools\proguard\bin)有一个proguardguixx的,点击之后,出现界面。
选择ReTrace,选择map文件,粘贴上需要解析的堆栈代码(贴at 开头哪些),然后ReTrace,就会在界面上看到结果。
4、如果在第三步解析出来了代码,但是代码行数没有改变,有可能是SDK里面的Proguard版本有点问题。可以尝试从github上面下载一个最新版本(https://github.com/Guardsquare/proguard/releases)
随便找个地方,解压一下,进入到目录里面,按照步骤3操作一下。