小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

主題:Proguard 簡述

 鬧海魚兒 2012-07-06

ProGuard是一個免費的java類文件壓縮,優(yōu)化,混淆器.它探測并刪除沒有使用的類,字段,方法和屬性.它刪除沒有用的說明并使用字節(jié)碼得到最大優(yōu)化.它使用無意義的名字來重命名類,字段和方法.
 
ProGuard的使用是為了:
 
1.創(chuàng)建緊湊的代碼文檔是為了更快的網(wǎng)絡(luò)傳輸,快速裝載和更小的內(nèi)存占用.
2.創(chuàng)建的程序和程序庫很難使用反向工程.
3.所以它能刪除來自源文件中的沒有調(diào)用的代碼
4.充分利用java6的快速加載的優(yōu)點來提前檢測和返回java6中存在的類文件.
 
參數(shù):
 
-include {filename}    從給定的文件中讀取配置參數(shù)
 
-basedirectory {directoryname}    指定基礎(chǔ)目錄為以后相對的檔案名稱
 
-injars {class_path}    指定要處理的應(yīng)用程序jar,war,ear和目錄
 
-outjars {class_path}    指定處理完后要輸出的jar,war,ear和目錄的名稱
 
-libraryjars {classpath}    指定要處理的應(yīng)用程序jar,war,ear和目錄所需要的程序庫文件
 
-dontskipnonpubliclibraryclasses    指定不去忽略非公共的庫類。
 
-dontskipnonpubliclibraryclassmembers    指定不去忽略包可見的庫類的成員。
 
 
保留選項
-keep {Modifier} {class_specification}    保護指定的類文件和類的成員
 
-keepclassmembers {modifier} {class_specification}    保護指定類的成員,如果此類受到保護他們會保護的更好
 
-keepclasseswithmembers {class_specification}    保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。
 
-keepnames {class_specification}    保護指定的類和類的成員的名稱(如果他們不會壓縮步驟中刪除)
 
-keepclassmembernames {class_specification}    保護指定的類的成員的名稱(如果他們不會壓縮步驟中刪除)
 
-keepclasseswithmembernames {class_specification}    保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之后)
 
-printseeds {filename}    列出類和類的成員-keep選項的清單,標(biāo)準(zhǔn)輸出到給定的文件
 
壓縮
-dontshrink    不壓縮輸入的類文件
 
-printusage {filename}
 
-whyareyoukeeping {class_specification}    
 
優(yōu)化
-dontoptimize    不優(yōu)化輸入的類文件
 
-assumenosideeffects {class_specification}    優(yōu)化時假設(shè)指定的方法,沒有任何副作用
 
-allowaccessmodification    優(yōu)化時允許訪問并修改有修飾符的類和類的成員
 
混淆
-dontobfuscate    不混淆輸入的類文件
 
-printmapping {filename}
 
-applymapping {filename}    重用映射增加混淆
 
-obfuscationdictionary {filename}    使用給定文件中的關(guān)鍵字作為要混淆方法的名稱
 
-overloadaggressively    混淆時應(yīng)用侵入式重載
 
-useuniqueclassmembernames    確定統(tǒng)一的混淆類的成員名稱來增加混淆
 
-flattenpackagehierarchy {package_name}    重新包裝所有重命名的包并放在給定的單一包中
 
-repackageclass {package_name}    重新包裝所有重命名的類文件中放在給定的單一包中
 
-dontusemixedcaseclassnames    混淆時不會產(chǎn)生形形色色的類名
 
-keepattributes {attribute_name,...}    保護給定的可選屬性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.
 
-renamesourcefileattribute {string}    設(shè)置源文件中給定的字符串常量

因為我們開發(fā)的是webwork+spring+hibernate的架構(gòu)的項目,所有需要很詳細(xì)的配置。(經(jīng)過n次失敗后總結(jié))

Example:

    -injars <project>.jar

    -outjars <project>_out.jar

    -libraryjars <java.home>/lib/rt.jar

    -libraryjars <project.home>/webroot/WEB-INF/lib/webwork.jar

    .......

    # 保留實現(xiàn)Action接口類中的公有的,友好的,私有的屬性 和 公有的,友好的方法。其它的全部壓縮,優(yōu)化,混淆。

    # 因為配置文件中的類名是一個完整的類名,如果經(jīng)過處理后就有可能找不到這個類。

    # 屬性是jsp頁面所需要的,如果經(jīng)過處理jsp頁面就無法得到action中的數(shù)據(jù)。

    -keep public class * implements com.opensymphony.xwork.Action{

        public protected private <fields>;

        public protected <methods>;

    }

 

    # 保留實現(xiàn)了Serializable接口類中的公有的,友好的,私有的成員(屬性和方法)

    # 這個配置主要是對應(yīng)實體類的配置。

    -keep public class * implements java.io.Serializable{

        public protected private *;

    }

    ......

   # 關(guān)于配置的解釋已說了很多了,下面的配置自已可以嘗試。

然后在命行端輸入:proguard @配置文件

(proguard是我自已寫的批處理,你也可以自已寫一下。)

 

總結(jié):

    proguard在處理web application方面還行,但不是很完美。如果的框架設(shè)計的不是很好的話配置加多不說,處理效果也是很好。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多