1- # Add project specific ProGuard rules here.
2- # By default, the flags in this file are appended to flags specified
3- # in /Users/cailiming/Library/Android/sdk/tools/proguard/proguard-android.txt
4- # You can edit the include path and order by changing the proguardFiles
5- # directive in build.gradle.
6- #
7- # For more details, see
8- # http://developer.android.com/guide/developing/tools/proguard.html
9-
10- # Add any project specific keep options here:
11-
12- # If your project uses WebView with JS, uncomment the following
13- # and specify the fully qualified class name to the JavaScript interface
14- # class:
15- #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16- # public *;
17- #}
1+ -optimizationpasses 5 #指定代码的压缩级别
2+ -dontusemixedcaseclassnames #包名不混合大小写
3+ -dontskipnonpubliclibraryclasses #不忽略非公共库类
4+ -dontoptimize #不优化输入的类文件
5+ -dontpreverify #不预校验
6+ -verbose #混淆时是否记录日志
7+ -ignorewarning #忽略警告
8+
9+ #混淆时所采用的算法
10+ -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
11+
12+ #apk包内所有class的内部结构
13+ -dump dump.txt
14+ #未混淆的类和成员
15+ -printseeds seeds.txt
16+ #列出被删除的代码
17+ -printusage unused.txt
18+ #混淆前后的映射
19+ -printmapping mapping.txt
20+
21+ #Android组件
22+ -keep public class * extends android.app.Fragment
23+ -keep public class * extends android.app.Activity
24+ -keep public class * extends android.app.Application
25+ -keep public class * extends android.app.Service
26+ -keep public class * extends android.content.BroadcastReceiver
27+ -keep public class * extends android.content.ContentProvider
28+ -keep public class * extends android.app.backup.BackupAgentHelper
29+ -keep public class * extends android.preference.Preference
30+ -keep public class com.android.vending.licensing.ILicensingService
31+
32+ #不混淆资源类
33+ -keepclassmembers class **.R$* {
34+ public static <fields>;
35+ }
36+
37+ #保持控件构造器不被混淆
38+ -keep public class * extends android.view.View {
39+ public <init>(android.content.Context);
40+ public <init>(android.content.Context, android.util.AttributeSet);
41+ public <init>(android.content.Context, android.util.AttributeSet, int);
42+ public void set*(...);
43+ }
44+
45+ #保持自定义控件类不被混淆
46+ -keepclasseswithmembers class * {
47+ public <init>(android.content.Context, android.util.AttributeSet);
48+ public <init>(android.content.Context, android.util.AttributeSet, int);
49+ }
50+
51+ #保持 native 方法不被混淆
52+ -keepclasseswithmembernames class * {
53+ native <methods>;
54+ }
55+
56+ # 保持枚举 enum 类不被混淆
57+ -keepclassmembers enum * {
58+ public static **[] values();
59+ public static ** valueOf(java.lang.String);
60+ }
61+
62+ #保持 Parcelable 不被混淆
63+ -keep class * implements android.os.Parcelable {
64+ public static final android.os.Parcelable$Creator *;
65+ }
66+
67+ #保持 Serializable 不被混淆
68+ -keepclassmembers class * implements java.io.Serializable {
69+ static final long serialVersionUID;
70+ private static final java.io.ObjectStreamField[] serialPersistentFields;
71+ !static !transient <fields>;
72+ !private <fields>;
73+ !private <methods>;
74+ private void writeObject(java.io.ObjectOutputStream);
75+ private void readObject(java.io.ObjectInputStream);
76+ java.lang.Object writeReplace();
77+ java.lang.Object readResolve();
78+ }
79+
80+ #避免混淆泛型
81+ -keepattributes Signature
82+ -keepattributes *JavascriptInterface*
83+ -keepattributes *Annotation*
84+
85+ #保护第三方jar包
86+ #-libraryjars libs/xx.jar
87+
88+ #如果引用了v4或者v7包
89+ -dontwarn android.support.**
90+ -keep class android.support.v4.** {
91+ *;
92+ }
93+ -keep class android.support.v7.** {
94+ *;
95+ }
96+
97+ # 保护PluginCore不受混淆影响 Begin
98+ -keep public class * extends android.app.Instrumentation {public *;}#必须
99+ -keep public class com.plugin.core.annotation.** {*;}#可选
100+ -keep public class com.plugin.core.PluginThemeHelper {*;}#可选
101+ -keep public class com.plugin.core.localservice.LocalServiceManager {*;}#可选
102+ -keep public class com.plugin.util.LogUtil {*;}#可选
103+ -keep public class com.plugin.util.NotificationHelper {*;}#可选
104+ # 保护PluginCore不受混淆影响 End
0 commit comments