proguard-rules.pro 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. # Add project specific ProGuard rules here.
  2. # By default, the flags in this file are appended to flags specified
  3. # in C:\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. #
  8. # 公共部分(固定不变)
  9. #
  10. ###############################
  11. #1.基本指令区
  12. # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
  13. -optimizationpasses 5
  14. # 混合时不使用大小写混合,混合后的类名为小写
  15. -dontusemixedcaseclassnames
  16. # 指定不去忽略非公共库的类
  17. -dontskipnonpubliclibraryclasses
  18. # 这句话能够使我们的项目混淆后产生映射文件
  19. # 包含有类名->混淆后类名的映射关系
  20. -verbose
  21. # 指定不去忽略非公共库的类成员
  22. -dontskipnonpubliclibraryclassmembers
  23. # 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
  24. -dontpreverify
  25. # 保留Annotation不混淆
  26. -keepattributes *Annotation*,InnerClasses
  27. # 避免混淆泛型
  28. -keepattributes Signature
  29. # 抛出异常时保留代码行号
  30. -keepattributes SourceFile,LineNumberTable
  31. # 指定混淆是采用的算法,后面的参数是一个过滤器
  32. # 这个过滤器是谷歌推荐的算法,一般不做更改
  33. -optimizations !code/simplification/cast,!field/*,!class/merging/*
  34. #2.默认保留区
  35. # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
  36. # 因为这些子类都有可能被外部调用
  37. -keep public class * extends android.app.Activity
  38. -keep public class * extends android.app.Application
  39. -keep public class * extends android.app.Service
  40. -keep public class * extends android.content.BroadcastReceiver
  41. -keep public class * extends android.content.ContentProvider
  42. -keep public class * extends android.app.backup.BackupAgentHelper
  43. -keep public class * extends android.preference.Preference
  44. -keep public class * extends android.view.View
  45. -keep public class com.android.vending.licensing.ILicensingService
  46. # 保留support下的所有类及其内部类
  47. -keep class android.support.** {*;}
  48. # 保留继承的
  49. -keep public class * extends android.support.v4.**
  50. -keep public class * extends android.support.v7.**
  51. -keep public class * extends android.support.annotation.**
  52. # 保留R下面的资源
  53. -keep class **.R$* {*;}
  54. # 保留本地native方法不被混淆
  55. -keepclasseswithmembernames class * {
  56. native <methods>;
  57. }
  58. # 保留在Activity中的方法参数是view的方法,
  59. # 这样以来我们在layout中写的onClick就不会被影响
  60. -keepclassmembers class * extends android.app.Activity{
  61. public void *(android.view.View);
  62. }
  63. # 保留枚举类不被混淆
  64. -keepclassmembers enum * {
  65. public static **[] values();
  66. public static ** valueOf(java.lang.String);
  67. }
  68. # 保留我们自定义控件(继承自View)不被混淆
  69. -keep public class * extends android.view.View{
  70. *** get*();
  71. void set*(***);
  72. public <init>(android.content.Context);
  73. public <init>(android.content.Context, android.util.AttributeSet);
  74. public <init>(android.content.Context, android.util.AttributeSet, int);
  75. }
  76. -keepclasseswithmembers class * {
  77. public <init>(android.content.Context, android.util.AttributeSet);
  78. public <init>(android.content.Context, android.util.AttributeSet, int);
  79. }
  80. # 保留Parcelable序列化类不被混淆
  81. -keep class * implements android.os.Parcelable {
  82. public static final android.os.Parcelable$Creator *;
  83. }
  84. # 保留Serializable序列化的类不被混淆
  85. -keepclassmembers class * implements java.io.Serializable {
  86. static final long serialVersionUID;
  87. private static final java.io.ObjectStreamField[] serialPersistentFields;
  88. !static !transient <fields>;
  89. !private <fields>;
  90. !private <methods>;
  91. private void writeObject(java.io.ObjectOutputStream);
  92. private void readObject(java.io.ObjectInputStream);
  93. java.lang.Object writeReplace();
  94. java.lang.Object readResolve();
  95. }
  96. # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
  97. -keepclassmembers class * {
  98. void *(**On*Event);
  99. }
  100. #3.webview
  101. -keepclassmembers class fqcn.of.javascript.interface.for.webview {
  102. public *;
  103. }
  104. -keepclassmembers class * extends android.webkit.webViewClient {
  105. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  106. public boolean *(android.webkit.WebView, java.lang.String);
  107. }
  108. -keepclassmembers class * extends android.webkit.webViewClient {
  109. public void *(android.webkit.webView, jav.lang.String);
  110. }
  111. #移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
  112. #这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
  113. -assumenosideeffects class android.util.Log {
  114. public static *** v(...);
  115. public static *** i(...);
  116. public static *** d(...);
  117. public static *** w(...);
  118. public static *** e(...);
  119. }
  120. ###############################
  121. #
  122. # 第三方jar包
  123. #
  124. ###############################
  125. -keep class com.baidu.** {*;}
  126. -keep class vi.com.** {*;}
  127. -dontwarn com.baidu.**
  128. -keep class com.uuzuche.lib_zxing.** {*;}
  129. -keep class com.andreabaccega.** {*;}
  130. -keep class com.github.clans.fab.** {*;}
  131. -keep class com.yalantis.phoenix.** {*;}
  132. -keep class com.baoyz.swipemenulistview.** {*;}
  133. -keep class com.viewpagerindicator.** {*;}
  134. -keep class com.afollestad.materialdialogs.** {*;}
  135. -keep class com.github.mikephil.charting.** {*;}
  136. -keep class com.module.recyclerlibrary.** {*;}
  137. -keep class com.handmark.pulltorefresh.library.** {*;}
  138. -keep class cc.cloudist.acplibrary.** {*;}
  139. -keep class android.arch.core.internal.** {*;}
  140. -keep class android.arch.lifecycle.** {*;}
  141. -keep class com.alibaba.fastjson.** {*;}
  142. -dontwarn com.alibaba.fastjson.**
  143. -keep class android.support.graphics.drawable.** {*;}
  144. -keep class com.facebook.stetho.** {*;}
  145. -keep class javax.annotation.** {*;}
  146. -keep class com.lidroid.xutils.** {*;}
  147. -keep class okhttp3.** {*;}
  148. -keep class okio.** {*;}
  149. -dontwarn okio.**
  150. -keep class org.apache.** {*;}
  151. -keep class org.junit.** {*;}
  152. -keep class junit.** {*;}
  153. -keep class org.hamcrest.** {*;}
  154. -keep class sun.misc.Unsafe {*;}
  155. -keep class com.google.gson.** {*;}
  156. -keep class com.google.gson.stream.** {*;}
  157. -keep class com.android.volley.** {*;}
  158. -keep class butterknife.** {*;}
  159. -dontwarn butterknife.internal.**
  160. -keep class **$$ViewBinder { *; }
  161. -keep class cat.ereza.customactivityoncrash.** {*;}
  162. -keep class uk.co.senab.photoview.** {*;}
  163. -keep class com.flipboard.bottomsheet.** {*;}
  164. -keep class flipboard.bottomsheet.** {*;}
  165. -keep class com.bumptech.glide.** {*;}
  166. -keep class com.chad.library.** {*;}
  167. -keep class com.tonicartos.widget.stickygridheaders.** {*;}
  168. -keep class com.orhanobut.logger.** {*;}
  169. -keep class com.readystatesoftware.systembartint.** {*;}
  170. -keep class com.scwang.smartrefresh.** {*;}
  171. -keep class com.squareup.** {*;}
  172. -keep class com.tencent.** {*;}
  173. -keep class com.umeng.analytics.** {*;}
  174. -keep class com.youth.banner.** {*;}
  175. -keep class de.hdodenhof.circleimageview.** {*;}
  176. -keep class rx.** {*;}
  177. -keep class org.joda.time.** {*;}
  178. -keep class me.gujun.android.taggroup.** {*;}
  179. -keep class me.zhanghai.android.materialprogressbar.** {*;}
  180. -keep class android.net.** {*;}
  181. -keep class com.android.internal.http.multipart.** {*;}
  182. -keep class pl.droidsonroids.gif.** {*;}
  183. -keep class se.emilsjolander.stickylistheaders.** {*;}
  184. -keep class com.alipay.** {*;}
  185. -dontwarn com.alipay.**
  186. -keep class com.tencent.mm.sdk.** {
  187. *;
  188. }
  189. ###############################
  190. #
  191. # 自己的代码
  192. # 引用的其他Module可以直接在app的这个混淆文件里配置
  193. #
  194. ###############################
  195. #实体类
  196. -keep class com.modular.booking.model.** {*;}
  197. -keep class com.uas.appcontact.model.** {*;}
  198. -keep class com.modular.login.model.** {*;}
  199. -keep class com.modular.booking.model.** {*;}
  200. -keep class com.uas.appme.settings.model.** {*;}
  201. -keep class com.modular.appmessages.model.** {*;}
  202. -keep class com.modular.apputils.model.** {*;}
  203. -keep class com.uas.appworks.model.** {*;}
  204. -keep class com.xzjmyk.pm.activity.bean.** {*;}
  205. -keep class com.modular.apputils.model.** {*;}
  206. #自定义控件
  207. -keep class com.core.widget.** {*;}
  208. -keep class com.modular.booking.widget.** {*;}
  209. -keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
  210. -keep class com.uas.appme.widget.** {*;}
  211. -keep class com.modular.appmessages.widget.** {*;}
  212. -keep class com.modular.apputils.widget.** {*;}
  213. -keep class com.uas.appworks.widget.** {*;}
  214. -keep class com.ipaulpro.afilechooser.** {*;}
  215. -keep class com.roamer.slidelistview.** {*;}
  216. -keep class com.xzjmyk.pm.activity.view.** {*;}
  217. -keep class com.xzjmyk.pm.activity.video.** {*;}
  218. -keep class com.modular.apputils.utils.** {*;}
  219. #与js互相调用的类
  220. -keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView