

本例使用的是Proguard 7.2.2,可以官网直接下载
链接:https://pan.baidu.com/s/1PejprpEAFZrZjNVPjGc5eQ
提取码:3jpp
启动bin目录下的proguardgui.bat


1、打开input\output
上面的窗口设置输入的jar包和输出的jar包名称,
下面的窗口设置依赖的jar包,rt.jar必选,如果有其他依赖也加入到这个窗口

mavne项目请加入plugin插件一次性打包依赖到项目下的lib目录 ,然后一键全选导入
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-dependency-pluginartifactId>
<version>2.8version>
<executions>
<execution>
<id>copy-dependenciesid>
<phase>packagephase>
<goals>
<goal>copy-dependenciesgoal>
goals>
<configuration>
<type>jartype>
<includeTypes>jarincludeTypes>
<outputDirectory>liboutputDirectory>
configuration>
execution>
executions>
plugin>
2、打开shrinking,这个选项是可选的,作用是移除无用的字段、类和方法的,如果开启的话最好和optimization一起开启,注意开启shrinking需要选定一个keep(不优化的字段或者方法),根据需要选择,否则proguard运行报错

鼠标悬停可以看到选项的提示信息

3、打开Obfuscation,这里是配置混淆的地方,选中Apply mapping【使用映射】 、Obfuscation dicionary【字段方法混淆】、Class obfuscation dicitionary【类名混淆】、 Package obfuscation dicitionary【包混淆】,填入map.txt的路径,map.txt是一个混淆名称的集合文本,内有596个不重复的混淆名称,已包含到下载文件中,底下窗口可以设置不进行混淆的类和方法

map.txt内容如下,混淆名称规则取自 allatori ,收费的商业java代码混淆工具

4、打开Optimization,这里是优化代码的选择,一般和shrink一起使用,Allow access modification表示允许优化过程,注意Merge interfaces aggressively 在java中不被允许,如果选中,导出的jar无法运行,优化次数一般5次就可以了

5、打开information,preverify是给类添加预校验信息,java6以上要求勾选,target指定jdk版本,底下 keep directories 可以选择保存指定包名

6、最后打开process,直接运行,等待混淆结果即可
