proguard-rules.pro 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. # Add project specific ProGuard rules here.
  2. # By default, the flags in this file are appended to flags specified
  3. # in /Users/Android/MAC_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. # For more details, see
  8. # http://developer.android.com/guide/developing/tools/proguard.html
  9. # Add any project specific keep options here:
  10. # If your project uses WebView with JS, uncomment the following
  11. # and specify the fully qualified class name to the JavaScript interface
  12. # class:
  13. #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  14. # public *;
  15. #}
  16. #############################################
  17. #
  18. # 对于一些基本指令的添加
  19. #
  20. #############################################
  21. # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
  22. -optimizationpasses 5
  23. # 混合时不使用大小写混合,混合后的类名为小写
  24. -dontusemixedcaseclassnames
  25. # 指定不去忽略非公共库的类
  26. -dontskipnonpubliclibraryclasses
  27. # 这句话能够使我们的项目混淆后产生映射文件
  28. # 包含有类名->混淆后类名的映射关系
  29. -verbose
  30. # 指定不去忽略非公共库的类成员
  31. -dontskipnonpubliclibraryclassmembers
  32. # 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
  33. -dontpreverify
  34. # 保留Annotation不混淆
  35. -keepattributes *Annotation*,InnerClasses
  36. # 避免混淆泛型
  37. -keepattributes Signature
  38. # 抛出异常时保留代码行号
  39. -keepattributes SourceFile,LineNumberTable
  40. # 指定混淆是采用的算法,后面的参数是一个过滤器
  41. # 这个过滤器是谷歌推荐的算法,一般不做更改
  42. -optimizations !code/simplification/cast,!field/*,!class/merging/*
  43. #############################################
  44. #
  45. # Android开发中一些需要保留的公共部分
  46. #
  47. #############################################
  48. # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
  49. # 因为这些子类都有可能被外部调用
  50. -keep public class * extends android.app.Activity
  51. -keep public class * extends android.app.Appliction
  52. -keep public class * extends android.app.Service
  53. -keep public class * extends android.content.BroadcastReceiver
  54. -keep public class * extends android.content.ContentProvider
  55. -keep public class * extends android.app.backup.BackupAgentHelper
  56. -keep public class * extends android.preference.Preference
  57. -keep public class * extends android.view.View
  58. -keep public class com.android.vending.licensing.ILicensingService
  59. # 保留support下的所有类及其内部类
  60. -keep class android.support.** {*;}
  61. # 保留继承的
  62. -keep public class * extends android.support.v4.**
  63. -keep public class * extends android.support.v7.**
  64. -keep public class * extends android.support.annotation.**
  65. # 保留R下面的资源
  66. -keep class **.R$* {*;}
  67. # 保留本地native方法不被混淆
  68. -keepclasseswithmembernames class * {
  69. native <methods>;
  70. }
  71. # 保留在Activity中的方法参数是view的方法,
  72. # 这样以来我们在layout中写的onClick就不会被影响
  73. -keepclassmembers class * extends android.app.Activity{
  74. public void *(android.view.View);
  75. }
  76. # 保留枚举类不被混淆
  77. -keepclassmembers enum * {
  78. public static **[] values();
  79. public static ** valueOf(java.lang.String);
  80. }
  81. # 保留我们自定义控件(继承自View)不被混淆
  82. -keep public class * extends android.view.View{
  83. *** get*();
  84. void set*(***);
  85. public <init>(android.content.Context);
  86. public <init>(android.content.Context, android.util.AttributeSet);
  87. public <init>(android.content.Context, android.util.AttributeSet, int);
  88. }
  89. # 保留Parcelable序列化类不被混淆
  90. -keep class * implements android.os.Parcelable {
  91. public static final android.os.Parcelable$Creator *;
  92. }
  93. # 保留Serializable序列化的类不被混淆
  94. -keepnames class * implements java.io.Serializable
  95. -keepclassmembers class * implements java.io.Serializable {
  96. static final long serialVersionUID;
  97. private static final java.io.ObjectStreamField[] serialPersistentFields;
  98. !static !transient <fields>;
  99. !private <fields>;
  100. !private <methods>;
  101. private void writeObject(java.io.ObjectOutputStream);
  102. private void readObject(java.io.ObjectInputStream);
  103. java.lang.Object writeReplace();
  104. java.lang.Object readResolve();
  105. }
  106. # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
  107. -keepclassmembers class * {
  108. void *(**On*Event);
  109. void *(**On*Listener);
  110. }
  111. # webView处理,项目中没有使用到webView忽略即可
  112. -keepclassmembers class fqcn.of.javascript.interface.for.webview {
  113. public *;
  114. }
  115. -keepclassmembers class * extends android.webkit.webViewClient {
  116. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  117. public boolean *(android.webkit.WebView, java.lang.String);
  118. }
  119. -keepclassmembers class * extends android.webkit.webViewClient {
  120. public void *(android.webkit.webView, jav.lang.String);
  121. }
  122. # 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
  123. # 记得proguard-android.txt中一定不要加-dontoptimize才起作用
  124. # 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
  125. #-assumenosideeffects class android.util.Log {
  126. # public static int v(...);
  127. # public static int i(...);
  128. # public static int w(...);
  129. # public static int d(...);
  130. # public static int e(...);
  131. #}
  132. #############################################
  133. #
  134. # 项目中特殊处理部分
  135. #
  136. #############################################
  137. #-----------处理反射类---------------
  138. #-----------处理js交互---------------
  139. #-----------处理实体类---------------
  140. # 在开发的时候我们可以将所有的实体类放在一个包内,这样我们写一次混淆就行了。
  141. -keep class com.wdkl.ncs.android.middleware.model.**{ *; }
  142. -keep class com.wdkl.app.ncs.watch.**{ *; }
  143. -keep class com.wdkl.app.ncs.watch.**{ *; }
  144. -keep class com.enation.javashop.android.component.member.adapterPostCommentGoodsAdapter
  145. -keep class com.wdkl.ncs.android.component.shop.adapter.ShopAllGoodsAdapter
  146. -keep class com.enation.javashop.android.component.member.adapter.CouponAdapter
  147. -keep class com.enation.javashop.android.component.order.adapter.OrderItemAdapter
  148. #-----------处理第三方依赖库---------
  149. # AndroidEventBus
  150. -keep class org.simple.** { *; }
  151. -keep interface org.simple.** { *; }
  152. -keepclassmembers class * {
  153. @org.simple.eventbus.Subscriber <methods>;
  154. }
  155. # BRVAH
  156. -keep class com.chad.library.adapter.** { *; }
  157. -keep public class * extends com.chad.library.adapter.base.BaseQuickAdapter
  158. -keep public class * extends com.chad.library.adapter.base.BaseViewHolder
  159. -keepclassmembers public class * extends com.chad.library.adapter.base.BaseViewHolder {
  160. <init>(android.view.View);
  161. }
  162. # Bugly
  163. -dontwarn com.tencent.bugly.**
  164. -keep class com.tencent.bugly.** {*;}
  165. # ButterKnife
  166. -keep public class * implements butterknife.Unbinder {
  167. public <init>(**, android.view.View);
  168. }
  169. -keep class butterknife.*
  170. -keepclasseswithmembernames class * {
  171. @butterknife.* <methods>;
  172. }
  173. -keepclasseswithmembernames class * {
  174. @butterknife.* <fields>;
  175. }
  176. # Dagger2
  177. -dontwarn com.google.errorprone.annotations.*
  178. # EventBus
  179. -keepattributes *Annotation*
  180. -keepclassmembers class ** {
  181. @org.greenrobot.eventbus.Subscribe <methods>;
  182. }
  183. -keep enum org.greenrobot.eventbus.ThreadMode { *; }
  184. # Facebook
  185. -keep class com.facebook.** {*;}
  186. -keep interface com.facebook.** {*;}
  187. -keep enum com.facebook.** {*;}
  188. # FastJson
  189. -dontwarn com.alibaba.fastjson.**
  190. -keep class com.alibaba.fastjson.** { *; }
  191. -keepattributes Signature
  192. -keepattributes *Annotation*
  193. # Fresco
  194. -keep class com.facebook.fresco.** {*;}
  195. -keep interface com.facebook.fresco.** {*;}
  196. -keep enum com.facebook.fresco.** {*;}
  197. # 高德相关依赖
  198. # 集合包:3D地图3.3.2 导航1.8.0 定位2.5.0
  199. -dontwarn com.amap.api.**
  200. -dontwarn com.autonavi.**
  201. -keep class com.amap.api.**{*;}
  202. -keep class com.autonavi.**{*;}
  203. # 地图服务
  204. -dontwarn com.amap.api.services.**
  205. -keep class com.map.api.services.** {*;}
  206. # 3D地图
  207. -dontwarn com.amap.api.mapcore.**
  208. -dontwarn com.amap.api.maps.**
  209. -dontwarn com.autonavi.amap.mapcore.**
  210. -keep class com.amap.api.mapcore.**{*;}
  211. -keep class com.amap.api.maps.**{*;}
  212. -keep class com.autonavi.amap.mapcore.**{*;}
  213. # 定位
  214. -dontwarn com.amap.api.location.**
  215. -dontwarn com.aps.**
  216. -keep class com.amap.api.location.**{*;}
  217. -keep class com.aps.**{*;}
  218. # 导航
  219. -dontwarn com.amap.api.navi.**
  220. -dontwarn com.autonavi.**
  221. -keep class com.amap.api.navi.** {*;}
  222. -keep class com.autonavi.** {*;}
  223. # Glide
  224. -keep public class * implements com.bumptech.glide.module.GlideModule
  225. -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  226. **[] $VALUES;
  227. public *;
  228. }
  229. ### greenDAO 3
  230. -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
  231. public static java.lang.String TABLENAME;
  232. }
  233. -keep class **$Properties
  234. # If you do not use SQLCipher:
  235. -dontwarn org.greenrobot.greendao.database.**
  236. # If you do not use RxJava:
  237. -dontwarn rx.**
  238. # Gson
  239. -keepattributes Signature
  240. -keepattributes *Annotation*
  241. -keep class sun.misc.Unsafe { *; }
  242. -keep class com.google.gson.stream.** { *; }
  243. # 使用Gson时需要配置Gson的解析对象及变量都不混淆。不然Gson会找不到变量。
  244. # 将下面替换成自己的实体类
  245. #-keep class com.example.bean.** { *; }
  246. # Jackson
  247. -dontwarn org.codehaus.jackson.**
  248. -dontwarn com.fasterxml.jackson.databind.**
  249. -keep class org.codehaus.jackson.** { *;}
  250. -keep class com.fasterxml.jackson.** { *; }
  251. # 极光推送
  252. -dontoptimize
  253. -dontpreverify
  254. -dontwarn cn.jpush.**
  255. -keep class cn.jpush.** { *; }
  256. # OkHttp
  257. -dontwarn okio.**
  258. -dontwarn okhttp3.**
  259. -dontwarn javax.annotation.Nullable
  260. -dontwarn javax.annotation.ParametersAreNonnullByDefault
  261. # Okio
  262. -dontwarn com.squareup.**
  263. -dontwarn okio.**
  264. -keep public class org.codehaus.* { *; }
  265. -keep public class java.nio.* { *; }
  266. # OrmLite
  267. -keepattributes *DatabaseField*
  268. -keepattributes *DatabaseTable*
  269. -keepattributes *SerializedName*
  270. -keep class com.j256.**
  271. -keepclassmembers class com.j256.** { *; }
  272. -keep enum com.j256.**
  273. -keepclassmembers enum com.j256.** { *; }
  274. -keep interface com.j256.**
  275. -keepclassmembers interface com.j256.** { *; }
  276. # Realm
  277. -keep class io.realm.annotations.RealmModule
  278. -keep @io.realm.annotations.RealmModule class *
  279. -keep class io.realm.internal.Keep
  280. -keep @io.realm.internal.Keep class * { *; }
  281. -dontwarn javax.**
  282. -dontwarn io.realm.**
  283. # Retrofit
  284. -keep class retrofit2.** { *; }
  285. -dontwarn retrofit2.**
  286. -keepattributes Signature
  287. -keepattributes Exceptions
  288. -dontwarn okio.**
  289. -dontwarn javax.annotation.**
  290. # Retrolambda
  291. -dontwarn java.lang.invoke.*
  292. # RxJava RxAndroid
  293. -dontwarn sun.misc.**
  294. -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
  295. long producerIndex;
  296. long consumerIndex;
  297. }
  298. -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
  299. rx.internal.util.atomic.LinkedQueueNode producerNode;
  300. }
  301. -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
  302. rx.internal.util.atomic.LinkedQueueNode consumerNode;
  303. }
  304. -dontnote rx.internal.util.PlatformDependent
  305. # 微信支付
  306. -dontwarn com.tencent.mm.**
  307. -dontwarn com.tencent.wxop.stat.**
  308. -keep class com.tencent.mm.** {*;}
  309. -keep class com.tencent.wxop.stat.**{*;}
  310. # 信鸽
  311. -keep public class * extends android.app.Service
  312. -keep public class * extends android.content.BroadcastReceiver
  313. -keep class com.tencent.android.tpush.** {* ;}
  314. -keep class com.tencent.mid.** {* ;}
  315. -keepattributes *Annotation*
  316. # 新浪微博
  317. -keep class com.sina.weibo.sdk.* { *; }
  318. -keep class android.support.v4.* { *; }
  319. -keep class com.tencent.* { *; }
  320. -keep class com.baidu.* { *; }
  321. -keep class lombok.ast.ecj.* { *; }
  322. -dontwarn android.support.v4.**
  323. -dontwarn com.tencent.**s
  324. -dontwarn com.baidu.**
  325. # XLog
  326. -keep class com.tencent.mars.** { *; }
  327. -keepclassmembers class com.tencent.mars.** { *; }
  328. -dontwarn com.tencent.mars.**
  329. # 讯飞语音
  330. -dontwarn com.iflytek.**
  331. -keep class com.iflytek.** {*;}
  332. # 银联
  333. -dontwarn com.unionpay.**
  334. -keep class com.unionpay.** { *; }
  335. # 友盟统计分析
  336. -keepclassmembers class * { public <init>(org.json.JSONObject); }
  337. -keepclassmembers enum com.umeng.analytics.** {
  338. public static **[] values();
  339. public static ** valueOf(java.lang.String);
  340. }
  341. # 友盟自动更新
  342. -keepclassmembers class * { public <init>(org.json.JSONObject); }
  343. -keep public class cn.irains.parking.cloud.pub.R$*{ public static final int *; }
  344. -keep public class * extends com.umeng.**
  345. -keep class com.umeng.** { *; }
  346. # 支付宝钱包
  347. -dontwarn com.alipay.**
  348. -dontwarn HttpUtils.HttpFetcher
  349. -dontwarn com.ta.utdid2.**
  350. -dontwarn com.ut.device.**
  351. -keep class com.alipay.android.app.IAlixPay{*;}
  352. -keep class com.alipay.android.app.IAlixPay$Stub{*;}
  353. -keep class com.alipay.android.app.IRemoteServiceCallback{*;}
  354. -keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
  355. -keep class com.alipay.sdk.app.PayTask{ public *;}
  356. -keep class com.alipay.sdk.app.AuthTask{ public *;}
  357. -keep class com.alipay.mobilesecuritysdk.*
  358. -keep class com.ut.*
  359. #解决使用Retrofit+rxJava联网时,在6.0系统出现java.lang.InternalError奔溃的问题:http://blog.csdn.net/mp624183768/article/details/79242147
  360. -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
  361. long producerIndex;
  362. long consumerIndex;
  363. }
  364. -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
  365. rx.internal.util.atomic.LinkedQueueNode producerNode;
  366. }
  367. -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
  368. rx.internal.util.atomic.LinkedQueueNode consumerNode;
  369. }
  370. -keep class com.tencent.mm.opensdk.** {
  371. *;
  372. }
  373. -keep class com.tencent.wxop.** {
  374. *;
  375. }
  376. -keep class com.tencent.mm.sdk.** {
  377. *;
  378. }
  379. -keep class com.umeng.commonsdk.** {*;}
  380. -keepclassmembers class * {
  381. public <init> (org.json.JSONObject);
  382. }
  383. -keep public class [com.zongxueguan.naochanle_android].R$*{
  384. public static final int *;
  385. }
  386. -keepclassmembers enum * {
  387. public static **[] values();
  388. public static ** valueOf(java.lang.String);
  389. }
  390. -dontshrink
  391. -dontoptimize
  392. -dontwarn com.google.android.maps.**
  393. -dontwarn android.webkit.WebView
  394. -dontwarn com.umeng.**
  395. -dontwarn com.tencent.weibo.sdk.**
  396. -dontwarn com.facebook.**
  397. -keep public class javax.**
  398. -keep public class android.webkit.**
  399. -dontwarn android.support.v4.**
  400. -keep enum com.facebook.**
  401. -keepattributes Exceptions,InnerClasses,Signature
  402. -keepattributes *Annotation*
  403. -keepattributes SourceFile,LineNumberTable
  404. -keep public interface com.facebook.**
  405. -keep public interface com.tencent.**
  406. -keep public interface com.umeng.socialize.**
  407. -keep public interface com.umeng.socialize.sensor.**
  408. -keep public interface com.umeng.scrshot.**
  409. -keep public class com.umeng.socialize.* {*;}
  410. -keep class com.facebook.**
  411. -keep class com.facebook.** { *; }
  412. -keep class com.umeng.scrshot.**
  413. -keep public class com.tencent.** {*;}
  414. -keep class com.umeng.socialize.sensor.**
  415. -keep class com.umeng.socialize.handler.**
  416. -keep class com.umeng.socialize.handler.*
  417. -keep class com.umeng.weixin.handler.**
  418. -keep class com.umeng.weixin.handler.*
  419. -keep class com.umeng.qq.handler.**
  420. -keep class com.umeng.qq.handler.*
  421. -keep class UMMoreHandler{*;}
  422. -keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
  423. -keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
  424. -keep class im.yixin.sdk.api.YXMessage {*;}
  425. -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
  426. -keep class com.tencent.mm.sdk.** {
  427. *;
  428. }
  429. -keep class com.tencent.mm.opensdk.** {
  430. *;
  431. }
  432. -keep class com.tencent.wxop.** {
  433. *;
  434. }
  435. -keep class com.tencent.mm.sdk.** {
  436. *;
  437. }
  438. -dontwarn twitter4j.**
  439. -keep class twitter4j.** { *; }
  440. -keep class com.tencent.** {*;}
  441. -dontwarn com.tencent.**
  442. -keep class com.kakao.** {*;}
  443. -dontwarn com.kakao.**
  444. -keep public class com.umeng.com.umeng.soexample.R$*{
  445. public static final int *;
  446. }
  447. -keep public class com.linkedin.android.mobilesdk.R$*{
  448. public static final int *;
  449. }
  450. -keepclassmembers enum * {
  451. public static **[] values();
  452. public static ** valueOf(java.lang.String);
  453. }
  454. -keep class com.tencent.open.TDialog$*
  455. -keep class com.tencent.open.TDialog$* {*;}
  456. -keep class com.tencent.open.PKDialog
  457. -keep class com.tencent.open.PKDialog {*;}
  458. -keep class com.tencent.open.PKDialog$*
  459. -keep class com.tencent.open.PKDialog$* {*;}
  460. -keep class com.umeng.socialize.impl.ImageImpl {*;}
  461. -keep class com.sina.** {*;}
  462. -dontwarn com.sina.**
  463. -keep class com.alipay.share.sdk.** {
  464. *;
  465. }
  466. -keepnames class * implements android.os.Parcelable {
  467. public static final ** CREATOR;
  468. }
  469. -keep class com.linkedin.** { *; }
  470. -keep class com.android.dingtalk.share.ddsharemodule.** { *; }
  471. -keepattributes Signature
  472. -dontwarn okio.**
  473. -dontwarn javax.annotation.**