Android如何代码混淆

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Android 代码混淆后有什么用

Android创建项目工程时会生成两个文件,project.properties,proguard-project.txt。旧版本是proguard.cfg,自新版本创建项目以后混淆文件的名字是proguard-project.txt文件,以前版本创建出来的是proguard.cfg文件,其实两个文件作用都相同。

1.首先打开“project.properties”文件

Android如何代码混淆_第1张图片

# 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

其实就是把前面的#号取消就可以了,当你取消这个注释后,此时签名打包的时候已经对你的项目进行了全局混淆,注意这里的说明,是全局混淆。如果你的项目使用了第三方包的话,它也会一起混淆, 那么你此时签名导出APK一定会出现错误(这里需要注意的是,一定要用export->android->export android application打包才有用,如果你用Eclipse里的RunBuild Project/Build All来生成Apk,是不会混淆代码的!这一点好多文章里没讲清楚,累得我编译运行了好多次,死活没效果)。

2.proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

这句话包含两个文件,相信大家能看到有个冒号做分割,proguard-android.txt文件引用的是默认配置(即所有项目通用的),proguard-project.txt是自己项目的一些特殊配置,最终配置由这两部分组成。

这里的${sdk.dir}是你配置sdk的路径,如何查看

Android如何代码混淆_第2张图片

sdk路径下tools->proguard文件夹下可以看到proguard-project.txtproguard-android-optimize.txt文件,这两个有什么区别呢,区别是有的,默认配置是没有优化功能的,带optimize才有,看单词也能看出来。

Android如何代码混淆_第3张图片

所以最后project.properties文件的配置是:

Android如何代码混淆_第4张图片

 

3.下面讲一下项目里的proguard-project.txt文件

Android如何代码混淆_第5张图片

如果有一些代码不能被混淆(这就是全局混淆后,签名打包失败的原因),比如你的项目里面添加了so文件,或者集成了淘宝广告,微信分享,qq登录之类的等第三方jar包,需要调用里面的方法,调用JNI访问so文件的方法或者qq登录的方法,再导出apk时可能会报错,也可能不会报错,但是在运行apk的时候一定会出现错误,这个时候就需要到proguard-project.txt这个文件了。

Android如何代码混淆_第6张图片

举个简单的例子,我的项目集成了qq登录和微信分享功能,按照微信和qq的开放平台内的集成文档添加混淆代码就可以了。

Android如何代码混淆_第7张图片

具体想看添加的代码是什么意思,请看 ProGuard基础


转载于:https://my.oschina.net/u/1175007/blog/475144

你可能感兴趣的:(Android如何代码混淆)