Android 代码混淆策略
1. android 系统调用的类,Activity,BroadcastReceiver,Service,ContentProvider, Application,BackupAgentHelper,Preference和ILicensingService的子类。
-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 classcom.android.vending.licensing.ILicensingService
2. 自定义的view,即View的子类,其构造函数不混淆
-keep public class *extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context,android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet,int);
public void set*(...);
}
-keepclasseswithmembersclass * {
public <init>(android.content.Context,android.util.AttributeSet, int);
}
3. native 方法类,即JNI java文件
-keepclasseswithmembersclass * {
native <methods>;
}
4. 继承至Parcelable的跨进程数据类
-keep class * implementsandroid.os.Parcelable {
*;
}
5. 应用的资源文件
-keepclassmembers class**.R$* {
public static <fields>;
}
6. 第三方jar包
-keep public class com.umeng.* {
*;
}
-dontwarn org.jivesoftware.smack.**
-keep public class org.jivesoftware.smack.**{
*;
}
7. Android v4,v7等包
-dontwarnandroid.support.v4.**
-keep classandroid.support.v4.** { *; }
-keep publicclass * extends android.support.v4.**
8. 如果开发的是jar包,则暴露的接口不混淆