Java檔案壓縮最佳化工具(ProGuard) 軟體介紹 Soft content

來源:互聯網
上載者:User

標籤:

ProGuard是一款免費的Java類檔案的壓縮、最佳化、混肴器。它可以幫你刪除沒用的類,欄位,方法與屬性,使位元組碼最大程度地最佳化,使用簡短且無意義的名字來重新命名類、欄位和方法 。目前eclipse已經把Proguard整合在一起了,如果你需要單獨使用ProGuard的話,可以下載本軟體。

使用方法

1、準備好你的jar包,我在這裡舉例叫做test.jar。

2、解壓proguard,執行 bin目錄下的proguardgui.bat。

3、運行,點擊左邊“input/output” 菜單

4、點擊右邊的“add input” 加入我們要混的jar包,test.jar

點擊右邊的“add output” 填入我們要輸出的jar包(命名隨便),這裡我寫 test_out.jar。

注意輸出的jar包,要自己手工填寫。

5、添加支援庫,下邊的 “Library jars,wars,ears .....” 那個框框。點擊右邊的“add”。

說明一下,這裡最好把你的myeclipse裡java project裡的libraries所有Library的jar包,copy到一個目錄,然後在這裡加入這些jar包,myeclipse的環境支援jar包一般

6、做完以上步驟後,應該如4,這樣就差不多了

7、點擊“shrinking” ,設定成5。(可根據需要設定,這裡只是我的配置)

8、點擊“obfuscation” ,設定6。(可根據需要設定,這裡只是我的配置)

9、點擊“optimization” 設定7。(可根據需要設定,這裡只是我的配置)

10、點擊“process”,再點擊“save configuration”,在彈出的對話方塊中,輸入要儲存的設定檔名稱(這裡我的是test.pro),最後點擊“儲存”。8

至些圖形化的設定部分已經完成。

11、最後,添加要保留的類與方法。

 用編輯器編輯剛才儲存下來的“test.pro”,用記事本什麼都可以,開啟後大致應該是以下的樣子

-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

.....設定的支援庫包,略

-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 ;
    public ;
    *** set*(***);
    *** get*();

}

-keep class org.bl.hibernate.* {
    public ;
    public ;
    *** set*(***);
    *** get*();
}

 

--antyi modify 20150504方法不混淆(注意版命名的包名寫全android.content.Context):

-keepclasseswithmembers public class *com.typlugin.api.Actions {
public static void start(android.content.Context,java.lang.String);
}

 

.....繼續加其他的要保留的類和方法,有多少寫多少。我是把test.jar裡的所有類都加進來。

....後面還一些自動產生的配置,不用管它們。

....略

12、寫完後,儲存。

重新開啟progrard,執行 bin目錄下的proguardgui.bat。

點擊第一個選項“Proguard”,再點擊“Load configuration”,選擇我們剛才儲存的“test.pro”進行載入。

13、開始混代碼,點擊右邊“process”,再點擊“process!”,如

14、在等待處理完成後,輸出的“test_out.jar”,就是混過的jar包,你可以用xjad反編看下效果。

15、如果在處理過程中有問題,一般會有提示,大部分一般都是缺少關聯類別,如果少了相關類,在第7步的圖,把缺少的支援包加進來就可以了。

使用注意

1、注意版本,如果不是項目需要,最好使用最新穩定版本,這樣出錯的機會小一些,學習曲線會明顯縮短。

2、最好以源碼的同編譯版本的jvm來啟動proguardgui.jar,不要直接用預設的jvm開啟。

3、注意proguaardgui啟動後預設載入的libraryjar中包含的rt.jar,它的版本和你使用到的jvm版本一致。

4、使用1.4的jvm開啟proguard時,注意在optimization選項卡中,不要勾中keep enumerations選項,因為勾中這個選項會導致configration檔案中出現java.lang.Enum,這個類只有在1.5的環境下才有。報錯資訊如下:

 [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指令碼時,通常會有這麼一段

       
       

task.properties在proguard.jar中,保留,config.pro是proguard的設定檔,最好使用proguardgui.jar先產生,然後再根據需求手動修改。

常見問題

1、conversion to dalvik format failed with error 1 

網上主要有這幾種解決方案: 

1、編輯eclipse項目下的.classpath檔案,改為 

即可 

2、下載最新版本的proguard,替換android sdk下的tools\proguard(我用的就是這個方法解決的,我的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(我也試了這種方式,不過當時導致了另外一個錯誤"Expecting class path separator ‘;‘ before ... in argument number 7") 

Java檔案壓縮最佳化工具(ProGuard) 軟體介紹 Soft content

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.