在使用studio混淆代码的时候,如果你是通过webService获取数据的,并且使用的是ksoap2-android-assembly-3.5.0-jar-with-dependencies.jar这个库去获取数据解析数据的,直接去混淆报错,从网上网友的解释中看到ksoap2里面XmlPullParser,XmlSerializer这两个类重复定义了,android系统也定义了这个类,在混淆的时候,系统不知道用哪个,抛出异常.在混淆的配置文件里面 添加如下代码
-dontwarn org.xmlpull.v1.XmlPullParser -dontwarn org.xmlpull.v1.XmlSerializer
就可以编译通过,打包出来的apk,但是这个apk在有些手机上不能打开,点击启动图标一闪而过,主要是三星和oppo手机安装无法打开报出如下异常:
UncaughtException detected: java.lang.NoSuchMethodError: No static method asAttributeSet(Lorg/xmlpull/v1/a;)Landroid/util/AttributeSet; in class Landroid/util/Xml; or its super classes (declaration of 'android.util.Xml' appears in /system/framework/framework.jar)
这个异常一看就是混淆的错误:
需要在配置文件里面添加如下代码:
-keep class org.xmlpull.v1.* {*;}
配置文件的完整的代码如下
-dontwarn org.xmlpull.v1.XmlPullParser
-dontwarn org.xmlpull.v1.XmlSerializer
-keep class org.xmlpull.v1.* {*;}
这样就可以完美解决问题.
借鉴https://www.jianshu.com/p/48c56e9048e7
解决ksoap2与XmlPullParser混淆问题
本文详细介绍了在使用ksoap2-android-assembly库进行WebService数据获取时遇到的混淆问题解决方案。通过在混淆配置文件中添加特定代码,解决了因XmlPullParser和XmlSerializer类重复定义导致的编译错误,并进一步解决了部分手机上应用无法正常启动的问题。

被折叠的 条评论
为什么被折叠?



