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에는 Saopjar과 프로젝트에 사용된 Saop 버전이 일치하지 않고 시스템에 도입된jar의 우선순위가 높아서loadclass를 도입할 때 시스템에 도입된jar의class가 호환되지 않는 문제가 발생했습니다.(레이더가 있으면 Y Y)
3. 솔루션
load시스템의 다른 버전의saopjar의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
  • 수정된 패키지 name
    java -jar jarjar_1.4.jar strings out.jar
  • 보기
    4. 요약
    구덩이 밟기 여행, 깜짝 이벤트, enjoy it, this is life!
    참조:
  • http://www.apkbus.com/forum.php?mod=viewthread&tid=252993&fromuid=22608
  • http://www.apkbus.com/thread-252983-1-1.html
  • http://stackoverflow.com/questions/28339539/app-crash-on-device-htc-m8-with-os-lollipop-for-web-service-call
  • 좋은 웹페이지 즐겨찾기