Eclipse配合ADT为Android项目添加Proguard混淆的简单新方法

之前我曾经写过一篇如何为用ADT创建的Android项目添加Proguard混淆支持的文章(
为Eclipse ADT创建的android项目通过ant添加proguard混淆支持
),当时我就说过,相信随着Google Android的不断更新发展以及Eclipse ADT插件的不断改进,总有一天,做Android项目时能够和J2ME项目一样方便的一键打包混淆。现在新版的SDK和ADT就已经添加了这样的功能(SDK Tools中已经整合了Proguard的发行包,连这步配置都省了!),虽然还不是一键,但也就是小改一个配置文件的事,相对以前的手改ant xml build file的做法来说已经是极大的简化了添加混淆支持的难度了。

先说说我写这篇文章时用的开发环境:Eclipse 3.5.2+ADT 9.0.0+SDK Tools R9+SDK Platform-tools R2。

声明我不保证在其他版本的IDE ADT和SDK Tools下我的方法是否可行且不会产生问题!

有一个问题需要先注意一下,就是现在版本的SDK和ADT的整合Proguard混淆对有空格的SDK路径和项目路径支持不好,所以混淆之前先把空格路径的问题解决一下,虽然我记得之前的手改xml方法好像不太会有空格路径问题,不过这次还是不要在SDK和项目路径中出现空格为好,免得自找没趣。

其实在用比较新版的SDK和ADT创建Android项目时,你会发现生成的项目结构里多了一个以前没有的文件:proguard.cfg,这就是SDK整合了Proguard的一个重要标志(具体从哪版开始变成这样我还真没注意),有兴趣你可以打开看一下,做过原来ant xml方式混淆的朋友可以看出来这里面写的就是当初Proguard混淆target里的混淆设置参数,什么keep啊之类的,当时是要自己写,这次是SDK直接生成好了!

虽然有proguard.cfg,但是默认情况下,混淆是没有启用的,想打开混淆支持,只需要在default.properties中加入这样一段参数:proguard.config=proguard.cfg就可以了(注意:这个文件里的注释写着类似这个文件是自动生成的,所作修改可能会被覆盖等等,让把自定义的东西加到额外的build.properties里,其实也无所谓,盖了也就是一句话的事!),简单明了。

然后在执行项目打包apk时sdk就会自动添加Proguard混淆支持了,可以右键项目->Android Tools->Export Signed (或Unsigned)  Application Package…,生成的apk包可以用如apktool解包看看混淆效果。

PS:其实以前懒得弄Android混淆的一个原因是改xml太麻烦,加点外部lib就得更麻烦的加一些参数,同时还有另一个原因就是混淆的apk发布到market上,如果有用户的机器在程序出错时支持上传trace信息的话,那么你在market上看到的记录都是不可读的混淆后的名字,也是一件麻烦事。后来发现market上提了一句如果用proguard混淆后的apk可以有方法将trace信息反映射回去,成为可读信息的方法,查了一下,发现官方开发网站中就有提到,有兴趣的朋友可以研究一下:http://developer.android.com/guide/developing/tools/proguard.html (有墙,你懂),这样Proguard在Android上的实用性就更好了!

博主友情提示:

如在您的评论中需要提及如QQ号、微信号、电子邮件地址或其他隐私敏感信息,欢迎通过>>博主专用加密工具v2<<加密后发布,原文只有博主可以看到。