您的位置:首页 > 编程语言 > Java开发

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文件中添加:
# 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android json