|
15 | 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
16 | 16 | # public *;
|
17 | 17 | #}
|
| 18 | + |
| 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 | +#---------------------------------------------------- |
| 83 | + |
| 84 | +# |
| 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 | +#} |
| 170 | +# |
| 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 | +# |
| 191 | +# |
| 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 | +## 。。。。。。 |
0 commit comments