Gson出现javaBean在打包后无效的问题
2015-11-12 18:18
363 查看
曾经,我遇到一个bug,同样的请求方法,定义在自定义控件TitleBar里面,在未打包的时候能拿到数据,但是,打包之后,怎么都看不到数据,各种方式,各种测试,最终发现,还是不行,拿不到数据,Today,我一步一步的检测到Gson解析的时候,我发现打包之后的数据,经过Gson解析后,就没有了。所有请求方法都没有问题,就单单这个不行,可纠结了。最终我发现:
原因是:因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,
解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。
在proguard.cfg文件中添加:
经过测试,一切正常。
新学习的一点知识,最终我去寻找我的那个javaBean,结果,被我不小心放到了其他的包中去了
这个,这样,哎╮(╯▽╰)╭
写博客纪念一下,happy
原因是:因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,
解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。
在proguard.cfg文件中添加:
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# Gson specific classes -keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.gson.** { *;}#这句非常重要,主要是滤掉 com.bgb.scan.model包下的所有.class文件不进行混淆编译
-keep class com.bgb.scan.model.** {*;}
经过测试,一切正常。
新学习的一点知识,最终我去寻找我的那个javaBean,结果,被我不小心放到了其他的包中去了
这个,这样,哎╮(╯▽╰)╭
写博客纪念一下,happy
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories