28 ProGuard混淆介绍
Java源代码(.java文件)通常被编译为字节码(.class文件)。通常情况下,编译后的字节码仍然包含了大量的调试信息:源文件名、行号、字段名、方法名、参数名和变量名等,这些信息使得APP很容易被反编译和通过逆向工程获得完整的程序代码。
ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具:
可以删除无用的类、字段、方法和属性。
可以删除没用的注释,最大限度地优化字节码文件。
还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。
常常用于Android开发用于混淆最终的项目,增加项目被反编译的难度。
ProGuard对Java类中的代码进行以下四步的处理:
1压缩(Shrink):用于检测和删除没有使用的类,字段,方法和属性。
2优化(Optimize):对字节码进行优化,并且移除无用指令。
3混淆(Obfuscate):使用a,b,c等无意义的名称,对类,字段和方法进行重命名。
4预检(Preveirfy):是在Java平台上对处理后的代码进行预检。