ProGuard是一款免費(fèi)的Java類文件的壓縮、優(yōu)化、混肴器。它可以幫你刪除沒用的類,字段,方法與屬性,使字節(jié)碼最大程度地優(yōu)化,使用簡短且無意義的名字來重命名類、字段和方法 。目前eclipse已經(jīng)把Proguard集成在一起了,如果你需要單獨(dú)使用ProGuard的話,可以下載本軟件。
使用方法
1、準(zhǔn)備好你的jar包,我在這里舉例叫做test.jar。
2、解壓proguard,執(zhí)行 bin目錄下的proguardgui.bat。

3、運(yùn)行如圖,點(diǎn)擊左邊“input/output” 菜單

4、點(diǎn)擊右邊的“add input” 加入我們要混的jar包,test.jar
點(diǎn)擊右邊的“add output” 填入我們要輸出的jar包(命名隨便),這里我寫 test_out.jar。
注意輸出的jar包,要自己手工填寫。
5、添加支持庫,下邊的 “Library jars,wars,ears .....” 那個(gè)框框。點(diǎn)擊右邊的“add”。
說明一下,這里最好把你的myeclipse里java project里的libraries所有Library的jar包,copy到一個(gè)目錄,然后在這里加入這些jar包,myeclipse的環(huán)境支持jar包一般

6、做完以上步驟后,應(yīng)該如下圖4,這樣就差不多了

7、點(diǎn)擊“shrinking” ,設(shè)置成如圖5。(可根據(jù)需要設(shè)置,這里只是我的配置)

8、點(diǎn)擊“obfuscation” ,設(shè)置如圖6。(可根據(jù)需要設(shè)置,這里只是我的配置)

9、點(diǎn)擊“optimization” 設(shè)置如圖7。(可根據(jù)需要設(shè)置,這里只是我的配置)

10、點(diǎn)擊“process”,再點(diǎn)擊“save configuration”,在彈出的對話框中,輸入要保存的配置文件名稱(這里我的是test.pro),最后點(diǎn)擊“保存”。如圖8

至些圖形化的設(shè)置部分已經(jīng)完成。
11、最后,添加要保留的類與方法。
用編輯器編輯剛才保存下來的“test.pro”,用記事本什么都可以,打開后大致應(yīng)該是以下的樣子
-injars test.jar
-outjars test_out.jar
-libraryjars 'C:\Program Files
(x86)\Java\jdk1.6.0_10\jre\lib\rt.jar'
-libraryjars
lib\ant.jar
-libraryjars lib\aopalliance-1.0.jar
-libraryjars
lib\commons-dbcp-1.4.jar
-libraryjars
lib\commons-fileupload-1.2.1.jar
-libraryjars lib\commons-io-1.4.jar
.....設(shè)置的支持庫包,略
-dontskipnonpubliclibraryclassmembers
-dontshrink
-useuniqueclassmembernames
-keeppackagenames
-keepattributes
Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-keepparameternames
-ignorewarnings
....我們在這里加入要保持的類和方法,寫法如下,紅色部分是我們加的
-keep class org.bl.soa.components.constant.* {
public
<fields>;
public <methods>;
*** set*(***);
***
get*();
}
-keep class org.bl.hibernate.* {
public <fields>;
public
<methods>;
*** set*(***);
*** get*();
}
.....繼續(xù)加其他的要保留的類和方法,有多少寫多少。我是把test.jar里的所有類都加進(jìn)來。
....后面還一些自動生成的配置,不用管它們。
....略
12、寫完后,保存。
重新打開progrard,執(zhí)行 bin目錄下的proguardgui.bat。
點(diǎn)擊第一個(gè)選項(xiàng)“Proguard”,再點(diǎn)擊“Load configuration”,選擇我們剛才保存的“test.pro”進(jìn)行加載。

13、開始混代碼,點(diǎn)擊右邊“process”,再點(diǎn)擊“process!”,如下圖

14、在等待處理完成后,輸出的“test_out.jar”,就是混過的jar包,你可以用xjad反編看下效果。
15、如果在處理過程中有問題,一般會有提示,大部分一般都是缺少關(guān)聯(lián)類,如果少了相關(guān)類,在第7步的圖,把缺少的支持包加進(jìn)來就可以了。
使用注意
1、注意版本,如果不是項(xiàng)目需要,最好使用最新穩(wěn)定版本,這樣出錯(cuò)的機(jī)會小一些,學(xué)習(xí)曲線會明顯縮短。
2、最好以源碼的同編譯版本的jvm來啟動proguardgui.jar,不要直接用默認(rèn)的jvm打開。
3、注意proguaardgui啟動后默認(rèn)加載的libraryjar中包含的rt.jar,它的版本和你使用到的jvm版本一致。
4、使用1.4的jvm打開proguard時(shí),注意在optimization選項(xiàng)卡中,不要勾中keep enumerations選項(xiàng),因?yàn)楣粗羞@個(gè)選項(xiàng)會導(dǎo)致configration文件中出現(xiàn)java.lang.Enum,這個(gè)類只有在1.5的環(huán)境下才有。報(bào)錯(cuò)信息如下:
[proguard] Note: the configuration refers to the
unknown class 'java.lang.Enum'
[proguard] Note: there were 1 references to
unknown classes.
[proguard] You should check your configuration for
typos.
5、嵌入ant腳本時(shí),通常會有這么一段
<target name="proguard"
depends="init">
<taskdef resource="proguard/ant/task.properties"
classpath="${lib.dir}/proguard/proguard.jar" />
<proguard
configuration="${src.dir}/config.pro"
/>
</target>
task.properties在proguard.jar中,保留,config.pro是proguard的配置文件,最好使用proguardgui.jar先生成,然后再根據(jù)需求手動修改。
常見問題
1、conversion to dalvik format failed with error 1
網(wǎng)上主要有這幾種解決方案:
1、編輯eclipse項(xiàng)目下的.classpath文件,改為
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>即可
2、下載最新版本的proguard,替換android sdk下的tools\proguard(我用的就是這個(gè)方法解決的,我的android sdk是r20,其中帶的proguard是4.7的,我把它更新到4.8后就好了)
3、將tools\proguard\bin\proguard.bat文件中的call %java_exe% -jar
"%PROGUARD_HOME%"\lib\proguard.jar %×替換為:
call %java_exe% -jar
"%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8
%9(我也試了這種方式,不過當(dāng)時(shí)導(dǎo)致了另外一個(gè)錯(cuò)誤"Expecting class path separator ';' before ... in
argument number 7")
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版
















下載
下載
下載
下載 
下載
下載
下載
下載
uAPP Creator(安卓軟件制作工具)1.0.1 官方版
Java SE Development Kit 8 (JDK)v8.0.341 官方版
x64dbg(程序逆向反匯編修改神器)2022.07.27 簡體中文版
微信開發(fā)者工具小游戲版1.05.2204264 官方版
JetBrains DataGrip 2022 中文破解版221.5591.46 免費(fèi)版
JetBrains CLion 2022 破解版221.5080.224 中文免費(fèi)版
IntelliJ IDEA 2022.1 中文免費(fèi)版221.5080.210 破解版
JetBrains PhpStorm 2022.1中文破解版221.5080.224 免費(fèi)版
JetBrains Rider 2022.1.1 破解版221.5591.20 免費(fèi)版
JetBrains RubyMine 2022.1 破解版221.5080.196 中文免費(fèi)版
WebStorm2022破解版(WebStorm 2022.1)221.5080.193 免費(fèi)版
goland2022破解版(GoLand 2022.1中文版)221.5080.224 免費(fèi)版
pycharm2022破解版221.5080.212 中文免費(fèi)版
python3.10.4官方版最新版
matlab r2022a中文破解版9.12.0 免費(fèi)版
scala語言開發(fā)工具2.13.2 官方版
julia開發(fā)環(huán)境1.7.0 免費(fèi)版
rust開發(fā)環(huán)境1.56.1 官方版
ruby編譯器(Ruby+Devkit)3.0.2 官方免費(fèi)版
Komodo IDE 12 官方版12.0.1 最新版
aardio桌面軟件開發(fā)工具35.7.5 綠色最新版
慧編程電腦版5.4.0 最新版
編程貓定制課3.3.0 官方版
精易編程助手3.98 綠色免費(fèi)版
python3.8.5穩(wěn)定版免費(fèi)下載
ulang(木蘭編程語言)0.2.2官方免費(fèi)版
小碼精靈編程電腦客戶端1.12.0官方最新版
易語言5.9.0 免費(fèi)版
KRobot編程工具0.8.5 官方64位版


JetBrains PhpStorm 2017官方版2017.3.7 x6
易語言6.5完美破解版綠色免費(fèi)版
visual studio 2010 精簡版10.0.40219.1 sp
vb6.0 win10版(Visual Basic win10)中文企業(yè)
APPCode(附注冊碼)3.3 Windows破解版
Aqua Data Studio18中文最新版
delphi xe(Embarcadero Rad Studio XE)15.0
php一鍵安裝七件套(phpfind)1.4.5.2 官方安