ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:Java Obfuscator and Android App Optimizer | ProGuard。
Java的字节码容易反编译,为了保护Java源代码,对编译好的class文件进行混淆处理。ProGuard的主要作用是混淆,还能对字节码进行缩减体积、优化。
从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService,并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等。
忽略R文件的混淆:
-keep class **.R$* {*;}
忽略某个包的混淆:
-keep class packagename1.** {*;}