Android proguard-rules.pro 混淆模板

在../sdk/tools/proguard/目录下,其中包含了android最基本的混淆

 

..\proguard-rules.pro  混淆文件配置模板:

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

 

refs:

Android Studio混淆模板及常用第三方混淆(看了都说好)
http://www.jianshu.com/p/f9438603e096

 

版权声明:本文为bluestorm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bluestorm/p/6858011.html?utm_source=itdadao&utm_medium=referral