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中刪除的代碼linux

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

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

調試Proguard混淆後的程序

上面說了輸出的幾個文件,咱們在改bug時能夠使用,經過mapping.txt,經過映射關係找到對應的類,方法,字段等。工具

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

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

例如:.net

retrace.bat -verbose mapping.txt obfuscated_trace.txt

若是你沒有指定<stacktrace_file>,retrace工具會從標準輸入讀取。調試

相關文章
相關標籤/搜索