Android如何代码混淆

Android 代码混淆后有什么用

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

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

135428_F5PJ_1175007.png

# 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的路径,如何查看

135834_9UnK_1175007.jpg

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

135911_Eu5t_1175007.jpg

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

135923_J4Ve_1175007.png

 

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

135935_Itmi_1175007.png

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

140001_LQNS_1175007.png

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

140010_EwZA_1175007.png

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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值