001 |
# ------------------------------------- |
003 |
# ------------------------------------- |
005 |
# ---------------------------------- |
007 |
# -optimizationpasses n |
008 |
# ---------------------------------- |
009 |
-optimizationpasses 5 |
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 |
# ----------------------- |
097 |
# ----- 混淆包路径 ------- |
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