android代码混淆记录

代码混淆时遇到有许多坑,记录下以备以后查看。

首先需要在project.properties里加上

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt。

${sdk.dir}对应的是本地sdk路径。

然后在proguard-project.txt里添加混淆规则。proguard-project.txt实际上是在${sdk.dir}基础上继续添加的。

开头就有这个提示:

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt

具体添加的规则如下:

#四大组件不能混淆
-keep public class * extends android.app.Activity

-keep public class * extends android.app.Application {*;}

-keep public class * extends android.app.Service

-keep public class * extends android.content.BroadcastReceiver

-keep public class * extends android.content.ContentProvider

-keep public class * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference

#自定义控件不要混淆
-keep public class * extends android.view.View {*;}

#adapter也不能混淆
-keep public class * extends android.widget.BaseAdapter {*;}

# v4 包的混淆

#-libraryjars ./libs/android-support-v4.jar

#-dontwarn android.support.**

-dontwarn android.support.v4.**

-dontwarn **CompatHoneycomb

-dontwarn **CompatHoneycombMR2

-dontwarn **CompatCreatorHoneycombMR2

-keep interface android.support.v4.app.** { *; }

-keep class android.support.v4.** { *; }

-keep public class * extends android.support.v4.**

-keep public class * extends android.app.Fragment

# universal-image-loader 混淆

-dontwarn com.nostra13.universalimageloader.**

-keep class com.nostra13.universalimageloader.** { *; }

#xutils相关 注意实际的名字

-libraryjars libs/xUtils-2.6.8.jar                      #xutils的jar包不要混淆
-keep class com.lidroid.** { *; }                     #xutils包下所有类不要混淆,包括类里面的方法
-keep class * extends java.lang.annotation.Annotation { *; }#注解包下的所有内容不要混淆,ViewUitls有用到


#     高德地图sdk混淆 注意实际的名字
-libraryjars   libs/Android_Location_V1.3.1.jar

-libraryjars   libs/Android_3DMap_V2.4.0.jar
-libraryjars   libs/Android_Location_V1.3.1.jar
-dontwarn com.amap.api.**  

-dontwarn com.a.a.**  

-dontwarn com.autonavi.**  

-keep class com.amap.api.**  {*;}     

-keep class com.autonavi.**  {*;}

-keep class com.a.a.**  {*;}

#百度播放器
-libraryjars libs/cyberplayer-sdk.jar 
-dontwarn com.baidu.** 
-keep class com.baidu.** { *;} 

 

# Gson

#--------------------begin--------------------------------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson

#keep的是项目真实的model包
-keep class com.xx.xx.model.** { *; }

##---------------End: proguard configuration for Gson  ----------

 

#实现Serializable接口的不混淆

-keepnames class * implements java.io.Serializable

你可能感兴趣的:(android混淆)