Android 开发中为了代码安全一般都会使用 ProGuard 进行代码混淆,它可以把类名、属性名和方法名变为毫无意义的 a, b, c 等,但是有些代码是不需要混淆的,这时需要配置 proguard-rules.pro
文件。这是许多开发者对代码混淆的认识,但是 ProGuard 更深入的内容呢,如何配置混淆规则呢,下面我就分享下 Android 中 ProGuard 那些事。
先敲敲黑板,划下重点:本文内容重点在第三节 – 自定义要保留的代码
ProGuard 简介
ProGuard 官网地址:https://www.guardsquare.com/en/proguard
ProGuard is a Java class file shrinker, optimizer, obfuscator, and preverifier. The shrinking step detects and removes unused classes, fields, methods and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names. These first steps make the code base smaller, more efficient, and harder to reverse-engineer. The final preverification step adds preverification information to the classes, which is required for Java Micro Edition and for Java 6 and higher.
ProGuard 的功能有四个:压缩、优化、混淆以及预校验。压缩环节会检测并移除无用的类、字段、方法和属性。优化环节会分析并优化方法的字节码。混淆环节会用无意义的短变量去重命名其余的类、字段以及方法。这些环节可以使得代码更精简,更高效,也跟难被逆向工程。预校验是针对 J2ME 和 Java 6 以上的,在 Android 开发中不需要。