proguard-rules.pro 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # Add project specific ProGuard rules here.
  2. # You can control the set of applied configuration files using the
  3. # proguardFiles setting in build.gradle.
  4. #
  5. # For more details, see
  6. # http://developer.android.com/guide/developing/tools/proguard.html
  7. # If your project uses WebView with JS, uncomment the following
  8. # and specify the fully qualified class name to the JavaScript interface
  9. # class:
  10. #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  11. # public *;
  12. #}
  13. # Uncomment this to preserve the line number information for
  14. # debugging stack traces.
  15. #-keepattributes SourceFile,LineNumberTable
  16. # If you keep the line number information, uncomment this to
  17. # hide the original source file name.
  18. #-renamesourcefileattribute SourceFile
  19. #------------------------基本不用动区域-----------------
  20. #------------------------基本指令区---------------------
  21. -dontwarn
  22. -ignorewarnings
  23. -optimizationpasses 5
  24. -dontusemixedcaseclassnames
  25. -dontskipnonpubliclibraryclasses
  26. -dontskipnonpubliclibraryclassmembers
  27. -dontpreverify
  28. -verbose
  29. -printmapping proguardMapping.txt
  30. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  31. -keepattributes *Annotation*,InnerClasses
  32. -keepattributes Signature
  33. -keepattributes SourceFile,LineNumberTable
  34. #=====================================================
  35. #----------------------------默认保留区------------------------
  36. -keep public class * extends android.app.backup.BackupAgentHelper
  37. -keep public class * extends android.view.View
  38. -keep public class com.android.vending.licensing.ILicensingService
  39. -keep class android.support.** {*;}
  40. -keep public class * extends android.app.Fragment
  41. -keep public class * extends android.app.Activity
  42. -keep public class * extends android.app.Application
  43. -keep public class * extends android.app.Service
  44. -keep public class * extends android.content.BroadcastReceiver
  45. -keep public class * extends android.preference.Preference
  46. -keep public class * extends android.content.ContentProvider
  47. -keep public class * extends android.support.v4.**
  48. -keep public class * extends android.support.annotation.**
  49. -keep public class * extends android.support.v7.**
  50. # natvie 方法不混淆
  51. -keepclasseswithmembernames class * {
  52. native <methods>;
  53. }
  54. # 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
  55. -keepclassmembers class * extends android.app.Activity{
  56. public void *(android.view.View);
  57. }
  58. # 枚举类不能被混淆
  59. -keepclassmembers enum * {
  60. public static **[] values();
  61. public static ** valueOf(java.lang.String);
  62. }
  63. # 所有View的子类及其子类的get、set方法都不进行混淆
  64. -keep public class * extends android.view.View{
  65. *** get*();
  66. void set*(***);
  67. public <init>(android.content.Context);
  68. public <init>(android.content.Context, android.util.AttributeSet);
  69. public <init>(android.content.Context, android.util.AttributeSet, int);
  70. }
  71. -keepclasseswithmembers class * {
  72. public <init>(android.content.Context, android.util.AttributeSet);
  73. public <init>(android.content.Context, android.util.AttributeSet, int);
  74. }
  75. # 保持 Parcelable 不被混淆
  76. -keep class * implements android.os.Parcelable {
  77. public static final android.os.Parcelable$Creator *;
  78. }
  79. #不混淆Serializable接口的子类中指定的某些成员变量和方法
  80. -keepclassmembers class * implements java.io.Serializable {
  81. static final long serialVersionUID;
  82. private static final java.io.ObjectStreamField[] serialPersistentFields;
  83. private void writeObject(java.io.ObjectOutputStream);
  84. private void readObject(java.io.ObjectInputStream);
  85. java.lang.Object writeReplace();
  86. java.lang.Object readResolve();
  87. }
  88. # 不混淆R类里及其所有内部static类中的所有static变量字段,$是用来分割内嵌类与其母体的标志
  89. -keep class **.R$* {
  90. *;
  91. }
  92. # 对于带有回调函数onXXEvent的,不能被混淆
  93. -keepclassmembers class * {
  94. void *(**On*Event);
  95. }
  96. #(可选)避免Log打印输出
  97. -assumenosideeffects class android.util.Log {
  98. public static *** v(...);
  99. public static *** d(...);
  100. public static *** i(...);
  101. public static *** w(...);
  102. }
  103. #============================================================
  104. #-------------------------------webView----------------------------
  105. -keepclassmembers class fqcn.of.javascript.interface.for.Webview {
  106. public *;
  107. }
  108. -keepclassmembers class * extends android.webkit.WebViewClient {
  109. public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
  110. public boolean *(android.webkit.WebView, java.lang.String);
  111. }
  112. -keepclassmembers class * extends android.webkit.WebViewClient {
  113. public void *(android.webkit.WebView, jav.lang.String);
  114. }
  115. -keep class com.mylove.** {*;}
  116. -keep class * extends java.lang.annotation.Annotation { *; }
  117. -keep interface * extends java.lang.annotation.Annotation { *; }