android 操蛋的gradle

首先看語法:java

-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}    設置源文件中給定的字符串常量

來個實例:android

-ignorewarnings                        # 忽略警告,避免打包時某些警告出現
-optimizationpasses 5                # 指定代碼的壓縮級別
-dontusemixedcaseclassnames            # 是否使用大小寫混合
-dontskipnonpubliclibraryclasses    # 是否混淆第三方jar
-dontpreverify                      # 混淆時是否作預校驗
-verbose                            # 混淆時是否記錄日誌
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        # 混淆時所採用的算法

-libraryjars   libs/treecore.jar

-dontwarn android.support.v4.**     #缺省proguard 會檢查每個引用是否正確,可是第三方庫裏面每每有些不會用到的類,沒有正確引用。若是不配置的話,系統就會報錯。
-dontwarn android.os.**
-keep class android.support.v4.** { *; }         # 保持哪些類不被混淆
-keep class com.baidu.** { *; }  
-keep class vi.com.gdi.bgl.android.**{*;}
-keep class android.os.**{*;}

-keep interface android.support.v4.app.** { *; }  
-keep public class * extends android.support.v4.**  
-keep public class * extends android.app.Fragment

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.support.v4.widget
-keep public class * extends com.sqlcrypt.database
-keep public class * extends com.sqlcrypt.database.sqlite
-keep public class * extends com.treecore.**
-keep public class * extends de.greenrobot.dao.**


-keepclasseswithmembernames class * {        # 保持 native 方法不被混淆
    native <methods>;
}

-keepclasseswithmembers class * {             # 保持自定義控件類不被混淆
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {             # 保持自定義控件類不被混淆
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity { //保持類成員
   public void *(android.view.View);
}

-keepclassmembers enum * {                    # 保持枚舉 enum 類不被混淆
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {    # 保持 Parcelable 不被混淆
  public static final android.os.Parcelable$Creator *;
}

-keep class MyClass;                              # 保持本身定義的類不被混淆
相關文章
相關標籤/搜索