[英]App crash on device HTC M8 with OS Lollipop for web service call
使用 ksoap 调用 Web 服务时,Android Lollipop 上的应用程序崩溃。
请看错误日志
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)
at com.-----.---------.-----.----.services.AuthenticateUser.createHeader(AuthenticateUser.java:77)
at com.-----.---------.-----.----.services.AuthenticateUser.authenticateUser(AuthenticateUser.java:49)
at com.-----.---------.-----.----.services.---------GenericServiceThread.callWS(GenericServiceThread.java:219)
at com.-----.---------.-----.----.services.---------GenericServiceThread.invokeWebServiceApi(GenericServiceThread.java:106)
at com.-----.---------.-----.----.services.---------GenericServiceThread.run(GenericServiceThread.java:89)
我已经在 Android 5.0 版的 Nexus 4 模拟器上测试了相同的应用程序并且运行良好。
我正在使用下面的代码来调用网络服务
mHttpTransportSE = new AndroidHttpTransport (url);
mHttpTransportSE.debug = true; // this is optional, use it if you don't
mHttpTransportSE.call(Configuration.COM_SOAP_ACTION_AUTHENTICATEUSER, envelope);
result = envelope.getResponse();
我也将 AndroidHttpTransport 更改为 HttpTransportSE 但不确定。
此更改是否解决了我的问题?
这个问题还有其他解决方案吗?
先感谢您。
我通过将 ksoap2 包名称更改为 ksoap2clone 来解决它。 我不知道解决方案是好的,但它现在正在工作。 如果您找到更好的解决方案,请分享。
文件在这里。
同样的问题在这里。 看起来HTC正在使用他们自己的ksoap2。 请参阅“ https://code.google.com/p/ksoap2-android/issues/detail?id=205&can=1&start=200 ”
我有同样的问题(HTC M8),但我使用的是带有依赖项的 ksoap2 3.4.0 jar。 从堆栈跟踪来看,很明显 HTC 中有人认为包含 ksoap2 是个好主意。 不幸的是,他们没有考虑清楚这一点,并在 Apache Commons 和 HttpClient 上犯了与 Google 相同的错误。
要重命名我使用的jarjar包,它似乎工作正常。
对于需要快速解决方案的任何人,这里是 jarjar 规则和命令行:
规则.txt
rule org.ksoap2.** org.repackage.ksoap2.@1
命令行
java -jar jarjar.jar process rules.txt ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar ksoap2-repackaged.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.