1 ProGuard简介
ProGuard是一款免费的Java类文件的压缩器(Shrink)、优化器(Optimize)、混淆器(Obfuscate)和预验证器(Preveirfy)。
1) 压缩(shrink):用于检测并递归确定使用哪些类和类成员,删除没有使用的类、字段、方法和属性;
2) 优化(Optimize):对字节码进行优化,非入口的类和方法可以使私有、静态或final,删除未使用参数,移除无用指令;
3) 混淆(Obfuscate):使用简短无意义名称重新非入口的命名类名、字段名和方法名,使代码库更小,更高效,并且更难以进行逆向工程;
4) 预检(Preveirfy):主要是在Java平台上对处理后的代码进行预检;
2. 优点
1. 精简代码库,可以更高效进行加载和更小的内存占有;
2. 代码更加难以逆向工程;
3. 重新进行定位和预检,可以充分利用jdk更快加载;
4. 混淆速度很快;
3. ProGuard文档
3.1 官网文档:
3.2 本地文档
在sdk文件中有proGuard的文档,eg:android\sdk\tools\proguard\docs,打开main.html
4. ProGuard执行流程
ProGuard会读取Input jar压缩为压缩码,然后优化为优化码,再混淆为混淆码,最后对代码进行预检,生成input jars;但是Library jars是始终不变的;