解决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 { *; }



相关文章推荐

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

转载:http://blog.csdn.net/goleftgoright/article/details/8555597 -proguard-project.txt   ##----------...

使用gson导致不能混淆的解决办法

由于使用了gson解析json字符串生成对象,导致混淆后的jar包不能正确使用。经过上网查阅资料,找到了正确的混淆方式。  原理:解压开混淆后的jar后发现,使用gson.from或者其他方法生成对象...

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

这里不介绍怎样开启代码混淆功能。具体方法可以参照: http://developer.android.com/tools/help/proguard.html http://proguard.sou...

代码混淆 - Gson解析bug

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

代码混淆 GSON完满解决

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

mac关于.bash_profile环境变量配置的问题

问题的起源是titanium不能用了,因为CLI的问题,大家的建议是安装nodejs,装完了之后呢还是不能用,查看.bash_profile发现/usr/local/bin在path里面,可还是没法用...

Android 混淆配置及Bug处理

//**为了防止apk反编译后源码泄漏,我们需要对发布的应用进行混淆打包。**好东西要分享:使用proguard混淆android代码 Android混淆打包那些事儿本项目的proguard-rul...
  • pengkv
  • pengkv
  • 2016年05月04日 17:56
  • 3162

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

开发环境:Android Studio     开始前先添加google的依赖包,添加方法:在builder.gradle文件中添加'com.google.code.gson:gson:2.3.1' ...
  • wjr1949
  • wjr1949
  • 2017年05月24日 18:14
  • 320

gson 使用以及打包apk发布的问题

使用android studio开发,解析json使用的是gson工具,调试什么的都正常,结果一打包发布,发现gson解析不到数据,出错,提示 java.lang.NullPointerExcepti...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
举报原因:
原因补充:

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