android混淆代碼調試

混淆後的代碼出現錯誤怎麼辦呢,如何進行調試,最近爲此而頭疼,感覺沒把別人混淆了,先混淆了自己,後來發現一篇文章,與大家分享


ProGuard的輸出文件及用處

混淆之後,會給我們輸出一些文件,在gradle方式下是在<project_dir>/build/proguard/目錄下,ant是在<project_dir>/bin/proguard目錄,eclipse構建在<project_dir>/proguard目錄像。
分別有以下文件:
+ dump.txt 描述apk文件中所有類文件間的內部結構。
+ mapping.txt 列出了原始的類,方法,和字段名與混淆後代碼之間的映射。
+ seeds.txt 列出了未被混淆的類和成員
+ usage.txt 列出了從apk中刪除的代碼

當我們發佈的release版本的程序出現bug時,可以通過以上文件(特別時mapping.txt)文件找到錯誤原始的位置,進行bug修改。同時,可能一開始的proguard配置有錯誤,也可以通過錯誤日誌,根據這些文件,找到哪些文件不應該混淆,從而修改proguard的配置。

注意:重新release編譯後,這些文件會被覆蓋,所以沒吃發佈程序,最好都保存一份配置文件。

調試Proguard混淆後的程序

上面說了輸出的幾個文件,我們在改bug時可以使用,通過mapping.txt,通過映射關係找到對應的類,方法,字段等。

另外Proguard文件中包含retrace腳本,可以將一個被混淆過的堆棧跟蹤信息還原成一個可讀的信息,window下時retrace.bat,linux和mac是retrace.sh,在<sdk_root>/tools/proguard/文件夾下。語法爲:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你沒有指定<stacktrace_file>,retrace工具會從標準輸入讀取。






轉自 http://www.jianshu.com/p/0202845db617

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章