|
1 | 1 | # Add project specific ProGuard rules here. |
2 | 2 | # By default, the flags in this file are appended to flags specified |
3 | | -# in D:\Android\sdk/tools/proguard/proguard-android.txt |
| 3 | +# in /Users/lihui/work/AndroidStudio/sdk/tools/proguard/proguard-android.txt |
4 | 4 | # You can edit the include path and order by changing the proguardFiles |
5 | 5 | # directive in build.gradle. |
6 | 6 | # |
|
15 | 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { |
16 | 16 | # public *; |
17 | 17 | #} |
18 | | - |
| 18 | +#实体类不要混淆不然无法解析 |
19 | 19 | -keep class com.aries.library.fast.demo.base.**{*;} |
20 | | --keep class com.aries.library.fast.demo.entity.**{*;} |
21 | | -## |
22 | | -##-------------------------------------------基本不用动区域---------------------------------------------- |
23 | | -## |
24 | | -## |
25 | | -## -----------------------------基本 ----------------------------- |
26 | | -## |
27 | | -# |
28 | | -## 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。) |
29 | | -#-optimizationpasses 5 |
30 | | -## 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名) |
31 | | -#-dontusemixedcaseclassnames |
32 | | -## 指定不去忽略非公共的库类(不跳过library中的非public的类) |
33 | | -#-dontskipnonpubliclibraryclasses |
34 | | -## 指定不去忽略包可见的库类的成员 |
35 | | -#-dontskipnonpubliclibraryclassmembers |
36 | | -##不进行优化,建议使用此选项, |
37 | | -#-dontoptimize |
38 | | -# # 不进行预校验,Android不需要,可加快混淆速度。 |
39 | | -#-dontpreverify |
40 | | -## 屏蔽警告 |
41 | | -#-ignorewarnings |
42 | | -## 指定混淆是采用的算法,后面的参数是一个过滤器 |
43 | | -## 这个过滤器是谷歌推荐的算法,一般不做更改 |
44 | | -#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* |
45 | | -## 保护代码中的Annotation不被混淆 |
46 | | -#-keepattributes *Annotation* |
47 | | -## 避免混淆泛型, 这在JSON实体映射时非常重要 |
48 | | -#-keepattributes Signature |
49 | | -## 抛出异常时保留代码行号 |
50 | | -#-keepattributes SourceFile,LineNumberTable |
51 | | -# #优化时允许访问并修改有修饰符的类和类的成员,这可以提高优化步骤的结果。 |
52 | | -## 比如,当内联一个公共的getter方法时,这也可能需要外地公共访问。 |
53 | | -## 虽然java二进制规范不需要这个,要不然有的虚拟机处理这些代码会有问题。当有优化和使用-repackageclasses时才适用。 |
54 | | -##指示语:不能用这个指令处理库中的代码,因为有的类和类成员没有设计成public ,而在api中可能变成public |
55 | | -#-allowaccessmodification |
56 | | -##当有优化和使用-repackageclasses时才适用。 |
57 | | -#-repackageclasses '' |
58 | | -# # 混淆时记录日志(打印混淆的详细信息) |
59 | | -# # 这句话能够使我们的项目混淆后产生映射文件 |
60 | | -# # 包含有类名->混淆后类名的映射关系 |
61 | | -#-verbose |
62 | | - |
63 | | -# |
64 | | -# ----------------------------- 默认保留 ----------------------------- |
65 | | -# |
66 | | -#---------------------------------------------------- |
67 | | -# 保持哪些类不被混淆 |
68 | | -#继承activity,application,service,broadcastReceiver,contentprovider....不进行混淆 |
69 | | -#-keep public class * extends android.app.Activity |
70 | | -#-keep public class * extends android.app.Application |
71 | | -#-keep public class * extends android.support.multidex.MultiDexApplication |
72 | | -#-keep public class * extends android.app.Service |
73 | | -#-keep public class * extends android.content.BroadcastReceiver |
74 | | -#-keep public class * extends android.content.ContentProvider |
75 | | -#-keep public class * extends android.app.backup.BackupAgentHelper |
76 | | -#-keep public class * extends android.preference.Preference |
77 | | -#-keep public class * extends android.view.View |
78 | | -# |
79 | | -#-keep public class com.google.vending.licensing.ILicensingService |
80 | | -#-keep public class com.android.vending.licensing.ILicensingService |
81 | | -#表示不混淆上面声明的类,最后这两个类我们基本也用不上,是接入Google原生的一些服务时使用的。 |
82 | | -#---------------------------------------------------- |
| 20 | +-keep class com.aries.library.fast.demo.entity.**{*;} |
83 | 21 |
|
84 | 22 | # |
85 | | -##表示不混淆任何包含native方法的类的类名以及native方法名,这个和我们刚才验证的结果是一致 |
86 | | -#-keepclasseswithmembernames class * { |
87 | | -# native <methods>; |
88 | | -#} |
89 | | -# |
90 | | -# |
91 | | -##这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆 |
92 | | -##表示不混淆Activity中参数是View的方法,因为有这样一种用法,在XML中配置android:onClick=”buttonClick”属性, |
93 | | -##当用户点击该按钮时就会调用Activity中的buttonClick(View view)方法,如果这个方法被混淆的话就找不到了 |
94 | | -#-keepclassmembers class * extends android.app.Activity{ |
95 | | -# public void *(android.view.View); |
96 | | -#} |
97 | | -# |
98 | | -##表示不混淆枚举中的values()和valueOf()方法,枚举我用的非常少,这个就不评论了 |
99 | | -#-keepclassmembers enum * { |
100 | | -# public static **[] values(); |
101 | | -# public static ** valueOf(java.lang.String); |
102 | | -#} |
103 | | -# |
104 | | -##表示不混淆任何一个View中的setXxx()和getXxx()方法, |
105 | | -##因为属性动画需要有相应的setter和getter的方法实现,混淆了就无法工作了。 |
106 | | -#-keep public class * extends android.view.View{ |
107 | | -# *** get*(); |
108 | | -# void set*(***); |
109 | | -# public <init>(android.content.Context); |
110 | | -# public <init>(android.content.Context, android.util.AttributeSet); |
111 | | -# public <init>(android.content.Context, android.util.AttributeSet, int); |
112 | | -#} |
113 | | -#-keepclasseswithmembers class * { |
114 | | -# public <init>(android.content.Context, android.util.AttributeSet); |
115 | | -# public <init>(android.content.Context, android.util.AttributeSet, int); |
116 | | -#} |
117 | | -# |
118 | | -##表示不混淆Parcelable实现类中的CREATOR字段, |
119 | | -##毫无疑问,CREATOR字段是绝对不能改变的,包括大小写都不能变,不然整个Parcelable工作机制都会失败。 |
120 | | -#-keep class * implements android.os.Parcelable { |
121 | | -# public static final android.os.Parcelable$Creator *; |
122 | | -#} |
123 | | -## 这指定了继承Serizalizable的类的如下成员不被移除混淆 |
124 | | -#-keepclassmembers class * implements java.io.Serializable { |
125 | | -# static final long serialVersionUID; |
126 | | -# private static final java.io.ObjectStreamField[] serialPersistentFields; |
127 | | -# private void writeObject(java.io.ObjectOutputStream); |
128 | | -# private void readObject(java.io.ObjectInputStream); |
129 | | -# java.lang.Object writeReplace(); |
130 | | -# java.lang.Object readResolve(); |
131 | | -#} |
132 | | -## 保留R下面的资源 |
133 | | -##-keep class **.R$* { |
134 | | -## *; |
135 | | -##} |
136 | | -##不混淆资源类下static的 |
137 | | -#-keepclassmembers class **.R$* { |
138 | | -# public static <fields>; |
139 | | -#} |
140 | | -# |
141 | | -## 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆 |
142 | | -#-keepclassmembers class * { |
143 | | -# void *(**On*Event); |
144 | | -# void *(**On*Listener); |
145 | | -#} |
146 | | -# |
147 | | -## 保留我们自定义控件(继承自View)不被混淆 |
148 | | -#-keep public class * extends android.view.View{ |
149 | | -# *** get*(); |
150 | | -# void set*(***); |
151 | | -# public <init>(android.content.Context); |
152 | | -# public <init>(android.content.Context, android.util.AttributeSet); |
153 | | -# public <init>(android.content.Context, android.util.AttributeSet, int); |
154 | | -#} |
155 | | -# |
156 | | -## |
157 | | -##----------------------------- WebView(项目中没有可以忽略) ----------------------------- |
158 | | -## |
159 | | -##webView需要进行特殊处理 |
160 | | -#-keepclassmembers class fqcn.of.javascript.interface.for.Webview { |
161 | | -# public *; |
162 | | -#} |
163 | | -#-keepclassmembers class * extends android.webkit.WebViewClient { |
164 | | -# public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); |
165 | | -# public boolean *(android.webkit.WebView, java.lang.String); |
166 | | -#} |
167 | | -#-keepclassmembers class * extends android.webkit.WebViewClient { |
168 | | -# public void *(android.webkit.WebView, jav.lang.String); |
169 | | -#} |
| 23 | +#-------------------------------------------基本不用动区域---------------------------------------------- |
170 | 24 | # |
171 | | -## |
172 | | -## ----------------------------- 其他的 ----------------------------- |
173 | | -## |
174 | | -## 删除代码中Log相关的代码 |
175 | | -#-assumenosideeffects class android.util.Log { |
176 | | -# public static boolean isLoggable(java.lang.String, int); |
177 | | -# public static int v(...); |
178 | | -# public static int i(...); |
179 | | -# public static int w(...); |
180 | | -# public static int d(...); |
181 | | -# public static int e(...); |
182 | | -#} |
183 | | -# |
184 | | -## 保持测试相关的代码 |
185 | | -#-dontnote junit.framework.** |
186 | | -#-dontnote junit.runner.** |
187 | | -#-dontwarn android.test.** |
188 | | -#-dontwarn android.support.test.** |
189 | | -#-dontwarn org.junit.** |
190 | 25 | # |
| 26 | +# -----------------------------基本 ----------------------------- |
191 | 27 | # |
192 | | -## |
193 | | -## ----------------------------- 第三方 ----------------------------- |
194 | | -## |
195 | | -#-dontwarn com.orhanobut.logger.** |
196 | | -#-keep class com.orhanobut.logger.**{*;} |
197 | | -#-keep interface com.orhanobut.logger.**{*;} |
198 | | -# |
199 | | -#-dontwarn com.google.gson.** |
200 | | -#-keep class com.google.gson.**{*;} |
201 | | -#-keep interface com.google.gson.**{*;} |
202 | | -## 。。。。。。 |
| 28 | + |
| 29 | +# 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。) |
| 30 | +-optimizationpasses 5 |
| 31 | +# 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名) |
| 32 | +-dontusemixedcaseclassnames |
| 33 | +# 指定不去忽略非公共的库类(不跳过library中的非public的类) |
| 34 | +-dontskipnonpubliclibraryclasses |
| 35 | +# 指定不去忽略包可见的库类的成员 |
| 36 | +-dontskipnonpubliclibraryclassmembers |
| 37 | +#不进行优化,建议使用此选项, |
| 38 | +-dontoptimize |
| 39 | + # 不进行预校验,Android不需要,可加快混淆速度。 |
| 40 | +-dontpreverify |
| 41 | +# 屏蔽警告 |
| 42 | +-ignorewarnings |
| 43 | +# 指定混淆是采用的算法,后面的参数是一个过滤器 |
| 44 | +# 这个过滤器是谷歌推荐的算法,一般不做更改 |
| 45 | +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* |
| 46 | +# 保护代码中的Annotation不被混淆 |
| 47 | +-keepattributes *Annotation* |
| 48 | +# 避免混淆泛型, 这在JSON实体映射时非常重要 |
| 49 | +-keepattributes Signature |
| 50 | +# 抛出异常时保留代码行号 |
| 51 | +-keepattributes SourceFile,LineNumberTable |
| 52 | + #优化时允许访问并修改有修饰符的类和类的成员,这可以提高优化步骤的结果。 |
| 53 | +# 比如,当内联一个公共的getter方法时,这也可能需要外地公共访问。 |
| 54 | +# 虽然java二进制规范不需要这个,要不然有的虚拟机处理这些代码会有问题。当有优化和使用-repackageclasses时才适用。 |
| 55 | +#指示语:不能用这个指令处理库中的代码,因为有的类和类成员没有设计成public ,而在api中可能变成public |
| 56 | +-allowaccessmodification |
| 57 | +#当有优化和使用-repackageclasses时才适用。 |
| 58 | +-repackageclasses '' |
| 59 | + # 混淆时记录日志(打印混淆的详细信息) |
| 60 | + # 这句话能够使我们的项目混淆后产生映射文件 |
| 61 | + # 包含有类名->混淆后类名的映射关系 |
| 62 | +-verbose |
0 commit comments