Proguard android代码搅混 防止反编译

Proguard android代码混淆 防止反编译

要达到代码混淆,让别人在反编译你的代码后看不懂,方法如下:

由于我的SDK和ADT20.0.1都是最新的,所以像网上的提供的使用proguard.cfg混淆代码的方式我看了,都是一样的,http://hi.baidu.com/jiaoyake/blog/item/9e4a8dddce354cc0b7fd48cb.html。都说会在项目文件下自动生成proguard.cfg,可是我的怎么也无法生成,因此也无法使用这个方法,搞得很头痛。

不过今天在看的时候,发现其实在项目文件下,自动生成了文件:proguard-project.txt, project.properties 两个文件,于是打开这两个文件,在proguard-project.txt中有:

By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt

于是打开这个proguard-android.txt这个文件,发现内容与上面所说的progurad.cfg差不多,估计功能也一样。

在文件project.properties中还有:

To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt


意思很明显,要想使用Proguard去混淆代码,只要将这句注释还原就行了#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt。

但是不能只是还原注释,我在尝试过之后,只有将这句话 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 放在target=android-10之后,才能生成apk.

Proguard android代码搅混 防止反编译


接着我反编译导出的APK,如下:

Proguard android代码搅混 防止反编译


发现在生成的jar文件中,所有的类名,变量名都变成了a,b,c等无法正确理解的名称,达到了预期的效果