1.开启混淆可以防止apk被反编译,但是会使某些类和方法找不到,所以要配置混淆规则使这些类和方法不被混淆
例如:
不混淆某个类 -keep public class name.huihui.example.Test { *; }
不混淆某个包所有的类 -keep class name.huihui.test.** { *; }
不混淆某个类的子类 -keep public class * extends name.huihui.example.Test { *; }
不混淆所有类名中包含了“model”的类及其成员 -keep public class .model. {*;}
不混淆某个接口的实现 -keep class * implements name.huihui.example.TestInterface { *; }
不混淆某个类的构造方法 -keepclassmembers class name.huihui.example.Test { public (); }
不混淆某个类的特定的方法 -keepclassmembers class name.huihui.example.Test { public void test(java.lang.String); }
One类下的所有public方法都不会被混淆 -keep class cn.hadcn.test.One { public ; }
One类下的JSONObject作为入参的构造函数不会被混淆 -keep class cn.hadcn.test.One { public (org.json.JSONObject); }
2.Android Studio配置
/**
* minifyEnabled true为打开,开启混淆会使编译时间变长,默认不开启
* proguard-android.txt 系统默认的混淆文件,具体在../sdk/tools/proguard/目录下
* proguard-rules.pro 项目中自定义的混淆规则
*/
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}