001 | # ------------------------------------- |
003 | # ------------------------------------- |
005 | # ---------------------------------- |
007 | # -optimizationpasses n |
008 | # ---------------------------------- |
011 | # ---------------------------------- |
013 | # -dontusemixedcaseclassnames |
014 | # ---------------------------------- |
015 | #-dontusemixedcaseclassnames |
016 | # ---------------------------------- |
018 | # -dontskipnonpubliclibraryclasses |
019 | # ---------------------------------- |
020 | #-dontskipnonpubliclibraryclasses |
022 | # ---------------------------------- |
025 | # ---------------------------------- |
028 | # ---------------------------------- |
031 | # ---------------------------------- |
034 | # ---------------------------------- |
036 | # optimizations {optimization_filter} |
037 | # ---------------------------------- |
038 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* |
040 | -keep public class * extends android.app.Activity |
041 | -keep public class * extends android.app.Application |
042 | -keep public class * extends android.app.Service |
043 | -keep public class * extends android.content.BroadcastReceiver |
044 | -keep public class * extends android.content.ContentProvider |
045 | -keep public class * extends android.app.backup.BackupAgentHelper |
046 | -keep public class * extends android.preference.Preference |
047 | -keep public class com.android.vending.licensing.ILicensingService |
049 | -keepclasseswithmembernames class * { |
055 | -keep public class * extends android.view.View { |
056 | public < init >(android.content.Context); |
057 | public < init >(android.content.Context, android.util.AttributeSet); |
058 | public < init >(android.content.Context, android.util.AttributeSet, int); |
059 | public void set*(...); |
062 | -keepclassmembers enum * { |
063 | public static **[] values(); |
064 | public static ** valueOf(java.lang.String); |
067 | -keep class * implements android.os.Parcelable { |
068 | public static final android.os.Parcelable$Creator *; |
071 | #-------------------------- |
072 | # 保护类型 -keepattributes 说明 |
073 | # Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, |
074 | # LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, |
075 | # RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault |
076 | # -------------------- |
078 | -libraryjars < java.home >/lib/rt.jar |
080 | # ---------------------- |
083 | # ---------------------- |
086 | # ---------------------- |
089 | # ----------------------- |
092 | # ----------------------- |
095 | # ----------------------- |
099 | -flattenpackagehierarchy '' |
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 >(...); |
107 | -keepclassmembers class * { |
110 | -keepclassmembers class **.R$* { |
111 | public static < fields >; |
114 | # ------ 编译时需要用到的 jar 包 |
115 | -libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar |
117 | # ------ 保护 谷歌第三方 jar 包,界面特效 ---------- |
118 | -keep class android.support.v4.** |
119 | -dontwarn android.support.v4.** |
121 | # ------ 保护百度地址jar包 -------- |
122 | -keep class com.baidu.mapapi.** { *; } |
123 | -dontwarn com.baidu.mapapi.** |
126 | -dontwarn com.classpackage.AA |
128 | #-keepnames class * implements java.io.Serializable |
129 | # ---------保护所有实体中的字段名称---------- |
130 | -keepclassmembers class * implements java.io.Serializable { |
134 | # --------- 保护类中的所有方法名 ------------ |
135 | -keepclassmembers class * { |
总结:
无非就是要保护一些反射实现的逻辑,还有如果调用到外部接口(如hessian实现的)时方法名需要保护。
转自:http://my.oschina.net/zhangzhihao/blog/72393