Posted on 2011-08-24 14:39
oathleo 閱讀(2499)
評論(0) 編輯 收藏 所屬分類:
Android
<property name="proguard-home" value="D:/proguard4.4/lib"/>
<property name="android-jar" value="D:\android3.0\android-sdk_r12-windows\android-sdk-windows\platforms\android-8\android.jar"/>
//指定 proguard 地址和 android地址
<java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true">
<jvmarg value="-Dmaximum.inlined.code.length=32" />
<arg value="-injars ${target_temp_jar}" />
<arg value="-outjars ${target_jar}" />
//第三方包
<arg value="-libraryjars ${android-jar}" />
<arg value="-libraryjars lib/android_script.jar" />
<!-- <arg value="-libraryjars ${external-libs}/*.jar"/>-->
<arg value="-dontpreverify" />
<arg value="-dontoptimize" />
<arg value="-dontusemixedcaseclassnames" />
<arg value="-repackageclasses ''" />
<arg value="-allowaccessmodification" />
<!--保護public字段-->
<arg value="-keepclassmembers public class * { public protected *; }" />
<!--保護泛型-->
<arg value="-keepattributes Signature" />
<arg value="-keep public class com.xxxcore.*" />
<arg value="-keep public class com.xxxviewer.**" />
<arg value="-optimizationpasses 7" />
<arg value="-verbose" />
<arg value="-dontskipnonpubliclibraryclasses" />
<arg value="-dontskipnonpubliclibraryclassmembers" />
</java>
<signjar jar="${target_jar}" keystore="${sign.keystore}" alias="${sign.alias}" keypass="${sign.keypass}" storepass="${sign.storepass}"/>
<delete file="${target_temp_jar}" />
</target>
參數:
-include {filename} 從給定的文件中讀取配置參數
-basedirectory {directoryname} 指定基礎目錄為以后相對的檔案名稱
-injars {class_path} 指定要處理的應用程序jar,war,ear和目錄
-outjars {class_path} 指定處理完后要輸出的jar,war,ear和目錄的名稱
-libraryjars {classpath} 指定要處理的應用程序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選項的清單,標準輸出到給定的文件
壓縮
-dontshrink 不壓縮輸入的類文件
-printusage {filename}
-whyareyoukeeping {class_specification}
優化
-dontoptimize 不優化輸入的類文件
-assumenosideeffects {class_specification} 優化時假設指定的方法,沒有任何副作用
-allowaccessmodification 優化時允許訪問并修改有修飾符的類和類的成員
混淆
-dontobfuscate 不混淆輸入的類文件
-printmapping {filename}
-applymapping {filename} 重用映射增加混淆
-obfuscationdictionary {filename} 使用給定文件中的關鍵字作為要混淆方法的名稱
-overloadaggressively 混淆時應用侵入式重載
-useuniqueclassmembernames 確定統一的混淆類的成員名稱來增加混淆
-flattenpackagehierarchy {package_name} 重新包裝所有重命名的包并放在給定的單一包中
-repackageclass {package_name} 重新包裝所有重命名的類文件中放在給定的單一包中
-dontusemixedcaseclassnames 混淆時不會產生形形色色的類名
-keepattributes {attribute_name,
} 保護給定的可選屬性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.
-renamesourcefileattribute {string} 設置源文件中給定的字符串常量