You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

proguard-rules.pro 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #指定代码的压缩级别
  2. -optimizationpasses 5
  3. #包明不混合大小写
  4. -dontusemixedcaseclassnames
  5. #不去忽略非公共的库类
  6. -dontskipnonpubliclibraryclasses
  7. #优化 不优化输入的类文件
  8. -dontoptimize
  9. #预校验
  10. -dontpreverify
  11. #混淆时是否记录日志
  12. -verbose
  13. # 混淆时所采用的算法
  14. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  15. #保护注解
  16. -keepattributes *Annotation*
  17. # 保持哪些类不被混淆
  18. -keep public class * extends android.app.Fragment
  19. -keep public class * extends android.app.Activity
  20. -keep public class * extends android.app.Application
  21. -keep public class * extends android.app.Service
  22. -keep public class * extends android.content.BroadcastReceiver
  23. -keep public class * extends android.content.ContentProvider
  24. -keep public class * extends android.app.backup.BackupAgentHelper
  25. -keep public class * extends android.preference.Preference
  26. -keep public class com.android.vending.licensing.ILicensingService
  27. #如果有引用v4包可以添加下面这行
  28. -keep public class * extends android.support.v4.app.Fragment
  29. #忽略警告
  30. -ignorewarning
  31. #####################记录生成的日志数据,gradle build时在本项目根目录输出################
  32. #apk 包内所有 class 的内部结构
  33. -dump class_files.txt
  34. #未混淆的类和成员
  35. -printseeds seeds.txt
  36. #列出从 apk 中删除的代码
  37. -printusage unused.txt
  38. #混淆前后的映射
  39. -printmapping mapping.txt
  40. #####################记录生成的日志数据,gradle build时 在本项目根目录输出-end################
  41. ################混淆保护自己项目的部分代码以及引用的第三方jar包library#########################
  42. #-libraryjars libs/umeng-analytics-v5.2.4.jar
  43. #-libraryjars libs/alipaysdk.jar
  44. #-libraryjars libs/alipaysecsdk.jar
  45. #-libraryjars libs/alipayutdid.jar
  46. #-libraryjars libs/wup-1.0.0-SNAPSHOT.jar
  47. #-libraryjars libs/weibosdkcore.jar
  48. #三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar
  49. #-libraryjars libs/sdk-v1.0.0.jar
  50. #-libraryjars libs/look-v1.0.1.jar
  51. #我是以libaray的形式引用了一个图片加载框架,如果不想混淆 keep 掉
  52. -keep class com.nostra13.universalimageloader.** { *; }
  53. #友盟
  54. -keep class com.umeng.**{*;}
  55. #支付宝
  56. -keep class com.alipay.android.app.IAliPay{*;}
  57. -keep class com.alipay.android.app.IAlixPay{*;}
  58. -keep class com.alipay.android.app.IRemoteServiceCallback{*;}
  59. -keep class com.alipay.android.app.lib.ResourceMap{*;}
  60. #信鸽推送
  61. -keep class com.tencent.android.tpush.** {* ;}
  62. -keep class com.tencent.mid.** {* ;}
  63. #自己项目特殊处理代码
  64. #忽略警告
  65. -dontwarn com.veidy.mobile.common.**
  66. #保留一个完整的包
  67. -keep class com.veidy.mobile.common.** {
  68. *;
  69. }
  70. -keep class com.veidy.activity.login.WebLoginActivity{*;}
  71. -keep class com.veidy.activity.UserInfoFragment{*;}
  72. -keep class com.veidy.activity.HomeFragmentActivity{*;}
  73. -keep class com.veidy.activity.CityActivity{*;}
  74. -keep class com.veidy.activity.ClinikActivity{*;}
  75. #如果引用了v4或者v7包
  76. -dontwarn android.support.**
  77. ############混淆保护自己项目的部分代码以及引用的第三方jar包library-end##################
  78. -keep public class * extends android.view.View {
  79. public <init>(android.content.Context);
  80. public <init>(android.content.Context, android.util.AttributeSet);
  81. public <init>(android.content.Context, android.util.AttributeSet, int);
  82. public void set*(...);
  83. }
  84. #保持 native 方法不被混淆
  85. -keepclasseswithmembernames class * {
  86. native <methods>;
  87. }
  88. #保持自定义控件类不被混淆
  89. -keepclasseswithmembers class * {
  90. public <init>(android.content.Context, android.util.AttributeSet);
  91. }
  92. #保持自定义控件类不被混淆
  93. -keepclasseswithmembers class * {
  94. public <init>(android.content.Context, android.util.AttributeSet, int);
  95. }
  96. #保持自定义控件类不被混淆
  97. -keepclassmembers class * extends android.app.Activity {
  98. public void *(android.view.View);
  99. }
  100. #保持 Parcelable 不被混淆
  101. -keep class * implements android.os.Parcelable {
  102. public static final android.os.Parcelable$Creator *;
  103. }
  104. #保持 Serializable 不被混淆
  105. -keepnames class * implements java.io.Serializable
  106. #保持 Serializable 不被混淆并且enum 类也不被混淆
  107. -keepclassmembers class * implements java.io.Serializable {
  108. static final long serialVersionUID;
  109. private static final java.io.ObjectStreamField[] serialPersistentFields;
  110. !static !transient <fields>;
  111. !private <fields>;
  112. !private <methods>;
  113. private void writeObject(java.io.ObjectOutputStream);
  114. private void readObject(java.io.ObjectInputStream);
  115. java.lang.Object writeReplace();
  116. java.lang.Object readResolve();
  117. }
  118. #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可
  119. #-keepclassmembers enum * {
  120. # public static **[] values();
  121. # public static ** valueOf(java.lang.String);
  122. #}
  123. -keepclassmembers class * {
  124. public void *ButtonClicked(android.view.View);
  125. }
  126. #不混淆资源类
  127. -keepclassmembers class **.R$* {
  128. public static <fields>;
  129. }
  130. #避免混淆泛型 如果混淆报错建议关掉
  131. #–keepattributes Signature
  132. #移除log 测试了下没有用还是建议自己定义一个开关控制是否输出日志
  133. #-assumenosideeffects class android.util.Log {
  134. # public static boolean isLoggable(java.lang.String, int);
  135. # public static int v(...);
  136. # public static int i(...);
  137. # public static int w(...);
  138. # public static int d(...);
  139. # public static int e(...);
  140. #}
  141. # webview + js
  142. -keepattributes *JavascriptInterface*
  143. # keep 使用 webview 的类
  144. -keepclassmembers class com.veidy.activity.WebViewActivity {
  145. public *;
  146. }
  147. # keep 使用 webview 的类的所有的内部类
  148. -keepclassmembers class com.veidy.activity.WebViewActivity$*{
  149. *;
  150. }
  151. # 不混淆WebChromeClient中的openFileChooser方法
  152. -keepclassmembers class * extends android.webkit.WebChromeClient{
  153. public void openFileChooser(...);
  154. }
  155. #极光推送
  156. -dontoptimize
  157. -dontpreverify
  158. -dontwarn cn.jpush.**
  159. -keep class cn.jpush.** { *; }
  160. -keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
  161. -dontwarn cn.jiguang.**
  162. -keep class cn.jiguang.** { *; }
  163. # support-v7-appcompat
  164. -keep public class android.support.v7.widget.** { *; }
  165. -keep public class android.support.v7.internal.widget.** { *; }
  166. -keep public class android.support.v7.internal.view.menu.** { *; }
  167. -keep public class * extends android.support.v4.view.ActionProvider {
  168. public <init>(android.content.Context);
  169. }
  170. # support-design
  171. -dontwarn android.support.design.**
  172. -keep class android.support.design.** { *; }
  173. -keep interface android.support.design.** { *; }
  174. -keep public class android.support.design.R$* { *; }
  175. ########################################################
  176. # 友盟统计
  177. -keep class com.umeng.** {*;}
  178. -keepclassmembers class * {
  179. public <init> (org.json.JSONObject);
  180. }
  181. -keepclassmembers enum * {
  182. public static **[] values();
  183. public static ** valueOf(java.lang.String);
  184. }
  185. -keep public class [您的应用包名].R$*{
  186. public static final int *;
  187. }