|
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