在A(yíng)ndroid SDK中自帶有proguard代碼混淆器,但在默認的情況下該混淆器是沒(méi)有打開(kāi)的。該混淆器在SDK中的路徑是android-sdk-windows\tools\proguard
啟動(dòng)android-sdk-windows\tools\proguard\lib\proguardgui.jar可以使用獨立UI的proguard。
ProGuard是一個(gè)免費的java類(lèi)文件壓縮,優(yōu)化,混淆器.它探測并刪除沒(méi)有使用的類(lèi),字段,方法和屬性.它刪除沒(méi)有用的說(shuō)明并使用字節碼得到最大優(yōu)化.它使用無(wú)意義的名字來(lái)重命名類(lèi),字段和方法.
ProGuard的使用是為了:
1.創(chuàng )建緊湊的代碼文檔是為了更快的網(wǎng)絡(luò )傳輸,快速裝載和更小的內存占用.
2.創(chuàng )建的程序和程序庫很難使用反向工程.
3.所以它能刪除來(lái)自源文件中的沒(méi)有調用的代碼
4.充分利用java6的快速加載的優(yōu)點(diǎn)來(lái)提前檢測和返回java6中存在的類(lèi)文件.
Eclipse中使用proguard的方法如下:
1.啟動(dòng)代碼混淆功能
新建Android項目工程里面默認是帶有proguard.cfg的代碼混淆配置文件,如果沒(méi)有請從其它項目中copy一個(gè)過(guò)來(lái)。代碼混淆功能默認是沒(méi)有啟動(dòng)這個(gè)配置的,需要手動(dòng)地在項目根目錄default.properties文件里面添加指定這個(gè)配置文件如下:
由于在 Debug下,不可能會(huì )有人會(huì )混淆代碼,因此這只在release中有效。使用簽名和無(wú)簽名的方式都可以發(fā)布APK包。
這時(shí)候生成的apk,我發(fā)現是比debug版本(\bin目錄下面)的要小。
二、 反編譯方法
反編譯APK包步驟如下:
1.使用 dex2jar 把apk中的dex轉為jar,解壓apk得到classed.dex,執行下面的命令:
D:\dex2jar-0.0.7.7-SNAPSHOT>dex2jar.bat classes.dex
生成classes.dex.dex2jar.jar
2.用 jd-gui 進(jìn)行反編譯查看classes.dex.dex2jar.jar包,如下圖。
聯(lián)系客服