proguard-rules.pro 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. # Add project specific ProGuard rules here.
  2. # You can control the set of applied configuration files using the
  3. # proguardFiles setting in build.gradle.
  4. #
  5. # For more details, see
  6. # http://developer.android.com/guide/developing/tools/proguard.html
  7. # If your project uses WebView with JS, uncomment the following
  8. # and specify the fully qualified class name to the JavaScript interface
  9. # class:
  10. #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  11. # public *;
  12. #}
  13. # Uncomment this to preserve the line number information for
  14. # debugging stack traces.
  15. #-keepattributes SourceFile,LineNumberTable
  16. # If you keep the line number information, uncomment this to
  17. # hide the original source file name.
  18. #-renamesourcefileattribute SourceFile
  19. # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
  20. -optimizationpasses 5
  21. # 混合时不使用大小写混合,混合后的类名为小写
  22. -dontusemixedcaseclassnames
  23. # 指定不去忽略非公共库的类
  24. -dontskipnonpubliclibraryclasses
  25. # 这句话能够使我们的项目混淆后产生映射文件
  26. # 包含有类名->混淆后类名的映射关系
  27. -verbose
  28. # 指定不去忽略非公共库的类成员
  29. -dontskipnonpubliclibraryclassmembers
  30. # 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
  31. -dontpreverify
  32. # 保留Annotation不混淆
  33. -keepattributes *Annotation*,InnerClasses
  34. # 避免混淆泛型
  35. -keepattributes Signature
  36. # 抛出异常时保留代码行号
  37. -keepattributes SourceFile,LineNumberTable
  38. # 指定混淆是采用的算法,后面的参数是一个过滤器
  39. # 这个过滤器是谷歌推荐的算法,一般不做更改
  40. -optimizations !code/simplification/cast,!field/*,!class/merging/*
  41. # android 原生
  42. # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
  43. # 因为这些子类都有可能被外部调用
  44. -keep class android.support.** {*;}
  45. -dontwarn javax.annotation.**
  46. -dontwarn javax.inject.**
  47. -keep public class * extends android.app.Fragment
  48. -keep public class * extends android.app.Activity
  49. -keep public class * extends android.app.Application
  50. -keep public class * extends android.app.Service
  51. -keep public class * extends android.app.IntentService
  52. -keep public class com.android.vending.licensing.ILicensingService
  53. -keep class com.android.vending.licensing.ILicensingService
  54. -keep public class * extends android.content.BroadcastReceiver
  55. -keep public class * extends android.content.ContentProvider
  56. -keep public class * extends android.app.backup.BackupAgentHelper
  57. -keep public class * extends android.preference.Preference
  58. -keep public class * extends android.view.View
  59. -keep public class * extends android.view.ViewGroup
  60. -keep public class android.view.ViewGroup
  61. -keep public class * extends android.content.ContentProvider
  62. -keep public class java.lang.reflect.Field
  63. -dontwarn InnerClasses
  64. # 保留继承的
  65. -keep public class * extends android.support.v4.**
  66. -keep public class * extends android.support.v7.**
  67. -keep public class * extends android.support.annotation.**
  68. # 保留R下面的资源
  69. -keep class **.R$* {*;}
  70. #不混淆资源类
  71. -keepclassmembers class **.R$* {
  72. public static <fields>;
  73. }
  74. # 保留本地native方法不被混淆
  75. -keepclasseswithmembernames class * {
  76. native <methods>;
  77. }
  78. # 保留在Activity中的方法参数是view的方法,
  79. # 这样以来我们在layout中写的onClick就不会被影响
  80. -keepclassmembers class * extends android.app.Activity{
  81. public void *(android.view.View);
  82. }
  83. # 保留枚举类不被混淆
  84. -keepclassmembers enum * {
  85. public static **[] values();
  86. public static ** valueOf(java.lang.String);
  87. }
  88. # 保留我们自定义控件(继承自View)不被混淆
  89. -keep public class * extends android.view.View{
  90. *** get*();
  91. void set*(***);
  92. public <init>(android.content.Context);
  93. public <init>(android.content.Context, android.util.AttributeSet);
  94. public <init>(android.content.Context, android.util.AttributeSet, int);
  95. }
  96. # 保留Serializable序列化的类不被混淆
  97. -keepclassmembers class * implements java.io.Serializable {
  98. static final long serialVersionUID;
  99. private static final java.io.ObjectStreamField[] serialPersistentFields;
  100. !static !transient <fields>;
  101. !private <fields>;
  102. !private <methods>;
  103. private void writeObject(java.io.ObjectOutputStream);
  104. private void readObject(java.io.ObjectInputStream);
  105. java.lang.Object writeReplace();
  106. java.lang.Object readResolve();
  107. }
  108. # 保留Parcelable序列化类不被混淆
  109. -keep class * implements android.os.Parcelable {
  110. <fields>;
  111. public static final android.os.Parcelable$Creator *;
  112. }
  113. # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
  114. -keepclassmembers class * {
  115. void *(**On*Event);
  116. void *(**On*Listener);
  117. public void *ButtonClicked(android.view.View);
  118. }
  119. # webView处理,项目中没有使用到webView忽略即可
  120. -keepclassmembers class cn.xx.xx.Activity$AppAndroid {
  121. public *;
  122. }
  123. -keepattributes *JavascriptInterface*
  124. -keepclassmembers class fqcn.of.javascript.interface.for.webview {
  125. public *;
  126. }
  127. -keepclassmembers class * extends android.webkit.webViewClient {
  128. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  129. public boolean *(android.webkit.WebView, java.lang.String);
  130. }
  131. -keepclassmembers class * extends android.webkit.webViewClient {
  132. public void *(android.webkit.webView, jav.lang.String);
  133. }
  134. # 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
  135. # 记得proguard-android.txt中一定不要加-dontoptimize才起作用
  136. # 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
  137. #-assumenosideeffects class android.util.Log {
  138. # public static int v(...);
  139. # public static int i(...);
  140. # public static int w(...);
  141. # public static int d(...);
  142. # public static int e(...);
  143. #}
  144. # 忽略警告
  145. -ignorewarnings
  146. ############ 记录生成的日志数据,gradle build时在本项目根目录输出开始 ################
  147. # 混淆时是否记录日志
  148. -verbose
  149. # apk 包内所有 class 的内部结构
  150. -dump class_files.txt
  151. # 未混淆的类和成员
  152. -printseeds seeds.txt
  153. # 列出从 apk 中删除的代码
  154. -printusage unused.txt
  155. # 混淆前后的映射
  156. -printmapping mapping.txt
  157. ############# 记录生成的日志数据,gradle build时 在本项目根目录输出结束 ################
  158. # 不能混淆 否则注解无效
  159. -keep class com.ousrslook.shimao.commen.ioc.** { *; }
  160. # 不能混淆
  161. -keep class com.ousrslook.shimao.model.** { *; }
  162. # 统一返回的实体类泛型不能混淆
  163. -keep class com.ousrslook.shimao.net.XaResult{ *; }
  164. ############ 第三方依赖库混淆start ################
  165. # okhttp3
  166. -dontwarn okio.**
  167. -keepattributes Signature
  168. -keepattributes *Annotation*
  169. -keep class com.squareup.okhttp3.** { *; }
  170. -keep interface com.squareup.okhttp3.** { *; }
  171. -dontwarn com.squareup.okhttp3.**
  172. # okio
  173. -keep class sun.misc.Unsafe { *; }
  174. -dontwarn java.nio.file.*
  175. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
  176. -dontwarn okio.**
  177. # Retrofit
  178. -dontnote retrofit2.Platform
  179. -dontnote retrofit2.Platform$IOS$MainThreadExecutor
  180. -dontwarn retrofit2.Platform$Java8
  181. -keepattributes Signature
  182. -keepattributes Exceptions
  183. # RxJava混淆规则
  184. -dontwarn sun.misc.**
  185. -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
  186. long producerIndex;
  187. long consumerIndex;
  188. }
  189. -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
  190. rx.internal.util.atomic.LinkedQueueNode producerNode;
  191. }
  192. -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
  193. rx.internal.util.atomic.LinkedQueueNode consumerNode;
  194. }
  195. # Gson
  196. -keep public class com.google.gson.**
  197. -keep public class com.google.gson.** {public private protected *;}
  198. -keep public class com.project.mocha_patient.login.SignResponseData { private *; }
  199. # Glide
  200. -keep class com.bumptech.glide.Glide { *; }
  201. -keep class com.bumptech.glide.request.RequestOptions {*;}
  202. -keep public class * implements com.bumptech.glide.module.GlideModule
  203. -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  204. **[] $VALUES;
  205. public *;
  206. }
  207. -dontwarn com.bumptech.glide.**
  208. # Picasso相关
  209. -keep class com.squareup.picasso.** {*; }
  210. -dontwarn com.squareup.okhttp.**
  211. -dontwarn com.squareup.picasso.**
  212. # universalimageloader图片加载框架混淆
  213. -keep class com.nostra13.universalimageloader.** { *; }
  214. -keepclassmembers class com.nostra13.universalimageloader.** {*;}
  215. -dontwarn com.nostra13.universalimageloader.**
  216. # ImmersionBar混淆
  217. -keep class com.gyf.barlibrary.* {*;}
  218. # 列表混淆
  219. -keepclasseswithmembers class android.support.v7.widget.RecyclerView$ViewHolder {
  220. public final View *;
  221. }
  222. #-dontwarn com.yanzhenjie.recyclerview.swipe.**
  223. #-keep class com.yanzhenjie.recyclerview.swipe.** {*;}
  224. # 万能列表适配器混淆
  225. -keep class com.chad.library.adapter.** {
  226. *;
  227. }
  228. -keep public class * extends com.chad.library.adapter.base.BaseQuickAdapter
  229. -keep public class * extends com.chad.library.adapter.base.BaseViewHolder
  230. -keepclassmembers class **$** extends com.chad.library.adapter.base.BaseViewHolder {
  231. <init>(...);
  232. }
  233. # ButterKnife混淆
  234. -keep class butterknife.** { *; }
  235. -dontwarn butterknife.internal.**
  236. -keep class **$$ViewBinder { *; }
  237. -keepclasseswithmembernames class * {
  238. @butterknife.* <fields>;
  239. }
  240. -keepclasseswithmembernames class * {
  241. @butterknife.* <methods>;
  242. }
  243. # 安卓选择器类库混淆
  244. -keepattributes InnerClasses,Signature
  245. -keepattributes *Annotation*
  246. -keep class cn.qqtheme.framework.entity.** { *;}
  247. # banner的混淆
  248. -keep class com.youth.banner.** {
  249. *;
  250. }
  251. # 版本更新混淆
  252. -keepattributes *Annotation*
  253. -keepclassmembers class ** {
  254. @org.greenrobot.eventbus.Subscribe <methods>;
  255. }
  256. -keep enum org.greenrobot.eventbus.ThreadMode { *; }
  257. -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
  258. <init>(java.lang.Throwable);
  259. }
  260. -keep class com.allenliu.versionchecklib.**{*;}
  261. # 微信支付混淆
  262. -keep class com.tencent.mm.opensdk.** {*;}
  263. -keep class com.tencent.wxop.** {*;}
  264. -keep class com.tencent.mm.sdk.** {*;}
  265. # JPush混淆
  266. -dontoptimize
  267. -dontpreverify
  268. -dontwarn cn.jpush.**
  269. -keep class cn.jpush.** { *; }
  270. -keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
  271. -dontwarn cn.jiguang.**
  272. -keep class cn.jiguang.** { *; }
  273. # 友盟统计混淆
  274. -keep class com.umeng.** {*;}
  275. -keepclassmembers class * {
  276. public <init> (org.json.JSONObject);
  277. }
  278. -keepclassmembers enum * {
  279. public static **[] values();
  280. public static ** valueOf(java.lang.String);
  281. }
  282. -keep public class com.hooli.histudent.R$*{
  283. public static final int *;
  284. }
  285. ############ 第三方依赖库混淆end ################
  286. ############ 智齿相关混淆start ################
  287. -keep public class * extends android.support.v4.**
  288. -keep class android.support.v4.** { *; }
  289. -dontwarn android.support.v4.**
  290. -dontwarn android.webkit.WebView
  291. -keepclasseswithmembernames class * {
  292. public <init>(android.content.Context, android.util.AttributeSet);
  293. }
  294. -keepclasseswithmembernames class * {
  295. public <init>(android.content.Context, android.util.AttributeSet, int);
  296. }
  297. -keepclasseswithmembers class * {
  298. public <init>(android.content.Context);
  299. }
  300. # 智齿相关
  301. -keep class com.sobot.** {*;}
  302. # OkHttp相关
  303. -dontwarn okhttp3.**
  304. -dontwarn okio.**
  305. -dontwarn javax.annotation.**
  306. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
  307. ############ 智齿相关混淆end ################