proguard是一款能够用于Java字节码.class文件进行优化和压缩的代码混淆工具,它通过混淆类、字段以及方法的名称来提供对反向工程的最小保护,并且在代码的处理上能够通过移除无用代码,使用简短无意义的名称来重命名类、字段和方法从而能够达到提升代码保护的目的,最终我们会获取一个较小的apk文件,而这个较小的apk文件使得我们更难于进行程序的逆向工程破解。同时为了解决大多数用户遇到的资源寻找难题,并且提供简易的配置教程帮助用户更好的进行代码混淆操作,同时工具已集成到Android构建系统中,所以我们不用手动调用这个工具,我们可以选择在只发布模式下构建系统的时候再去运行,极大的方便了用户程序工具的调用操作。有需要的用户可以在本站下载!
注:下载包中有proguard4.8安装包以及软件使用说明,安装包在未使用时请不要轻易删除和更改文件类型。配置教程
1、准备好你的jar包,我在这里举例叫做test.jar;
2、解压工具,执行bin目录下的proguardgui.bat,运行如图,点击左边“input/output”菜单;
3、点击右边的“add input”加入我们要混的jar包:test.jar,点击右边的“add output”填入我们要输出的jar包(命名随便),这里我写test_out.jar。注意输出的jar包,要自己手工填写,添加支持库,下边的“Library jars,wars,ears .....”那个框,点击右边的“add”,说明一下,这里最好把你的
myeclipse里java project里的libraries所有Library的jar包,copy到一个目录,然后在这里加入这些jar包;;
4、做完以上步骤后就差不多了,点击“shrinking”,设置成如下图;
5、点击“obfuscation”,设置成如下图;
6、点击“optimization”,设置成如下图;
7、点击“process”,再点击“save configuration”,在弹出的对话框中,输入要保存的配置文件名称(这里我的是test.pro),最后点击“保存”,至些图形化的设置已经完成;
优化种类
除了在压缩操作删除的无用类,字段和方法外,ProGuard也能在字节码级提供性能优化,内部方法有:
常量表达式求值
删除不必要的字段存取
删除不必要的方法调用
删除不必要的分支
删除不必要的比较和instanceof验证
删除未使用的代码
删除只写字段
删除未使用的方法参数
像push/pop简化一样的各种各样的peephole优化
在可能的情况下为类添加static和final修饰符
在可能的情况下为方法添加private, static和final修饰符
在可能的情况下使get/set方法成为内联的
当接口只有一个实现类的时候,就取代它
选择性的删除日志代码
混淆规则
1.如果使用了Gson之类的工具要使JavaBean类即实体类不被混淆。
2.如果使用了自定义控件那么要保证它们不参与混淆。
3.如果使用了枚举要保证枚举不被混淆。
4.对第三方库中的类不进行混淆。
a.混淆时保护引用的第三方jar包
如:-libraryjars libs/baidumapapi_v3_2_0.jar #保护引用的第三方jar包不被混淆;
注意:在使用Eclipse+ADT时需要加入-libraryjars libs/...,如果你是使用Android Studio开发的项目则不需要加入libs包中的jar包,这是因为,通过Android Studio进行混淆代码时,默认已经将 lib目录中的 jar 都已经添加到打包脚本中,所以不需要再次手动添加,否则会出现“ java.io.IOException: The same input jar is specified twice” 错误。
b.混淆时保护第三方jar包中的类不被混淆
如:-keep class com.baidu.** { *; } #让ProGuard不要警告找不到com.baidu.**这个包里面的类的相关引用;
-dontwarn com.baidu.** #保持com.baidu.**这个包里面的所有类和所有方法不被混淆。
点击星星用来评分