android代码混淆后gson无法解析问题
2015-11-19 17:35
489 查看
转载:http://blog.csdn.net/goleftgoright/article/details/8555597
-proguard-project.txt
##---------------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 configure it to keep all of it.
-keepattributes Signature
# Gson specific classes
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
#这段话的意思是说,将com.google.gson.examples.android.model这个包下面的所有类
#不进行混淆。很关键!!!!其实,只要将
#java bean即android客户端的需要用gson进行解析的类给注释掉,不进行混淆编译既可以。
##---------------End: proguard configuration for Gson ----------
问题主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编
译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译
-proguard-project.txt
##---------------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 configure it to keep all of it.
-keepattributes Signature
# Gson specific classes
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
#这段话的意思是说,将com.google.gson.examples.android.model这个包下面的所有类
#不进行混淆。很关键!!!!其实,只要将
#java bean即android客户端的需要用gson进行解析的类给注释掉,不进行混淆编译既可以。
##---------------End: proguard configuration for Gson ----------
问题主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编
译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译
相关文章推荐
- Android手机安装busybox
- android使用setTheme的方式实现主题切换
- Android数据库查询效率进阶篇
- Android如何捕获手机回退键(BACK)实现程序退出?
- Android Support 包里究竟有什么
- Android开发艺术探索学习-IPC之Binder(二)
- 比较强大 优秀的开源框架 :Android图片加载与缓存:Android Glide 的用法
- android canvas画图
- Android中Handler详解,线程间通信机制
- Gradle打包android 项目
- Android点住按钮同时再点击按钮外的效果
- 活动生命周期
- android拍照和本地选择图片
- Android各个support library特征和区别(官方文档)
- Google Nexus5关于Android 6.0源码的同步,编译和烧写
- android zxing二维码横屏改竖屏
- Android 输入系统之InputDispatcher篇
- Shape Drawable解析
- android layout_weight 用法
- Android的BroadcastReceiver和EventBus区别是什么