Android ProGuard 混淆 详解
来源:互联网 发布:生活的乐趣 知乎 编辑:程序博客网 时间:2024/06/05 14:29
现在写的app 基本都是经过混淆了的,如果不混淆, 发布出去,别人一反编译 就可以直接看你的源码了
ok 来说一下混淆吧:
我现在用的AndroidStudio , 只需要在 build.grade 的配置文件中配置如下即可:
proguardFiles getDefaultProguardFile 就是制定 混淆规则的文件, AndroidStudio默认生成了proguard-rules.pro 文件
混淆 ProGuard常用语法
Android 混淆原则:
反射用到的类不混淆
JNI方法不混淆
AndroidMainfest中的类不混淆,四大组件和Application的子类和Framework层下所有的类默认不会进行混淆
Parcelable的子类和Creator静态成员变量不混淆,否则会产生android.os.BadParcelableException异常
使用GSON、fastjson等框架时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象
使用第三方开源库或者引用其他第三方的SDK包时,需要在混淆文件中加入对应的混淆规则
有用到WEBView的JS调用也需要保证写的接口方法不混淆
先看看google默认混淆文件: \sdk\tools\proguard\proguard-android.txt
如果加入一些自己的混淆规则 只需要在 proguard-rules.pro 中文件加入自己的混淆规则即可,
其实google以及给我提供很好的打包规则, 即proguard-rules.pro 啥也不写, 我打出来的release包也是混淆好的
但是我们会遇到一些情况, 不得不 添加自己的混淆规则:
1. 代码中使用了反射,如一些ORM框架的使用
需要保证类名 方法不变, 不然混淆后, 就反射不了
2. 使用GSON、fastjson等JSON解析框架所生成的对象类
生成的bean实体对象,内部大多是通过反射来生成, 不能混淆
3. 引用了第三方开源框架或继承第三方SDK,如开源的okhttp网络访问框架,百度定位SDK等
在这些第三库的文档中 一班会给出 相应的 混淆规则, 复制过来即可
4. 有用到WEBView的JS调用接口
没真么用过这块, 不是很熟, 网上那个看到的
5. 继承了Serializable接口的类
在反序列画的时候, 需要正确的类名等, 在Android 中大多是实现 Parcelable来序列化的
ok 其实自己加入的规则 一般都是说,某某类 不混淆等等
如果用到了反射需要加入 :
如果想让一些bean 对象不混淆, 里 com.czy.bean 包下面的全是 Json框架生成的bean对象, 那么只需加入:
继承了Serializable接口的类,需要加上:关于第三方的库的, 一班都是看他们的官方文档
有用到WEBView的JS调用接口,需加入如下规则:
不混淆某个类:
不混淆某个类和成员变量:
移除一些log代码:
移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
上面这些内容大多都是看的别人的, 自己记录下会更有印象:
参考了一下内容:
https://github.com/D-clock/Doc/blob/master/Gradle/3_ProGuard%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95%E5%92%8C%E6%89%93%E5%8C%85%E9%85%8D%E7%BD%AE.md
官方文档:
http://proguard.sourceforge.net/index.html#manual/usage.html
阅读全文
0 0
- Android Proguard混淆详解
- Android ProGuard 混淆 详解
- Android ProGuard 混淆 详解
- Android ProGuard 混淆 详解
- Android ProGuard 混淆 详解
- Android ProGuard 混淆 详解
- Android ProGuard 混淆 详解
- Android ProGuard 混淆 详解
- Android项目混淆ProGuard详解
- android 混淆文件proguard.cfg详解
- android 混淆文件proguard.cfg详解
- android 混淆文件proguard.cfg详解
- android 混淆文件proguard.cfg详解
- android 混淆文件proguard.cfg详解
- Android:混淆文件proguard.cfg详解
- android 混淆文件proguard.cfg详解 .
- android 混淆文件proguard.cfg详解
- android 混淆文件proguard.cfg详解
- Java 枚举(2)
- 人工智能学习笔记-Keras介绍及简单应用
- 回溯法解决n皇后问题
- Badboy自动化测试工具10 导出脚本用于JMeter性能测试
- 配置ActiveMQ连接Broker使用failover协议
- Android ProGuard 混淆 详解
- Spring Boot 中使用 Dubbo 详解
- Spring Boot
- 004--easyui的combobox设置下拉框默认选中某一项
- Fuel 9.0安装
- jQuery和javascript的那些宽高
- Spline(样条)曲线(穿过控制点CC++版本)
- 详解iOS11、iPhone X、Xcode9 适配指南
- 2017中国大数据技术大会(BDTC)日程表