扫码关注官方订阅号
自己写的代码混淆时需要注意什么?初学proguard,以及混淆与平时的代码规范有什么联系
欢迎选择我的课程,让我们一起见证您的进步~~
混淆中最需要注意的是代码中使用反射的部分,由于反射的使用大多数情况下是基于方法或者属性名称的,所以需要保证这些名词不被混淆才能使代码正常运行。一般Android官方或者第三方提供包的时候,也会给出一些混淆的忽略规则,虽然这些规格各不相同,但几乎所有规则的核心概念都是一致的,就是避免混淆使用反射部分的代码。
反射
反射的代码,系统接口,jni接口,序列化和反序列化的,与服务端交互的javabean这些不能混淆,如果用第三方包的话,需要去查看这些包的混淆规则,如果不知道直接不混淆就可以了,毕竟一般用的第三方包都是开源的,混淆不混淆都一样的
我之前在项目里遇到的一个bug就是混淆引起的。把一个类的名称写死在String里面。混淆之后类名发生改变,找不到这个类。找了好久才找到bug原因所在,很坑。
bug
String
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
混淆中最需要注意的是代码中使用
反射的部分,由于反射的使用大多数情况下是基于方法或者属性名称的,所以需要保证这些名词不被混淆才能使代码正常运行。一般Android官方或者第三方提供包的时候,也会给出一些混淆的忽略规则,虽然这些规格各不相同,但几乎所有规则的核心概念都是一致的,就是避免混淆使用反射部分的代码。反射的代码,系统接口,jni接口,序列化和反序列化的,与服务端交互的javabean这些不能混淆,如果用第三方包的话,需要去查看这些包的混淆规则,如果不知道直接不混淆就可以了,毕竟一般用的第三方包都是开源的,混淆不混淆都一样的
我之前在项目里遇到的一个
bug就是混淆引起的。把一个类的名称写死在
String里面。混淆之后类名发生改变,找不到这个类。找了好久才找到
bug原因所在,很坑。