1、在使用eclipse导出jar包的时候,必须勾选对应的add directory entires ,否则导出的jar包放到war包下的WEB-INF/lib时,不能正常运行
2、使用proguard进行混淆
A)首选选择对应的需要混淆的jar包文件(上面第一步中导出的jar包)
B) 选择混淆后的jar包文件存放路径和导出的文件名
C)增加需要依赖的jar包文件(本步最为重要,经常会报很多错误,都是因为导入的jar包中共同实现了一个类,需要非常仔细排除多余的jar包)
D) 选择shrinking,下所有的都不要选择
E)obfuscation,选择Obfuscate,Use mixed-case class names,flatten package hierarchy, keep attributes
keep parameter names,native method names,.class method name
F)optimization,选择Optimize,romove选项全部选中
G)information,选择对应的jdk版本(Target)
H)process,选择save configurations
3、用文本编辑,打开刚才保存的配置文件(.pro),在-keepparameternames下面增加自己混淆java文件的配置,如:
#解决springmvc不能自动注入的问题
-keepdirectories
# java.lang.ClassFormatError: LVTT entry for 'a' in class file ×× does not match any LVT entry
# 这个貌似是Proguard的bug,使用下面的代码解决
#
-optimizations !code/allocation/variable
# 20171102add end
# 保留单个类start
-keep public class net.test123.filter.SystemBaseFilter {
<fields>;
<methods>;
}
-keep public class net.test123.system.module.bean.* {
<fields>;
<methods>;
}
# 不混淆实体的字段和方法,jsp的表单里面会有这些属性的值,混淆之后,会出现无法提交表单情况
-keep class net.test123.**.model.** {
public private protected <fields>;
public <methods>;
}
4、先关闭proguard,再打开proguard,导入修改后的pro文件,点击process页签,查看配置信息(view configuration),点击process按钮,等待混淆包的产生。