代码混淆规则说明

-optimizationpasses 5                                                         # 指定代码的压缩级别 0 ~ 7
-dontusemixedcaseclassnames                                                   # 是否使用大小写混合A a
-dontskipnonpubliclibraryclasses                                              # 是否混淆第三方jar
-dontpreverify                                                                # 混淆时是否做预校验
-verbose                                                                      # 混淆时是否记录日志
-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.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 com.android.vending.licensing.ILicensingService            # 保持哪些类不被混淆

-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;                                                          # 保持自己定义的类不被混淆

 

上一篇:Android 代码混淆 混淆方案


下一篇:【题解】801. 使序列递增的最小交换次数