Sunday, July 31, 2011

關於程式碼混淆proguard

在了解程式碼混淆前(官方翻譯成模糊程式碼),
建議可以先去觀看漁郎的教學


在了解程式碼混淆前,
也許你會問我︰「為什麼我要學程式碼混淆?」
很簡單,答案如下︰
1.讓使用反編譯工具想看你程式碼的人,閱讀你的程式碼更困難
2.優化你的程式,節省空間

如果你的開發版本在Android2.3以前
那麼Proguard的使用方式是”手動”混亂你的程式碼
請在你的專案目錄底下,打上︰
android update project -p E:\_Eclipse-3.5.2\workspace\Wallpaper -t 8
或在那個專案目錄下鍵入android update project -p ./ -t android-8
其中-t 8指的是即將編譯的Android版本編號
8代表要編譯成Goole Map + Android2.2以上用的Application
android-8 代表要編譯成Android2.2以上用的Application
灰色字體取決於你是否在當下目錄,
若在當下目錄使用proguard,那麼灰色字體就是打上「./」
當完這行指令後,
你的螢幕會變成以下︰
意思是説,己經在這個專案底下加入build.xml檔和proguard.cfg檔了

回到Eclipse環境中,對你的專案按下F5重整,
你就會看到這2個檔案。

在Eclipse專案下default.properties裡面
應該要有這2行︰
target=android-8(代表在2.2執行)
proguard.config=proguard.cfg(指定混淆腳本是被放在這個專案的根目錄)

如果build.xml出錯,
回報我找不到help文檔,
那麼把xml標籤的defualt="help"刪了吧。

此時將application export出來,
應該會多一個proguard目錄才對。
如果做完apk後,
按了F5這個目錄都沒出來,
代表你並沒有混淆成功。

註︰
-t 8 不可能打成 -t 9,
為什麼呢?
Android在2.3後(版本代號9),
正式將ProGuard納入了SDK,
所以如果你是在2.3環境開發時,
不用再打上面那行指令。
現在這行指令只會在2.2(含)以下需要了。

更詳細的內容,
請參閱於Android2.3推出的Proguard文檔

下一篇︰

無法混淆的相關問題

相關文章︰

No comments: