proguard-rules.pro 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. -optimizationpasses 5
  2. -dontusemixedcaseclassnames
  3. -dontskipnonpubliclibraryclasses
  4. -verbose
  5. -dontskipnonpubliclibraryclassmembers
  6. -dontpreverify
  7. -keepattributes *Annotation*,InnerClasses
  8. -keepattributes Signature
  9. #-keepattributes SourceFile,LineNumberTable
  10. -optimizations !code/simplification/cast,!field/*,!class/merging/*
  11. # 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
  12. # 因为这些子类都有可能被外部调用
  13. -keep public class * extends android.content.ContentProvider
  14. -keep public class * extends android.view.View
  15. # 保留继承的
  16. -keep public class * extends android.support.v4.**
  17. -keep public class * extends android.support.v7.**
  18. -keep public class * extends android.support.annotation.**
  19. -keep public class * extends androidx.**
  20. -keep class android.support.** {*;}
  21. # 保留本地native方法不被混淆
  22. -keepclasseswithmembernames class * {
  23. native <methods>;
  24. }
  25. # 保留R下面的资源
  26. -keep class **.R$* {
  27. *;
  28. }
  29. # 保留我们自定义控件(继承自View)不被混淆
  30. -keep public class * extends android.view.View{
  31. *** get*();
  32. void set*(***);
  33. public <init>(android.content.Context);
  34. public <init>(android.content.Context, android.util.AttributeSet);
  35. public <init>(android.content.Context, android.util.AttributeSet, int);
  36. }
  37. # 保留Parcelable序列化类不被混淆
  38. -keep class * implements android.os.Parcelable {
  39. public static final android.os.Parcelable$Creator *;
  40. }
  41. # 保留Serializable序列化的类不被混淆
  42. -keepclassmembers class * implements java.io.Serializable {
  43. static final long serialVersionUID;
  44. private static final java.io.ObjectStreamField[] serialPersistentFields;
  45. !static !transient <fields>;
  46. !private <fields>;
  47. !private <methods>;
  48. private void writeObject(java.io.ObjectOutputStream);
  49. private void readObject(java.io.ObjectInputStream);
  50. java.lang.Object writeReplace();
  51. java.lang.Object readResolve();
  52. }
  53. # 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
  54. -keepclassmembers class * {
  55. void *(**On*Event);
  56. void *(**On*Listener);
  57. }
  58. # 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
  59. # 记得proguard-android.txt中一定不要加-dontoptimize才起作用
  60. # 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
  61. -assumenosideeffects class android.util.Log {
  62. public static int v(...);
  63. public static int i(...);
  64. public static int w(...);
  65. public static int d(...);
  66. public static int e(...);
  67. }
  68. # Gson
  69. -keep class sun.misc.Unsafe* { *; }
  70. -keep class com.google.gson.stream.** { *; }
  71. -keep class com.test.risk.app.RiskManage{*;}
  72. -keep class com.test.risk.app.RiskListener{*;}