Android之混淆后如何還原錯誤日志中的問題代碼

??相信大家在開發(fā)過程中都用過一些錯誤日志信息收集工具,比如友盟統(tǒng)計或者騰訊的Bugly骂远,或者本地的錯誤日志信息收集方法刻恭。不管哪種方法,它都會記錄一些出錯的代碼段硼一,類似下面這樣的信息:

項目中友盟記錄的錯誤日志信息.png
從這段報錯信息中我們注意到:問題是出在了com.saicfinance.menu1文件夾下的b類的q方法中累澡,那么這個b和q又指的是什么呢?我們該如何找到它混淆之前是什么類和方法呢般贼?
??首先我們需要知道的一個常識是愧哟,當(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.bat,會出現(xiàn)一個圖形界面:
proguard還原結(jié)果.png
先選中左邊菜單欄的Retrace然后就會出現(xiàn)右邊的界面灭抑,上面是讓你選擇你項目中的Mapping 文件十艾,下面的框框里是需要還原的被混淆的代碼,那就把我們剛才友盟上面的那段代碼貼進去腾节,再點一下右下角的Retrace忘嫉,這時候還原的結(jié)果就出現(xiàn)在了下方。不過尷尬的是案腺,下方顯示的還是混淆的代碼庆冕,并沒有被還原掉(這里猜測一下原因可能是因為這份proguardMapping文件并不是上線打包時的那份文件了,后來幾次打包修改了proguardMapping文件導(dǎo)致無法還原掉)劈榨。這里我嘗試了好幾次访递,還是那樣,代碼無法被還原鞋既,這時候我換了另外一段代碼:
另外一段報錯信息.png
把這段代碼copy到progurad程序中看看:
混淆還原.png
看結(jié)果竟然能夠完整的還原來出來力九,說明這個還是有用的耍铜,然后我嘗試了其他的報錯信息,發(fā)現(xiàn)一些系統(tǒng)的api還有一些大的類庫的混淆可以識別出來跌前,但是自己項目中寫的代碼混淆就沒辦法還原棕兼,暫時還沒找到這個問題的原因。當(dāng)然對于還原不了的代碼我們還有第二種辦法抵乓。

直接在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
b類對應(yīng)的就是MainMenuContract中的Preseter茎芋,這個Presenter底下有兩個方法,分別是a和q蜈出,那么com.saicfinance.pcsdsp.func.menu1.b.q我們就知道是什么了田弥,就是presenter在調(diào)用menuFunctions方法的時候報了空指針,于是在代碼中找到了報錯的代碼位置:
報錯代碼.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铡原,一起剝皮案震驚了整個濱河市偷厦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌燕刻,老刑警劉巖只泼,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卵洗,居然都是意外死亡请唱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門过蹂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來十绑,“玉大人,你說我怎么就攤上這事榴啸∧醵瑁” “怎么了晚岭?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵鸥印,是天一觀的道長。 經(jīng)常有香客問我坦报,道長库说,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任片择,我火速辦了婚禮潜的,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘字管。我一直安慰自己啰挪,他們只是感情好信不,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亡呵,像睡著了一般抽活。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锰什,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天下硕,我揣著相機與錄音,去河邊找鬼汁胆。 笑死梭姓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嫩码。 我是一名探鬼主播誉尖,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铸题!你這毒婦竟也來了释牺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤回挽,失蹤者是張志新(化名)和其女友劉穎没咙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體千劈,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡祭刚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了墙牌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涡驮。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喜滨,靈堂內(nèi)的尸體忽然破棺而出捉捅,到底是詐尸還是另有隱情,我是刑警寧澤虽风,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布棒口,位于F島的核電站,受9級特大地震影響辜膝,放射性物質(zhì)發(fā)生泄漏无牵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一厂抖、第九天 我趴在偏房一處隱蔽的房頂上張望茎毁。 院中可真熱鬧,春花似錦忱辅、人聲如沸七蜘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橡卤。三九已至夜只,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒜魄,已是汗流浹背扔亥。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谈为,地道東北人旅挤。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像伞鲫,于是被迫代替她去往敵國和親粘茄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容