android 通用混淆配置(早期)

通用混淆配置



#-ignorewarnings                     # 忽略警告,避免打包時某些警告出現
-optimizationpasses 5               # 指定代碼的壓縮級別
-dontusemixedcaseclassnames         # 是否使用大小寫混合 混淆時不會產生形形色色的類名
-dontskipnonpubliclibraryclasses    # 是否混淆第三方jar
-dontpreverify                      # 混淆時是否做預校驗
-verbose                            # 混淆時是否記錄日志
-dontoptimize                       # 不優化輸入的類文件

-keepattributes *Annotation*, SourceFile, InnerClasses, LineNumberTable, Signature, EnclosingMethod
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*    #優化 混淆時采用的算法

-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.app.View
-keep public class * extends android.app.IntentService
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.hardware.display.DisplayManager
-keep public class * extends android.os.UserManager
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.app.Fragment

-keep public class * extends android.support.v4.widget
-keep public class * extends android.support.v4.**    #  *匹配任意字符不包括.  **匹配任意字符
-keep interface android.support.v4.app.** { *; }    #{ *;}    表示一個類中的所有的東西
-keep class android.support.v4.** { *; }        # 保持一個完整的包不被混淆
-keep class android.os.**{*;}

-keep class **.R$* { *; }
-keep class **.R{ *; }

#實現了android.os.Parcelable接口類的任何類,以及其內部定義的Creator內部類類型的public final靜態成員變量,都不能被混淆和刪除
-keep class * implements android.os.Parcelable {    # 保持Parcelable不被混淆
  public static final android.os.Parcelable$Creator *;
}

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

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

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

-keepclasseswithmembers class * {
  public (android.content.Context, android.util.AttributeSet, int, int);
}

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

-keepclassmembers class * extends android.content.Context {
  public void *(android.view.View);
  public void *(android.view.MenuItem);
}

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

# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
-keepnames class * implements java.io.Serializable

-keepclassmembers class * implements java.io.Serializable {
  static final long serialVersionUID;
  private static final java.io.ObjectStreamField[] serialPersistentFields;
  private void writeObject(java.io.ObjectOutputStream);
  private void readObject(java.io.ObjectInputStream);
  java.lang.Object writeReplace();
  java.lang.Object readResolve();
}

-libraryjars   libs/treecore.jar   #缺省proguard 會檢查每一個引用是否正確,但是第三方庫里面往往有些不會用到的類,沒有正確引用。如果不配置的話,系統就會報錯。
-dontwarn android.support.v4.**
-dontwarn android.os.**

##############################--------以上是Android基本配置----------##############################
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容