相信大家在开发过程中都用过一些错误日志信息收集工具,比如友盟统计或者腾讯的Bugly,或者本地的错误日志信息收集方法。不管哪种方法,它都会记录一些出错的代码段,类似下面这样的信息:
首先我们需要知道的一个常识是,当我们代码混淆后会在module->build->outputs->mapping->release文件夹下面生成一个
mapping.txt
文件,或者你在项目中找到proguardMapping.txt
也是一样的。这里面记录了混淆前后对应的代码。下面介绍两种方法来找到混淆前后对应的代码。
使用Android自带的proguard图形界面工具来还原代码
首先找到安装的Android SDK的文件夹,我这边的路径是C:\Users\Administrator\AppData\Local\Android\Sdk
,然后在tools文件夹下又一个proguard文件夹,打开里面的bin文件夹,里面会有一个progurad.bat:
直接在mapping.txt文件中查找
以上面第一个错误为例,报错信息是:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.saicfinance.pcsdsp.func.menu1.b.q(java.lang.String)' on a null object reference
那么对应的在mapping.txt文件中去查找com.saicfinance.pcsdsp.func.menu1.b
先找到b
类,果然找到了对应的信息,如下: