解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题

原创 2016年06月07日 19:14:32

使用gson解析服务器端接受的json字符串,然后用数据线连接手机和电脑,在eclipse里直接run as application 安装app 。这种情景下解析json数据是没有问题的。

然而我用混淆机制保护app,然后export app后解析json数据就抛异常,app崩溃。

最后查找log,才发现是混淆机制打包app时没有对gson jar进行处理。

解决办法:

1、 是不要混淆Google Gson jar包中的类    

2、 实现 实体类中所有的属性名称也不能被混淆


  原因主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为客户端代码中的 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.** { *; } 

# Application classes that will be serialized/deserialized over Gson 

#-keep class com.google.gson.examples.android.model.** { *; } 

-keep class XXXX.domain.** {*;}  #这句非常重要,主要是滤掉XXXX.entity包下的所有.class文件不进行混淆编译

#不要混淆xUtils中的注解类型,添加混淆配置:
-keep class * extends java.lang.annotation.Annotation { *; }



代码混淆 GSON完满解决

头疼的问题,json使用了google的gson三方包,可是混淆的时候出了问题 明明已经按照gson的官方文档,把混淆脚本加上去了,却还是出问题。 今天同事找到一篇博客,关于这个问题的: ...
  • Liuqz2009
  • Liuqz2009
  • 2017年05月06日 16:19
  • 634

google gson 使用proguard混淆代码注意事项

这里不介绍怎样开启代码混淆功能。具体方法可以参照: http://developer.android.com/tools/help/proguard.html http://proguard.sou...
  • yuxiaohui78
  • yuxiaohui78
  • 2015年07月14日 23:41
  • 11080

使用Gson混淆遇到的NullPointException

在Debug调试中,Gson解析是正常的,一旦变成release版本,加入混淆,Gson解析的Bean对象,始终为空,解决这一问题的方案: 在proguard-rules.txt中加入以下几个:-d...
  • zouchengxufei
  • zouchengxufei
  • 2015年06月11日 21:59
  • 971

代码混淆 - Gson解析bug

项目中使用Gson解析json数据,未做混淆处理时,网络访问及解析json数据正常。作代码混淆时,依据官方demo,配置Gson的混淆。混淆后,网络访问出现了问题,数据不能正常加载。Debug跟踪发现...
  • IO_Field
  • IO_Field
  • 2016年04月11日 14:48
  • 1870

工程带有Fastjson或Gson等的第三方包的混淆配置

工程中使用了fastjson,无奈,对工程做混淆的时候总是报错过不去,后来过去了又出现使用fastjson的地方数据不正确的问题,试了好多办法才成功,废话不多说,添加的代码: ##----------...
  • taotao19880301
  • taotao19880301
  • 2013年12月04日 15:23
  • 5978

Android中Gson解析和生成JSON字符串讲解,GsonFormat一键生成对应的数据对象

工作内容: 1.如何Gson解析JSON字符串讲解。 2.LruCache缓存机制的讲解。 学习分享: 一、Gson解析JSON字符串 1.需明确Gson解析JSON字符串与使用JSONObject,...
  • yingtian648
  • yingtian648
  • 2016年09月12日 21:49
  • 2043

使用Gson解析json格式的字符串的正确方式

开发环境:Android Studio     开始前先添加google的依赖包,添加方法:在builder.gradle文件中添加'com.google.code.gson:gson:2.3.1' ...
  • wyb112233
  • wyb112233
  • 2015年12月04日 21:24
  • 26091

Android入门——数据解析之使用GSON解析JSON字符串(二)

Gson是Google的一个开源Java库,可用于将简单的Java对象POJO(Plain Ordinary Java Object,实际就是普通JavaBeans)转换为JSON字符串形式。同时也可...
  • CrazyMo_
  • CrazyMo_
  • 2017年11月13日 10:57
  • 250

java解析json字符串的两种方法详解(Android通用)

java解析json字符串的两种方法详解(Android通用)
  • canot
  • canot
  • 2016年01月23日 20:20
  • 9965

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

转载:http://blog.csdn.net/goleftgoright/article/details/8555597 -proguard-project.txt   ##----------...
  • u013680097
  • u013680097
  • 2015年11月19日 17:35
  • 2315
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
举报原因:
原因补充:

(最多只允许输入30个字)