Android Proguard设置

来源:互联网 发布:知寨多大的官 编辑:程序博客网 时间:2024/05/07 17:15
Android混淆器配置代码  收藏代码
  1. # -------------------------------------  
  2. # android 原始混淆模板  
  3. # -------------------------------------  
  4.   
  5. # ----------------------------------  
  6. #  通过指定数量的优化能执行  
  7. #  -optimizationpasses n  
  8. # ----------------------------------  
  9. -optimizationpasses 5  
  10.   
  11. # ----------------------------------  
  12. #   混淆时不会产生形形色色的类名   
  13. #   -dontusemixedcaseclassnames  
  14. # ----------------------------------  
  15. #-dontusemixedcaseclassnames  
  16. # ----------------------------------  
  17. #      指定不去忽略非公共的库类  
  18. #  -dontskipnonpubliclibraryclasses  
  19. # ----------------------------------  
  20. #-dontskipnonpubliclibraryclasses  
  21.   
  22. # ----------------------------------  
  23. #       不预校验  
  24. #    -dontpreverify  
  25. # ----------------------------------  
  26. # -dontpreverify  
  27.   
  28. # ----------------------------------  
  29. #      输出生成信息  
  30. #       -verbose  
  31. # ----------------------------------  
  32. -verbose  
  33.   
  34. # ----------------------------------  
  35. #        优化选项  
  36. #   optimizations  {optimization_filter}   
  37. # ----------------------------------  
  38. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  
  39.   
  40. -keep public class * extends android.app.Activity  
  41. -keep public class * extends android.app.Application  
  42. -keep public class * extends android.app.Service  
  43. -keep public class * extends android.content.BroadcastReceiver  
  44. -keep public class * extends android.content.ContentProvider  
  45. -keep public class * extends android.app.backup.BackupAgentHelper  
  46. -keep public class * extends android.preference.Preference  
  47. -keep public class com.android.vending.licensing.ILicensingService  
  48.   
  49. -keepclasseswithmembernames class * {  
  50.     native <methods>;  
  51. }  
  52. # -----------------  
  53. # modify 修改合并  
  54. # -----------------  
  55. -keep public class * extends android.view.View {  
  56.     public <init>(android.content.Context);  
  57.     public <init>(android.content.Context, android.util.AttributeSet);  
  58.     public <init>(android.content.Context, android.util.AttributeSet, int);  
  59.     public void set*(...);  
  60. }  
  61.   
  62. -keepclassmembers enum * {  
  63.     public static **[] values();  
  64.     public static ** valueOf(java.lang.String);  
  65. }  
  66.   
  67. -keep class * implements android.os.Parcelable {  
  68.   public static final android.os.Parcelable$Creator *;  
  69. }  
  70.   
  71. #--------------------------  
  72. # 保护类型   -keepattributes 说明  
  73. # Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable,   
  74. # LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations,   
  75. # RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault  
  76. # --------------------  
  77. -keepattributes **  
  78. -libraryjars <java.home>/lib/rt.jar  
  79.   
  80. # ----------------------  
  81. #  不压缩指定的文件  
  82. #  -dontshrink  
  83. # ----------------------  
  84. -dontshrink  
  85.   
  86. # ----------------------  
  87. #  不优化指定的文件  
  88. #  -dontoptimize  
  89. # -----------------------  
  90. -dontoptimize  
  91.   
  92. # -----------------------  
  93. #  不混淆指定的文件  
  94. #  -dontobfuscate  
  95. # -----------------------  
  96.   
  97. # ----- 混淆包路径 -------  
  98. -repackageclasses ''  
  99. -flattenpackagehierarchy ''  
  100. -target 1.6  
  101.   
  102. # -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保护的字段及类相关 --------  
  103. -keep class com.google.inject.Binder  
  104. -keepclassmembers class * {  
  105.     @com.google.inject.Inject <init>(...);  
  106. }  
  107. -keepclassmembers class * {  
  108.     void *(**On*Event);   
  109. }  
  110. -keepclassmembers class **.R$* {  
  111.     public static <fields>;  
  112. }  
  113.   
  114. # ------ 编译时需要用到的 jar 包  
  115. -libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar  
  116.   
  117. # ------ 保护 谷歌第三方 jar 包,界面特效 ----------  
  118. -keep class android.support.v4.**  
  119. -dontwarn android.support.v4.**  
  120.   
  121. # ------ 保护百度地址jar包 --------  
  122. -keep class com.baidu.mapapi.** { *; }  
  123. -dontwarn com.baidu.mapapi.**  
  124.   
  125. # --- 打包时忽略以下类的警告 --  
  126. -dontwarn com.classpackage.AA  
  127.   
  128. #-keepnames class * implements java.io.Serializable  
  129. # ---------保护所有实体中的字段名称----------  
  130. -keepclassmembers class * implements java.io.Serializable {  
  131.     <fields>;  
  132. }  
  133.   
  134. # --------- 保护类中的所有方法名 ------------  
  135. -keepclassmembers class * {  
  136.     public <methods>;  
  137. }  

 

总结:

     无非就是要保护一些反射实现的逻辑,还有如果调用到外部接口(如hessian实现的)时方法名需要保护。


转自:http://huangyuan.iteye.com/blog/1472732

0 0