??相信大家在開發(fā)過程中都用過一些錯誤日志信息收集工具,比如友盟統(tǒng)計或者騰訊的Bugly骂远,或者本地的錯誤日志信息收集方法刻恭。不管哪種方法,它都會記錄一些出錯的代碼段硼一,類似下面這樣的信息:
項目中友盟記錄的錯誤日志信息.png
??首先我們需要知道的一個常識是愧哟,當(dāng)我們代碼混淆后會在module->build->outputs->mapping->release文件夾下面生成一個
mapping.txt
文件,或者你在項目中找到proguardMapping.txt
也是一樣的哼蛆。這里面記錄了混淆前后對應(yīng)的代碼蕊梧。下面介紹兩種方法來找到混淆前后對應(yīng)的代碼。
使用Android自帶的proguard圖形界面工具來還原代碼
首先找到安裝的Android SDK的文件夾腮介,我這邊的路徑是C:\Users\Administrator\AppData\Local\Android\Sdk
肥矢,然后在tools文件夾下又一個proguard文件夾,打開里面的bin文件夾叠洗,里面會有一個progurad.bat:
bin文件夾.png
proguard還原結(jié)果.png
另外一段報錯信息.png
混淆還原.png
直接在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
那么對應(yīng)的在mapping.txt文件中去查找com.saicfinance.pcsdsp.func.menu1.b
先找到b
類,果然找到了對應(yīng)的信息灾炭,如下:
mapping.txt.png
報錯代碼.png