ProGuard是一个开源的Java类文件(.class)处理工具,它同时提供了命令行和图形界面。
ProGuard能够:
- 压缩(Shrunk ):检测未使用的类、字段、方法、属性,并移除
- 优化(Optimization):分析并优化方法的字节码,可以进行多步骤的优化
- 混淆(Obfuscation ):重命名类、字段、方法,使用更短且无意义的名字
- 预校验(Preverification ):为字节码添加预校验信息,预校验信息对Java 6+是需要的
上述功能可以单独使用,也可以在一次调用中按照下面的步骤一次性完成:
参数选项说明:
| 选项 |
说明 |
| -injars classpath |
指定输入的压缩包或者目录 |
| -outjars classpath |
指定输出的压缩包或者目录 |
| -libraryjars classpath |
指定输入所依赖的库。 需要注意的是,程序使用的运行时库需要明确指定(例如rt.jar) |
| -skipnonpubliclibraryclasses |
是否跳过依赖库中非public类,默认不跳过,跳过可以提升性能,因为库的非公共类一般与程序无关 |
| -dontskipnonpubliclibraryclasses |
不跳过依赖库中的非public类 |
| -dontskipnonpubliclibraryclassmembers |
不跳过依赖库中的非public类的成员,包括字段、方法 |
| -keepdirectories filter |
指定要保留的目录。 默认情况下所有目录都被移除 |
| -target version |
指定输出class的版本,默认保持和输入版本一致。 |
保留选项说明
| 选项 |
说明 |
| -keepclassmembers |
-keepclassmembers [,modifier,...] class_spec 指定要保留的类成员,如果它们所属的类被保留的话 |
| -keepclasseswithmembers |
-keepclasseswithmembers [,modifier,...] class_spec 指定需要保留的类及其成员,包括方法和变量 |
| -keepnames class_spec |
指定需要保留的类和类成员,如果在压缩阶段这些类没有被删除的话。该选项仅用于混淆阶段 |
| -keepclassmembernames |
指定名称要保留的类成员,如果在压缩阶段这些类没有被删除的话。该选项仅用于混淆阶段 |
| -keepclasseswithmembernames |
指定要保留的类和类成员,如果所有指定的类成员在经历了压缩阶段还存在 |
| -printseeds [filename] |
打印所有匹配-keep的类和类成员,默认打印到标准输出 |

最低0.47元/天 解锁文章
3151

被折叠的 条评论
为什么被折叠?



