soap 网络请求 小米 2S 异常

soap 网络请求 小米 2S 异常

1. 问题描述

系统环境:MIUI 7 6.3.17开发版 Android 5.0.2

错误信息

04-06 18:27:49.448: E/AndroidRuntime(27689): java.lang.NoSuchFieldError: No instance field headerOut of type [Lorg/kxml2/kdom/Element; in class Lorg/ksoap2/serialization/SoapSerializationEnvelope; 
 or its superclasses (declaration of 'org.ksoap2.serialization.SoapSerializationEnvelope' appears in /system/framework/wifi-service.jar)

或者错误信息为:

04-07 11:12:34.094: W/System.err(31008): java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject

2. 问题分析

定制版的 Android OS 中自带了 saop jar 和 项目中使用的 saop 版本不一致,系统引入的 jar 优先级高,导致 load class 时 引入系统中 jar 的 class 出现了不兼容问题。( 如有雷同 纯属 Y_Y )

3. 解决方案

为了避免 load 系统中其他版本的 saop jar 中的 class 出现兼容问题;只需要修改 saop jar 中的 package name。

3.1 准备工具
  • jarjar.jar

  • 修改 package name 规则文件 r.txt,内容如下:

    rule origin.package.name.** new.package.name..@1
  • 将 origin.jar、jarjar.jar 和 r.txt 放到同一个目录下,在命令行中进入到该目录下,执行

    java -jar jarjar_1.4.jar process ./r.txt ./origin.jar ./out.jar
  • 查看修改后的 package name

    java -jar jarjar_1.4.jar strings out.jar

4. 总结

踩坑之旅,一路惊喜,enjoy it,this is life !

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值