標籤:一個 注意 tac txt too 儲存 linu proguard cat
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工具會從標準輸入讀取。
Android 混淆後的代碼調試