如何混淆Android项目代码(ProGuard)防止反编译

learningITwell 2011-12-30

ProGuard简介

ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:http://proguard.sourceforge.net/

Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要的功能。

Android Eclipse开发环境与ProGuard

在Android 2.3以前,混淆Android代码只能手动添加proguard来实现代码混淆,非常不方便。而2.3以后,Google已经将这个工具加入到了SDK的工具集里。具体路径:SDK\tools\proguard。当创建一个新的Android工程时,在工程目录的根路径下,会出现一个proguard的配置文件proguard.cfg。也就是说,我们可以通过简单的配置,在我们的elipse工程中直接使用ProGuard混淆Android工程。

具体混淆的步骤非常简单。首先,我们需要在工程描述文件default.properties中,添加一句话,启用ProGuard。如下所示:

  1. # This file is automatically generated by Android Tools. 
  2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 
  3. # This file must be checked in Version Control Systems. 
  4. # To customize properties used by the Ant build system use, 
  5. # "ant.properties", and override values to adapt the script to your 
  6. # project structure. 
  7.  
  8. # Project target. 
  9. target=android-8 
  10. proguardproguard.config=proguard.cfg 

这样,Proguard就可以使用了。当我们正常通过Android Tools导出Application Package时,Proguard就会自动启用,优化混淆你的代码。

如何混淆Android项目代码(ProGuard)防止反编译

导出成功后,你可以反编译看看混淆的效果。一些类名、方法名和变量名等,都变成了一些无意义的字母或者数字。证明混淆成功!

ProGuard 的详细介绍:请点这里
ProGuard 的下载地址:请点这里

相关推荐