Android混淆代码工具ProGuard

jopen 11年前

  Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来。

    我们可以从android sdk的tools目录下看到有一个proguard目录。说明具有了代码混淆的功能。

    Android混淆代码工具ProGuard

    至于如何进行代码的混淆。我们需要做的很简单:

    1、在用eclipse生成的android工程中都有一个project.properties文件,我们需要在该文件中增加下面一行代码:

1 proguard.config=proguard.cfg
</div> </div>

    如图所示:

Android混淆代码工具ProGuard

    2、写混淆脚本proguard.cfg

    我测试用的混淆脚本非常简单,只加了优化功能。如图所示:

Android混淆代码工具ProGuard

    对于proguard.cfg脚本的详细介绍参见:http://blog.csdn.net/laoyao_moyan/article/details/7353768

    我们可以看到混淆android代码非常容易,但是需要注意的是:在eclipse下通过Run执行来生成的bin目录下的apk文件并没有被混淆,只有通过加入证书发布的apk才会混淆。

    下面,我们来看看如何打包签名apk。

    1、生成keystore;

    在生成签名apk前,我们需要keystore,这个keystore可以用jdk下的keytool工具生成。

    在cmd下,用命令行生成keystore如图所示:

    Android混淆代码工具ProGuard

    按照上图中的命令,输入需要输入的内容。

    其中,-alias android.keystore是生成的keystore别名;

              -keyalg RSA是加密和数字签名的算法;

              -validity 20000是有效天数

    最后,会在jdk的bin目录下生成android.keystore文件。(这是因为keytool命令在jdk的bin目录下,当然,这个可以通过环境变量来设置)。

    2、用keystore生成签名apk。

    我们有了keystore,就可以生成签名apk了。

    Eclipse中,右键需要签名的工程->Android tools->export signed application package...

    这时会出现以下对话框:

    Android混淆代码工具ProGuard

    点击下一步:

    Android混淆代码工具ProGuard

    键入密码,点击Next:

    Android混淆代码工具ProGuard

    键入密码,再次点击Next:

    Android混淆代码工具ProGuard

    最后,点击Finish即可。

    这时会在jdk的bin目录下生成带签名的apk。

    下面是将我在github上的androidexample工程混淆了,效果如下:

    Android混淆代码工具ProGuard

来自:http://my.oschina.net/u/661133/blog/82553