先说完整流程,正常开发程序,最后快要发布前再做混淆。想好需要混淆的规则,如有哪些接口和实体类是需要对外保留的,要是纯web程序就无所谓了,都加密了也行。如果项目用到了mybatis,mybatis接口和接口里面的方法不能混淆。
1.下载proguard
从github官方网站下载即可,地址GitHub - Guardsquare/proguard: ProGuard, Java optimizer and obfuscator
下载完成以后解压缩,我们使用bin里面的gui批处理运行。
2.在input/output里面点击input添加要加密混淆的jar,再点add output设置混淆以后的文件存储路径及名称。
在下面的library jars里面添加该jar引用的所有第三方jar包,包括jdk/lib里面的,jdk/jre/lib里面的以及项目里面的,这一步要是添加jar包不全面后续处理的时候会报错。
3.设置混淆规则,切到process步骤,点击保存配置,输入一个配置文件名称,如test.txt,然后打开该配置文件,手动编辑录入更加项目的混淆配置规则
如想保留 com.abc.def.Ggg这个类,则配置规则
-keep class com.abc.def.Ggg {
public * ;
}
如想保留 com.abc.def这个package下面的所有类及public方法不混淆可以配置规则
-keep class com.abc.def.* {
public * ;
}
如想保留 mybatis 接口不混淆,可以配置规则
-keep class com.abc.def.ghi.mapper.* {
public * ;
private *;
protected *;
}
如果想保留实体类都不混淆,可以配置规则
-keep class com.xxx.model.* {
public * ;
private *;
protected *;
}
4.修改完配置文件后,重新切换proguard回到第一个proguard项重新加载一遍配置文件,然后process处理就可以了。