在 Andorid 项目遇到了一个比较诡异而隐蔽的 bug: 使用网络请求获取一个数据,在测试环境中表现一切正常,而在正式包中这个获取的数据却一直为 null。
在测试环境中数据正常,说明我写的代码没问题,但是为啥在正式环境中数据就空了呢?
我从两个方面进行了分析:
这个获取数据的过程分为两步。第一步是网络请求获得 JSON 数据,第二步是把获得的 JSON 数据使用 Gson 转换成 Java Bean。看日志发现网络请求是正常的,问题肯定出现在把 JSON 数据转换成 Java Bean 的过程中。
从测试包和正式包的区别这个角度去思考。两个包的差别在于使用的签名不同,且正式包使用了代码混淆、资源压缩优化。
不断调试测试,最后发现是我把 Java Bean 放错了位置(或者说是 Gson 混淆配置不正确)而引起的问题。
##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configur
使用Gson转化实体类时的混淆配置
最新推荐文章于 2024-05-01 05:13:27 发布