美文网首页Android技能树
android代码混淆后gson无法解析问题

android代码混淆后gson无法解析问题

作者: 磐龍 | 来源:发表于2017-03-06 16:40 被阅读160次

问题

最近在自己项目中遇到一个崩溃问题,debug版本不会,release版本会!!
一开始有点蒙,还是老老实实根据操作步骤以及崩溃log,先定位导致崩溃的代码位置。原来是某个JavaBeanGson解析json格式数据后,继续把这个对象给后面的业务逻辑使用然后崩溃了。根据打印log分析json字符串是正常啊?尴尬...

于是开始google,功夫不负有心人,有人遇到类似问题提到是混淆后JavaBean类的字段名称会变成a、b、c等之类的字符串,与json字符串中的key不一致了。

ok,原来是混淆问题,那就修改proguard-rules.pro文件!

解决

来看下混淆文件proguard-rules.pro文件,修改如下:

-keep class com.google.gson.examples.models.** { *; }
-keep interface com.google.gson.examples.models.** { *; }
-keep class com.google.gson.examples.upgrade.internal.VersionInfo {*;}

改好之后,重新打一个release包测试问题解决。反编译apk包发现这些JavaBean类没有被混淆,正是我们想要的。

总结

问题主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。
所以,解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。

相关文章

  • android代码混淆后gson无法解析问题

    问题 最近在自己项目中遇到一个崩溃问题,debug版本不会,release版本会!!一开始有点蒙,还是老老实实根据...

  • Gson混淆,遇到的问题

    Gson的混淆里面要对Gson解析的 自己写的 bean 进行混淆保护。 要不然Gson不识别混淆后的代码,会出现...

  • Android 库 Gson

    【Android 库 Gson】 引用: ★Gson 解析教程★★★ Gson的入门使用Gson全解析(上)-Gs...

  • 混淆Gson导致无法解析JSON

    1.使用Google的Gson解析Jason,需要引入gson-2.24.jar 引入方式修改gradle.bui...

  • 打Release包发现数据返回正常但显示不出来

    发现是混淆时混淆了bean类代码,使得不能解析出相应对象,取不出数据: 与服务端交互时,使用GSON、fastjs...

  • 混淆后json解析出错

    开启混淆后打包,程序出现json解析出错 原因:没有配置忽略要解析的model。(已经配置了gson忽略文件和泛型...

  • ProGuard详解

    Android分享:代码混淆那些事Android代码混淆之混淆规则Android-Dev-Favorites An...

  • Android Proguard混淆小记

    混淆的基本语法 常规不可混淆的代码 1.腾讯系列SDK混淆 2.GSON混淆 3.ButterkKnife混淆 4...

  • Gson序列化那些事

    Android开发中会经常解析json,使用retrofit框架常用gson解析json。Gson有一定的容错机制...

  • 遇到的问题

    新依赖的sdk,aar等,注意混淆Gson 解析数据类用到反射,所以数据类需要@keep 保证不混淆LayoutI...

网友评论

本文标题:android代码混淆后gson无法解析问题

本文链接:https://www.haomeiwen.com/subject/glgiittx.html