proguard-rules.pro 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  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*
  27. -keepattributes InnerClasses
  28. # 避免混淆反射
  29. -keepattributes EnclosingMethod
  30. # 避免混淆泛型
  31. -keepattributes Signature
  32. # 抛出异常时保留代码行号
  33. -keepattributes SourceFile,LineNumberTable
  34. # 指定混淆是采用的算法,后面的参数是一个过滤器
  35. # 这个过滤器是谷歌推荐的算法,一般不做更改
  36. -optimizations !code/simplification/cast,!field/*,!class/merging/*
  37. #2.默认保留区
  38. # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
  39. # 因为这些子类都有可能被外部调用
  40. -keep public class * extends android.app.Activity
  41. -keep public class * extends android.app.Application
  42. -keep public class * extends android.app.Service
  43. -keep public class * extends android.app.IntentService
  44. -keep public class * extends android.content.BroadcastReceiver
  45. -keep public class * extends android.content.ContentProvider
  46. -keep public class * extends android.app.backup.BackupAgentHelper
  47. -keep public class * extends android.preference.Preference
  48. -keep public class * extends android.view.View
  49. -keep public class com.android.vending.licensing.ILicensingService
  50. # 保留support下的所有类及其内部类
  51. -keep class android.support.** {*;}
  52. # 保留继承的
  53. -keep public class * extends android.support.v4.**
  54. -keep public class * extends android.support.v7.**
  55. -keep public class * extends android.support.annotation.**
  56. # 保留R下面的资源
  57. -keep class **.R$* {*;}
  58. # 保留本地native方法不被混淆
  59. -keepclasseswithmembernames class * {
  60. native <methods>;
  61. }
  62. # 保留在Activity中的方法参数是view的方法,
  63. # 这样以来我们在layout中写的onClick就不会被影响
  64. -keepclassmembers class * extends android.app.Activity{
  65. public void *(android.view.View);
  66. }
  67. # 保留枚举类不被混淆
  68. -keepclassmembers enum * {
  69. public static **[] values();
  70. public static ** valueOf(java.lang.String);
  71. }
  72. # 保留我们自定义控件(继承自View)不被混淆
  73. -keep public class * extends android.view.View{
  74. *** get*();
  75. void set*(***);
  76. public <init>(android.content.Context);
  77. public <init>(android.content.Context, android.util.AttributeSet);
  78. public <init>(android.content.Context, android.util.AttributeSet, int);
  79. }
  80. -keepclasseswithmembers class * {
  81. public <init>(android.content.Context, android.util.AttributeSet);
  82. public <init>(android.content.Context, android.util.AttributeSet, int);
  83. }
  84. # 保留Parcelable序列化类不被混淆
  85. -keep class * implements android.os.Parcelable {
  86. public static final android.os.Parcelable$Creator *;
  87. }
  88. # 保留Serializable序列化的类不被混淆
  89. -keepclassmembers class * implements java.io.Serializable {
  90. static final long serialVersionUID;
  91. private static final java.io.ObjectStreamField[] serialPersistentFields;
  92. !static !transient <fields>;
  93. !private <fields>;
  94. !private <methods>;
  95. private void writeObject(java.io.ObjectOutputStream);
  96. private void readObject(java.io.ObjectInputStream);
  97. java.lang.Object writeReplace();
  98. java.lang.Object readResolve();
  99. }
  100. # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
  101. -keepclassmembers class * {
  102. void *(**On*Event);
  103. }
  104. #3.webview
  105. -keepclassmembers class fqcn.of.javascript.interface.for.webview {
  106. public *;
  107. }
  108. -keepclassmembers class * extends android.webkit.webViewClient {
  109. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  110. public boolean *(android.webkit.WebView, java.lang.String);
  111. }
  112. -keepclassmembers class * extends android.webkit.webViewClient {
  113. public void *(android.webkit.webView, jav.lang.String);
  114. }
  115. #移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
  116. #这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
  117. -assumenosideeffects class android.util.Log {
  118. public static *** v(...);
  119. public static *** i(...);
  120. public static *** d(...);
  121. public static *** w(...);
  122. public static *** e(...);
  123. }
  124. ###############################
  125. #
  126. # 第三方jar包
  127. #
  128. ###############################
  129. -keep class com.baidu.** {*;}
  130. -keep class mapsdkvi.com.** {*;}
  131. -dontwarn com.baidu.**
  132. -keep class com.uuzuche.lib_zxing.** {*;}
  133. -keep class com.andreabaccega.** {*;}
  134. -keep class com.github.clans.fab.** {*;}
  135. -keep class com.yalantis.phoenix.** {*;}
  136. -keep class com.baoyz.swipemenulistview.** {*;}
  137. -keep class com.viewpagerindicator.** {*;}
  138. -keep class com.afollestad.materialdialogs.** {*;}
  139. -keep class com.github.mikephil.charting.** {*;}
  140. -keep class com.module.recyclerlibrary.** {*;}
  141. -keep class com.handmark.pulltorefresh.library.** {*;}
  142. -keep class cc.cloudist.acplibrary.** {*;}
  143. -keep class android.arch.core.internal.** {*;}
  144. -keep class android.arch.lifecycle.** {*;}
  145. -keep class com.alibaba.fastjson.** {*;}
  146. -dontwarn com.alibaba.fastjson.**
  147. -keep class android.support.graphics.drawable.** {*;}
  148. -keep class com.facebook.stetho.** {*;}
  149. -keep class javax.annotation.** {*;}
  150. -keep class com.lidroid.xutils.** {*;}
  151. #okhttp3
  152. -keep class okhttp3.** { *; }
  153. -keep interface okhttp3.** { *; }
  154. -dontwarn okhttp3.**
  155. -keep class okio.** {*;}
  156. -dontwarn okio.**
  157. #retrofit
  158. -keep class com.squareup.okhttp.** { *; }
  159. -keep class retrofit.** { *; }
  160. -keep interface com.squareup.okhttp.** { *; }
  161. -dontwarn com.squareup.okhttp.**
  162. -dontwarn okio.**
  163. -dontwarn retrofit.**
  164. -dontwarn rx.**
  165. #retrofit2
  166. -dontwarn retrofit2.**
  167. -keep class retrofit2.** { *; }
  168. -keepclasseswithmembers class * {
  169. @retrofit2.http.* <methods>;
  170. }
  171. -keepclasseswithmembers class * {
  172. @retrofit.http.* <methods>;
  173. }
  174. -keep class org.apache.** {*;}
  175. -keep class org.junit.** {*;}
  176. -keep class junit.** {*;}
  177. -keep class org.hamcrest.** {*;}
  178. #design
  179. -dontwarn android.support.design.**
  180. -keep class android.support.design.** { *; }
  181. -keep interface android.support.design.** { *; }
  182. -keep public class android.support.design.R$* { *; }
  183. #support-v7-appcompat
  184. -keep public class android.support.v7.widget.** { *; }
  185. -keep public class android.support.v7.internal.widget.** { *; }
  186. -keep public class android.support.v7.internal.view.menu.** { *; }
  187. -keep public class * extends android.support.v4.view.ActionProvider {
  188. public <init>(android.content.Context);
  189. }
  190. #cardview
  191. -keep class android.support.v7.widget.RoundRectDrawable { *; }
  192. #gson
  193. -keep class sun.misc.Unsafe {*;}
  194. -keep class com.google.gson.examples.android.model.** {*;}
  195. -keep class com.google.gson.** {*;}
  196. -keep class com.google.gson.stream.** {*;}
  197. -keep class com.android.volley.** {*;}
  198. #butterknife
  199. -keep class butterknife.** { *; }
  200. -dontwarn butterknife.internal.**
  201. -keep class **$$ViewBinder { *; }
  202. -keepclasseswithmembernames class * {
  203. @butterknife.* <fields>;
  204. }
  205. -keepclasseswithmembernames class * {
  206. @butterknife.* <methods>;
  207. }
  208. -keep class com.nostra13.universalimageloader.** {*;}
  209. -keep class cat.ereza.customactivityoncrash.** {*;}
  210. -keep class uk.co.senab.photoview.** {*;}
  211. -keep class com.flipboard.bottomsheet.** {*;}
  212. -keep class flipboard.bottomsheet.** {*;}
  213. #glide
  214. -keep class com.bumptech.glide.** {*;}
  215. -keep public class * implements com.bumptech.glide.module.GlideModule
  216. -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  217. **[] $VALUES;
  218. public *;
  219. }
  220. #sharesdk
  221. -keep class cn.sharesdk.**{*;}
  222. -keep class com.sina.**{*;}
  223. -keep class **.R$* {*;}
  224. -keep class **.R{*;}
  225. -dontwarn cn.sharesdk.**
  226. -dontwarn **.R$*
  227. -dontwarn com.tencent.**
  228. -keep class com.tencent.** {*;}
  229. #android-gif-drawable
  230. -keep class pl.droidsonroids.** {*;}
  231. -keep public class pl.droidsonroids.gif.GifIOException{<init>(int);}
  232. -keep class pl.droidsonroids.gif.GifInfoHandle{<init>(long,int,int,int);}
  233. #retrolambda
  234. -dontwarn java.lang.invoke.*
  235. #rxjava
  236. -keep class rx.** {*;}
  237. -keep class rx.schedulers.Schedulers {
  238. public static <methods>;
  239. }
  240. -keep class rx.schedulers.ImmediateScheduler {
  241. public <methods>;
  242. }
  243. -keep class rx.schedulers.TestScheduler {
  244. public <methods>;
  245. }
  246. -keep class rx.schedulers.Schedulers {
  247. public static ** test();
  248. }
  249. -keep class net.sourceforge.pinyin4j.**{*;}
  250. -keep class org.xbill.** {*;}
  251. -dontwarn org.xbill.**
  252. -keep class com.chad.library.** {*;}
  253. -keep class com.tonicartos.widget.stickygridheaders.** {*;}
  254. -keep class com.orhanobut.logger.** {*;}
  255. -keep class com.readystatesoftware.systembartint.** {*;}
  256. -keep class com.scwang.smartrefresh.** {*;}
  257. -keep class com.squareup.** {*;}
  258. -keep class com.tencent.** {*;}
  259. -keep class com.youth.banner.** {*;}
  260. -keep class de.hdodenhof.circleimageview.** {*;}
  261. -keep class org.joda.time.** {*;}
  262. -dontwarn org.joda.time.**
  263. -keep class me.gujun.android.taggroup.** {*;}
  264. -keep class me.zhanghai.android.materialprogressbar.** {*;}
  265. -keep class android.net.** {*;}
  266. -keep class com.android.internal.http.multipart.** {*;}
  267. -keep class se.emilsjolander.stickylistheaders.** {*;}
  268. -keep class com.alipay.** {*;}
  269. -dontwarn com.alipay.**
  270. -keep class com.tencent.mm.sdk.** {*;}
  271. -keep class com.loopj.android.http.**{*;}
  272. -keep class com.novell.sasl.client.**{*;}
  273. -keep class de.measite.smack.**{*;}
  274. -keep class org.jivesoftware.**{*;}
  275. -keep class flexjson.**{*;}
  276. -keep class lecho.lib.hellocharts.**{*;}
  277. -keep class org.apache.http.entity.mime.**{*;}
  278. -keep class com.litesuits.orm.**{*;}
  279. -keep class com.iflytek.**{*;}
  280. -keep class com.nineoldandroids.**{*;}
  281. -keep class org.xbill.DNS.**{*;}
  282. #Ormlite
  283. -keep class com.j256.**
  284. -keepclassmembers class com.j256.** { *; }
  285. -keep enum com.j256.**
  286. -keepclassmembers enum com.j256.** { *; }
  287. -keep interface com.j256.**
  288. -keepclassmembers interface com.j256.** { *; }
  289. -keep class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper
  290. -keepclassmembers class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper {
  291. public <init>(android.content.Context);
  292. }
  293. -keep @com.j256.ormlite.table.DatabaseTable class * {
  294. @com.j256.ormlite.field.DatabaseField <fields>;
  295. @com.j256.ormlite.field.ForeignCollectionField <fields>;
  296. # Add the ormlite field annotations that your model uses here
  297. # <init>();
  298. }
  299. #-keepclassmembers class * {
  300. # public <init>(android.content.Context);
  301. #}
  302. -keep class com.hp.hpl.sparta.**{*;}
  303. -keep class pinyindb.**{*;}
  304. -keep class demo.** {*;}
  305. -dontwarn demo.**
  306. #友盟
  307. -keep class com.umeng.analytics.** {*;}
  308. -keep class com.umeng.socialize.**{*;}
  309. -keep class com.umeng.qqsdk.**{*;}
  310. -keep class com.tencent.mm.sdk.**{*;}
  311. -keep class core.umeng.wxsdk.**{*;}
  312. -keep class com.umeng.customview.**{*;}
  313. -keep class com.zhy.tree.bean.**{*;}
  314. -keep class com.iflytek.sunflower.**{*;}
  315. -keep class MTT.**{*;}
  316. ###############################
  317. #
  318. # 自己的代码
  319. # 引用的其他Module可以直接在app的这个混淆文件里配置
  320. #
  321. ###############################
  322. -keep class com.core.net.** {*;}
  323. -keep class com.core.dao.** {*;}
  324. #实体类
  325. -keep class com.modular.booking.model.** {*;}
  326. -keep class com.uas.appcontact.model.** {*;}
  327. -keep class com.modular.login.model.** {*;}
  328. -keep class com.modular.booking.model.** {*;}
  329. -keep class com.uas.appme.settings.model.** {*;}
  330. -keep class com.modular.appmessages.model.** {*;}
  331. -keep class com.modular.apputils.model.** {*;}
  332. -keep class com.uas.appworks.model.** {*;}
  333. -keep class com.xzjmyk.pm.activity.bean.** {*;}
  334. -keep class com.modular.apputils.model.** {*;}
  335. -keep class com.core.xmpp.model.** {*;}
  336. -keep class com.core.model.** {*;}
  337. -keep class com.core.app.** {*;}
  338. -keep class com.uas.appworks.OA.erp.model.** {*;}
  339. -keep class com.core.api.wxapi.** {*;}
  340. #自定义控件
  341. -keep class com.core.widget.** {*;}
  342. -keep class com.modular.booking.widget.** {*;}
  343. -keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
  344. -keep class com.uas.appme.widget.** {*;}
  345. -keep class com.modular.appmessages.widget.** {*;}
  346. -keep class com.modular.apputils.widget.** {*;}
  347. -keep class com.uas.appworks.widget.** {*;}
  348. -keep class com.ipaulpro.afilechooser.** {*;}
  349. -keep class com.roamer.slidelistview.** {*;}
  350. -keep class com.xzjmyk.pm.activity.view.** {*;}
  351. -keep class com.xzjmyk.pm.activity.video.** {*;}
  352. -keep class com.modular.apputils.utils.** {*;}
  353. #与js互相调用的类
  354. -keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
  355. -keepclassmembers class * extends android.webkit.WebViewClient {
  356. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  357. public boolean *(android.webkit.WebView, java.lang.String);
  358. }
  359. -keepclassmembers class * extends android.webkit.WebViewClient {
  360. public void *(android.webkit.WebView, jav.lang.String);
  361. }
  362. # keep annotated by NotProguard
  363. # 被NotProguard注解过的类或方法或属性不被混淆
  364. #-keep @com.core.base.NotProguard class * {*;}
  365. #-keep class * {
  366. # @com.core.base.NotProguard <fields>;
  367. #}
  368. #-keepclassmembers class * {
  369. # @com.core.base.NotProguard <methods>;
  370. #}