android的混淆器

混淆器

混淆器工具減少、優化和混淆代碼通過刪除未使用的代碼 重命名類、字段和方法與語義模糊的名字。 結果是一個更小的 大小的 . apk 反向工程文件,更困難。 因爲混淆器讓你 應用程序難以反向工程,重要的是,你使用它 當應用程序使用的特性,對安全敏感喜歡當你 授權應用程序 

混淆器是集成到Android構建系統,所以你不需要調用它 手動。 混淆器運行,只有當您構建您的應用程序在發佈模式下,所以你不要 必須處理混淆代碼當你在調試模式下構建應用程序。 有混淆器運行是完全可選的,但強烈推薦。

本文檔描述瞭如何啓用和配置混淆器以及使用 追溯 工具來解碼混淆過的堆棧跟蹤。

使混淆器


當你創建一個Android項目, proguard.cfg 文件是自動 項目的根目錄中生成。 這個文件定義瞭如何混淆器優化 混淆你的代碼,所以它是非常重要的,你瞭解如何定製它 的需要。 默認配置文件只涵蓋一般情況下,所以你很可能需要編輯 自己的需要。 看到下面的部分 混淆器配置 上的信息 自定義混淆器配置文件。

使混淆器,以便它作爲Ant或Eclipse構建的一部分運行,設置 proguard.config 屬性 < project_root > / project.properties文件。 路徑可以是絕對路徑或相對路徑項目的根。

注意: 使用Android工作室時,您必須添加混淆器 到你的 gradle.build 文件的構建類型。 有關更多信息,請參見 Gradle插件用戶指南 

如果你離開了 proguard.cfg 文件的默認位置(項目的根目錄), 您可以指定它的位置如下:

proguard.config=proguard.cfg

你也可以將文件移動到任何你想要的,並指定絕對路徑:

proguard.config=/path/to/proguard.cfg

當您構建您的應用程序在發佈模式下,通過運行 螞蟻釋放 或 通過使用 導出嚮導 在Eclipse中,構建系統自動檢查 的proguard.config 屬性設置。如果是,混淆器自動流程 應用程序的字節碼之前把所有東西打包成一個 . apk 文件。 在調試模式下 不調用混淆器,因爲它使調試變得更加繁瑣。

混淆器運行後輸出以下文件:

dump.txt
描述中的所有類文件的內部結構 . apk 文件
. txt
列出原始之間的映射和混淆過的類,方法和字段名稱。 這個文件很重要,當你收到一個錯誤報告發布構建,因爲它 翻譯模糊堆棧跟蹤回到原來的類,方法,和成員的名字。 看到 解碼混淆過的堆棧跟蹤 獲得更多信息。
seeds.txt
列出了那些未混淆類和成員
usage.txt
列表的代碼去掉 . apk

這些文件位於以下目錄:

  • < project_root > / bin /混淆器 如果您正在使用Ant。
  • < project_root > /混淆器 如果您正在使用Eclipse。

警告: 我已經從香港訂購一個(途中)。��些文件 混淆器生成覆蓋最新的文件。 拯救他們每次你釋放你的副本 應用程序爲了反混淆的錯誤報告發布構建。 關於爲什麼要保存這些文件的更多信息是很重要的,看看 程序發佈調試注意事項 

混淆器配置


在某些情況下,默認的配置 proguard.cfg 文件將 足夠了。 然而,許多情況是混淆器很難正確地分析和它可能刪除代碼 它認爲沒有使用,但實際上你的應用程序的需求。 一些例子包括:

  • 一個只在引用的類 AndroidManifest.xml 文件
  • 一個從JNI調用方法
  • 動態引用的字段和方法

默認的 proguard.cfg 文件試圖涵蓋一般情況下,但你可能 遇到異常等 ClassNotFoundException ,當混淆器 除去了一個完整的應用程序調用的類。

你可以修復錯誤時混淆器除去代碼通過添加 近些年也 行 的 proguard.cfg 文件。 例如:

-keep public class <MyClass>

有許多選項和注意事項時使用 近些年也 選項,所以 強烈建議您閱讀 混淆器 手冊 關於定製配置文件的更多信息。 的 保存選項的概述 和 示例部分 尤其有幫助。 的 故障排除 部分的 混淆器手冊概述了其他常見問題時可能會遇到你的代碼被剝奪了 走了。

解碼混淆過的堆棧跟蹤


當你的混淆代碼並輸出了一個堆棧跟蹤,這些方法名字是混淆過的,這使得 調試困難,如果不是不可能的。 幸運的是,每當混淆器運行時,它輸出 < project_root > / bin /混淆器/ . txt 文件,它顯示了你原來的 類、方法和字段名稱映射到名稱很古怪。

的 retrace.bat 在Windows或腳本 retrace.sh 在Linux上的腳本 或Mac OS X把混淆後的堆棧跟蹤信息可以轉換到一個可讀的。 它位於 < sdk_root > /工具/混淆器/ 目錄中。 執行的語法 追溯 工具是:

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

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你不指定一個值 < stracktrace_file > 追溯 工具讀取 從標準輸入。

程序發佈調試注意事項

保存 . txt 文件爲每個版本發佈給用戶。 通過保留的一個副本 . txt 發佈構建版本文件, 你確保你可以調試一個問題如果用戶遇到錯誤,並把混淆後的堆棧跟蹤信息提交。 一個項目的 . txt 文件覆蓋每次你一個新的發佈版本,所以你必須 你需要小心保存的版本。

例如,說你發佈一個應用程序和繼續發展的新功能 申請一個新版本。 然後使用一個新的發佈版本混淆器後不久。 的 構建覆蓋前面 . txt 文件。 用戶提交錯誤報告 從應用程序中包含一個堆棧跟蹤,目前出版。 你不再有 調試用戶的堆棧跟蹤,因爲 . txt相關文件的版本 在用戶的設備上。 還有其他的你的情況 . txt 文件可以被覆蓋,所以 確保您保存爲每一個版本的一個副本,你預測你要調試。

你如何保存 . txt 文件是你的決定。 例如,您可以重命名它們 包括版本和構建號,或者你可以連同你的源代碼進行版本控制 代碼。

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