这个文章以后会经常更新 先记录下几个重点的问题
1、个人常见的混淆问题
开发过程中经常出现测试版好的 发正式版就报错
后来通过抓取异常报错分析到是混淆导致的,因为对混淆的规则和原理不太清晰
遇到不懂得技术就先去查询
混淆是什么?
为什么需要混淆?
混淆的规则如何配置?
混淆的原理?
带着这4个问题去学习一门技术就容易记住 下次再出现类似问题也容易解决。
通过学习 我个人对混淆理解是 混淆是存在一个proguard-rules.pro文件配置
proguard分成了四大部分 压缩 优化 混淆 预校验,当然我们做app开发 一般遇到的是混淆导致无法找到对应的类出现的异常 我们只需要对混淆规则熟悉就好了
** -keep 配置的关键字分成6大类 **
-keep -keepmembers -keepclasseswithmembers 这一类是防止被删除和重命名
防止压缩阶段被删除 混淆阶段被重命名
-keepnames -keepmembersnames -keepclasseswithmembersname这一类是防止被重命名
1.如果只声明被保护的类 没有指定成员 只会保护这个类名和无参构造函数,其他成员属性和方法还是会被 压缩 优化 混淆
2.如果声明保护一个方法 只会保护这个方法名不会被修改 里面其他的代码还是会被 压缩 优化 混淆
通过以上学习和了解基本能解决正式版因为混淆导致的崩溃异常了
再解释一下 混淆的原理
当然为了防止正式环境出问题 在gradle文件配置debug{} 里面配置minifyEnable shrinkResource 都为true