##########################
##### 常规配置 #####
##########################
# 忽略警告,避免打包时某些警告出现
-ignorewarnings
#指定代码混淆压缩级别,在0~7之间,默认为5,一般不做修改
-optimizationpasses 5
#是否使用大小写混合,混合后的类名为小写
-dontusemixedcaseclassnames
#是否混淆第三方jar
-dontskipnonpubliclibraryclasses
#混淆时是否记录日志
-verbose
#指定不去忽略非公共库的类
-dontskipnonpubliclibraryclassmembers
#不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
-dontpreverify
#保留Annotation不混淆
-keepattributes *Annotation*,InnerClasses
#避免混淆泛型(保持签名)
-keepattributes Signature
#抛出异常时保留代码行号
-keepattributes SourceFile,LineNumberTable
#指定混淆是采用的算法,后面的参数是一个过滤器
#这个过滤器是谷歌推荐的算法,一般不做更改
-optimizations !code/simplification/cast,!field/*,!class/merging/*
#不混淆的jar配置
#针对android-support-v4.jar的解决方案
-libraryjars libs/android-support-v4.jar
-injars myapplication.jar
-outjars myapplication_out.jar
-libraryjars <java.home>/lib/rt.jar
-printmapping myapplication.map
##########################
##### Keep配置 #####
##########################
#不混淆资源文件
-keep class **.R
-keep class **.R$*{
<fields>;
}
-keepparameternames
#不混淆继承某个类的所有子类
-keep public class com.niubashaoye.ndk.jni.BaseJNI{}
#不混淆某个类
-keep public class com.niubashaoye.ndk.jni.JNITools{*;}
#不混淆某个包内所有的类
-keep public class com.niubashaoye.ndk.jni.**{*;}
#不混淆某个类的子类
-keep public class * extends com.niubashaoye.ndk.jni.BaseJNI{*;}
#不混淆所有类名中包含了“ndk”的类及类成员
-keep public class.ndk. {*;}
#不混淆某个接口的实现
-keep class * implements com.niubashaoye.ndk.jni.BaseInterface{*;}
#不混淆某个类的构造函数
-keepclassmembers class com.niubashaoye.ndk.jni.JNITools{
public();
}
#不混淆某个类的特定函数
-keepclassmembers class com.niubashaoye.ndk.jni.JNITools{
public void addNum(int,int,android.view.View);
}
#不混淆某个类的公共类成员
#JNITools类的public、native的类成员不混淆
-keep class com.niubashaoye.ndk.jni.JNITools{
public;native;
};
#如果类名需要混淆,类的public、native修饰的成员不混淆
-keepclassmembers class com.niubashaoye.ndk.jni.JNITools{
public;native;
};
#不混淆某个类的方法
-keepclasseswithmembers class com.niubashaoye.ndk.jni.BaseJNI$ChildClass {
<methods>;
}
#不混淆某个类的字段和方法
-keep public class com.niubashaoye.ndk.jni.JNITools {
public <fields>;
public <methods>;
}
# onEvent**方法不混淆
-keepclassmembers class ** {
public void onEvent*(**);
public void onEventMainThread*(**);
}
#保留枚举类不被混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#泛型,解决出现类型转换错误的问题
-keepattributes Signature
#保留Parcelable序列化类不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#保留Serializable序列化类不混淆
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
#对于带有回调函数的onXXEvent的,不能被混淆
-keepclassmembers class * {
void *(**On*Event);
}
#注解
-keepattributes *Annotation*
#实体类不混淆
-keep public class com.niubashaoye.ndk.entities.** {
public void set*(***);
public *** get*();
public *** is*();
}
#webView需要进行特殊处理
-keepclassmembers class com.niubashaoye.ndk.webview {
public *;
}
-keepclassmembers class * extends android.webkit.webViewClient {
public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.webViewClient {
public void *(android.webkit.webView, jav.lang.String);
}
#HTML5的JavaScript的交互进行特殊处理
-keepclassmembers class com.niubashaoye.ndk.JSInterface {
<methods>;
}
#对含有反射类的类不混淆
-keep class com.niubashaoye.ndk.jni.**{*;}
#处理回调函数
-keep class com.niubashaoye.ndk.MyCallbackClass {
void myCallbackMethod(java.lang.String);
}
##########################
##### 优化配置 #####
##########################
#不混淆log(测试时设置,发布版本去掉)
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
#不打印com.niubashaoye.ndk.lib包下的所有信息
-dontwarn com.niubashaoye.ndk.lib.**