proguard-rules.pro 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. # Add project specific ProGuard rules here.
  2. # By default, the flags in this file are appended to flags specified
  3. # in D:\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. -ignorewarnings
  18. -dontusemixedcaseclassnames # 是否使用大小写混合
  19. -dontpreverify # 混淆时是否做预校验
  20. -verbose # 混淆时是否记录日志
  21. -printmapping proguardMapping.txt
  22. -optimizationpasses 5 # 指定代码的压缩级别
  23. -dontskipnonpubliclibraryclassmembers
  24. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  25. -keepattributes *Annotation*,InnerClasses
  26. -keepattributes Signature # 避免混淆泛型
  27. -keepattributes EnclosingMethod
  28. -keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号
  29. -keepattributes Exceptions # 解决AGPBI警告
  30. #继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆
  31. -keep public class * extends android.app.Activity
  32. -keep public class * extends android.app.Application
  33. -keep public class * extends android.support.multidex.MultiDexApplication
  34. -keep public class * extends android.app.Service
  35. -keep public class * extends android.content.BroadcastReceiver
  36. -keep public class * extends android.content.ContentProvider
  37. -keep public class * extends android.app.backup.BackupAgentHelper
  38. -keep public class * extends android.preference.Preference
  39. -keep public class * extends android.view.View
  40. -keep public class com.android.vending.licensing.ILicensingService
  41. -keep class android.support.** {*;}
  42. # 所有View的子类及其子类的get、set方法都不进行混淆
  43. -keep public class * extends android.view.View{
  44. *** get*();
  45. void set*(***);
  46. public <init>(android.content.Context);
  47. public <init>(android.content.Context, android.util.AttributeSet);
  48. public <init>(android.content.Context, android.util.AttributeSet, int);
  49. }
  50. # 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
  51. -keepclassmembers class * extends android.app.Activity {
  52. public void *(android.view.View);
  53. }
  54. # 对于带有回调函数onXXEvent的,不能被混淆
  55. -keepclassmembers class * {
  56. void *(*Event);
  57. }
  58. # 枚举类不能被混淆
  59. -keepclassmembers enum * {
  60. public static **[] values();
  61. public static ** valueOf(java.lang.String);
  62. }
  63. # natvie 方法不混淆
  64. -keepclasseswithmembernames class * {
  65. native <methods>;
  66. }
  67. # 保持 Parcelable 不被混淆
  68. -keep class * implements android.os.Parcelable {
  69. public static final android.os.Parcelable$Creator *;
  70. }
  71. #不混淆Serializable接口的子类中指定的某些成员变量和方法
  72. -keepclassmembers class * implements java.io.Serializable {
  73. static final long serialVersionUID;
  74. private static final java.io.ObjectStreamField[] serialPersistentFields;
  75. !static !transient <fields>;
  76. private void writeObject(java.io.ObjectOutputStream);
  77. private void readObject(java.io.ObjectInputStream);
  78. java.lang.Object writeReplace();
  79. java.lang.Object readResolve();
  80. }
  81. -keepclassmembers class * {
  82. public <init> (org.json.JSONObject);
  83. }
  84. # 不混淆R类里及其所有内部static类中的所有static变量字段,$是用来分割内嵌类与其母体的标志
  85. -keep public class **.R$*{
  86. public static final int *;
  87. }
  88. #(可选)避免Log打印输出
  89. -assumenosideeffects class android.util.Log {
  90. public static *** v(...);
  91. public static *** d(...);
  92. public static *** i(...);
  93. public static *** w(...);
  94. }
  95. #---------------------------------webview------------------------------------
  96. -keepclassmembers class fqcn.of.javascript.interface.for.webview {
  97. public *;
  98. }
  99. -keepclassmembers class * extends android.webkit.webViewClient {
  100. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  101. public boolean *(android.webkit.WebView, java.lang.String);
  102. }
  103. #---------------------------------业务组件实体类---------------------------------
  104. -keep class com.guiying.news.data.bean.** {*;}
  105. -keep class com.guiying.girls.data.bean.** {*;}
  106. #---------------------------------第三方库及jar包-------------------------------
  107. #litepal数据库不能被混淆
  108. -keep class org.litepal.** {*;}
  109. -keep class * extends org.litepal.crud.DataSupport {*;}
  110. #Glide不能被混淆
  111. -keep public class * implements com.bumptech.glide.module.GlideModule
  112. -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  113. **[] $VALUES;
  114. public *;
  115. }
  116. #PersistentCookieJar
  117. -dontwarn com.franmontiel.persistentcookiejar.**
  118. -keep class com.franmontiel.persistentcookiejar.**
  119. #activityrouter
  120. -keep class com.github.mzule.activityrouter.router.** { *; }
  121. #友盟统计
  122. -keep class com.umeng.analytics.** {*;}
  123. -dontwarn com.umeng.analytics.**
  124. #友盟推送
  125. -dontwarn com.taobao.**
  126. -dontwarn anet.channel.**
  127. -dontwarn anetwork.channel.**
  128. -dontwarn org.android.**
  129. -dontwarn org.apache.thrift.**
  130. -dontwarn com.xiaomi.**
  131. -dontwarn com.huawei.**
  132. -keep class com.taobao.** {*;}
  133. -keep class org.android.** {*;}
  134. -keep class anet.channel.** {*;}
  135. -keep class com.umeng.** {*;}
  136. -keep class com.xiaomi.** {*;}
  137. -keep class com.huawei.** {*;}
  138. -keep class org.apache.thrift.** {*;}
  139. -keep class com.alibaba.sdk.android.**{*;}
  140. -keep class com.ut.**{*;}
  141. -keep class com.ta.**{*;}
  142. #换肤框架的混淆文件
  143. -keep class solid.ren.skinlibrary.** {*;}
  144. -dontwarn solid.ren.skinlibrary.**
  145. #高德相关混淆文件
  146. #3D 地图
  147. -keep class com.amap.api.** {*;}
  148. -keep class com.autonavi.** {*;}
  149. -keep class com.a.a.** {*;}
  150. -keep class com.loc.** {*;}
  151. -dontwarn com.amap.api.**
  152. -dontwarn com.autonavi.**
  153. -dontwarn com.a.a.**
  154. -dontwarn com.loc.**
  155. # simple-xml-core的SDK
  156. -keep class org.simpleframework.xml.** {*;}
  157. -dontwarn org.simpleframework.xml.**
  158. # acra的 SDK
  159. -keep class org.acra.** {*;}
  160. -dontwarn org.acra.**
  161. # 网络请求库async-http
  162. -keep class com.loopj.android.http.** {*;}
  163. -dontwarn com.loopj.android.http.**
  164. #pinyin4j
  165. -dontwarn net.soureceforge.pinyin4j.**
  166. -dontwarn demo.**
  167. -keep class net.sourceforge.pinyin4j.** { *;}
  168. -keep class demo.** { *;}
  169. -keep class com.hp.** { *;}
  170. #httpclient (org.apache.http.legacy.jar)
  171. -dontwarn android.net.compatibility.**
  172. -dontwarn android.net.http.**
  173. -dontwarn com.android.internal.http.multipart.**
  174. -dontwarn org.apache.commons.**
  175. -dontwarn org.apache.http.**
  176. -dontwarn org.apache.http.protocol.**
  177. -keep class android.net.compatibility.**{*;}
  178. -keep class android.net.http.**{*;}
  179. -keep class com.android.internal.http.multipart.**{*;}
  180. -keep class org.apache.commons.**{*;}
  181. -keep class org.apache.org.**{*;}
  182. -keep class org.apache.harmony.**{*;}
  183. #图表库
  184. -keep class com.github.mikephil.charting.** {*;}
  185. -dontwarn com.github.mikephil.charting.**
  186. # 讯飞语音
  187. -keep class com.chinaMobile.** {*;}
  188. -keep class com.iflytek.** {*;}
  189. -keep class com.iflytek.sunflower.** {*;}
  190. -dontwarn com.iflytek.sunflower.**
  191. -dontwarn com.chinaMobile.**
  192. -dontwarn com.iflytek.**
  193. # greenDao混淆
  194. -keep class de.greenrobot.dao.** {*;}
  195. -keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
  196. public static Java.lang.String TABLENAME;
  197. }
  198. -keep class **$Properties
  199. # gson
  200. -keep class com.google.gson.** {*;}
  201. -keep class com.google.**{*;}
  202. -keep class sun.misc.Unsafe { *; }
  203. -keep class com.google.gson.stream.** { *; }
  204. -keep class com.google.gson.examples.android.model.** { *; }
  205. # zxing
  206. -keep class com.google.zxing.** {*;}
  207. -dontwarn com.google.zxing.**
  208. ##百度定位
  209. -keep class com.baidu.** {*;}
  210. -keep class vi.com.** {*;}
  211. -dontwarn com.baidu.**
  212. ## okhttp
  213. -dontwarn com.squareup.okhttp.**
  214. -keep class com.squareup.okhttp.{*;}
  215. #okhttp3.x
  216. -dontwarn com.squareup.okhttp3.**
  217. -keep class com.squareup.okhttp3.** { *;}
  218. -dontwarn okio.**
  219. #retrofit
  220. -dontwarn retrofit.**
  221. -keep class retrofit.** { *; }
  222. -dontwarn okio.**
  223. #recyclerview-animators
  224. -keep class jp.wasabeef.** {*;}
  225. -dontwarn jp.wasabeef.*
  226. #multistateview
  227. -keep class com.kennyc.view.** { *; }
  228. -dontwarn com.kennyc.view.*
  229. # universal-image-loader 混淆
  230. -dontwarn com.nostra13.universalimageloader.**
  231. -keep class com.nostra13.universalimageloader.** { *; }
  232. #-ButterKnife 7.0
  233. -keep class butterknife.** { *; }
  234. -dontwarn butterknife.internal.**
  235. -keep class **$$ViewBinder { *; }
  236. -keepclasseswithmembernames class * {
  237. @butterknife.* <fields>;
  238. }
  239. -keepclasseswithmembernames class * {
  240. @butterknife.* <methods>;
  241. }
  242. #eventbus 3.0
  243. -keepattributes *Annotation*
  244. -keepclassmembers class ** {
  245. @org.greenrobot.eventbus.Subscribe <methods>;
  246. }
  247. -keep enum org.greenrobot.eventbus.ThreadMode { *; }
  248. -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
  249. <init>(java.lang.Throwable);
  250. }
  251. #EventBus
  252. -keepclassmembers class ** {
  253. public void onEvent*(**);
  254. }
  255. -keepclassmembers class ** {
  256. public void xxxxxx(**);
  257. }
  258. # support-v4
  259. -dontwarn android.support.v4.**
  260. -keep class android.support.v4.app.** { *; }
  261. -keep interface android.support.v4.app.** { *; }
  262. -keep class android.support.v4.** { *; }
  263. # support-v7
  264. -dontwarn android.support.v7.**
  265. -keep class android.support.v7.internal.** { *; }
  266. -keep interface android.support.v7.internal.** { *; }
  267. -keep class android.support.v7.** { *; }
  268. # support design
  269. -dontwarn android.support.design.**
  270. -keep class android.support.design.** { *; }
  271. -keep interface android.support.design.** { *; }
  272. -keep public class android.support.design.R$* { *; }