目前eclipse和sdk默认对打包的jar包代码都没有进行代码混淆,鉴于java代码很容易被反编译,因此对安全性要求比较高的jar包而言,对其进行代码混淆是非常必要的。下面对jar包代码混淆的操作步骤进行如下说明:
1.找到sdk自带的专业的代码混淆工具Pro Guard----proguardgui.bat,该文件在你的sdk目录下的sdk\tools\proguard\bin文件中:如下图:
图1
点击运行该程序,会弹出如下的运行界面:
图2
2.准备资料:
在进行jar包混淆的时候需要准备你制作jar包的时候需要应用的所有的第三方jar包和so文件,最好这个第三方资源都整理到一个文件家中,但事后方便添加;
图3
如下三个jar包,都要作为准备材料。
3.准备好的你需要混淆的jar包,以及混淆后你需要存放的目录。
4.开始混淆。
图4
如上图所示,1表示加载配置文件,由于配置文件长什么样,对于新手来说,肯定不知道,没关系,我们让这款软件帮我们生成一个半成品,然后再在半成品的基础上修改就可以了,所以我们点击next,就来到了下面这个界面,那么我们之前准备的材料现在要导入了。
5.导入,需要混淆的jar包,以及该jar包依赖的第三方资源;
图5
途中1.add input,点击找到你要混淆的目标jar包,add output,就是混淆好后的jar存放目录,这个根据自己的兴趣爱好设置。途中2就是需要添加之前你准备好的依赖的三方资源,什么jar包,so库文件,凡是你的目标jar包依赖的统统加入。其实这个proguard软件非常方便,左边就是对应的菜单栏。 这一步完成了,就是一直点击右下加的next按钮。直到下面这个目录Process。
6.process目录。
图6
接着,我们到了process操作界面,下面是就是上面提到的非常重要的配置文件的生成了,上图中的1,就是浏览配置文件,我们点击它就会出现软件默认给我们初始化好的混淆配置文件,上图中的2就是保存这个系统默认的配置文件。为什么需要这个配置文件呢?这个配置文件就是告诉这个软件,我们jar包中的那些类不能混淆,因为这些特殊类的一但混淆了,我们的jar包就不能正常工作了,那么jar包代码混淆毫无意义了。
之前说过我们不知道这个配置文集那长啥样,那我们现在保存一下系统默认的配置文件,然后在它的基础上修改我们需要保存的类,去掉不需要保存的类,然后重新装载配置文件,(l这个时候就知道图2右下加的LoadConfiguration按钮的作用了吧)。
7.保存以及修改配置文件。
图7
图7就是保存系统默认的配置文件,注意以pro为后缀的文件。然后找到该文件,用记事本或者其他软件比如notpad++,打开这个配置文件,如图8所示。
图8中,我们可以知道配置文件的书写格式,前面都是引入的库文件的申明,这个我们不用管。主要看图8中的1和2。1表示要保存main方法,因为这是java中的主入口,如果你的jar包中不包含该方法,则必须用#把这一行去掉。2则表示保存枚举方法,*通配符就是表示所有的枚举都保存。我们需要保存自己的类,也是如此的语法,例如,要保存jar包中MyActivity.class这个类,那么只需要加上这一句就可以了:
-keep com.examle.demo.MyActivity也就是完成的类名,如果需要保留这个类里面所有的方法和变量,则在配置文件中加上这句:-keep com.examle.demo.MyActivity{*;},如此就可以了。
当然,官方有专门的保住文档,主要帮助解决配置文件书写的规则以及常见问题的 解决方法的。网站网址:
http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass
图8
8.运行process
当配置文件配置好后,我们点击该软件的左边菜单栏的第一项“ProGuard”,然后点击右下角的LoadConfigration,加载修改好的配置文件,然后一直点击next,直至出现process,然后点击process,系统就会运行起来,如果没有错误,最后在文档末尾处会出现successful的提示。至此,jar包混淆完成。
9.注意事项。
配置文档,如果书写语法错误,会出现无法加载的错误,其他的各种报错,请参照官网的教程进行修改。一般需要在新的工程中引用的类或者方法,需要在配置文件中保留下来,不能混淆,否则就会报找不到该类或者该方法的错误。