No static method asAttributeSet(Lorg/xmlpull/v1/a;)Landroid/util/AttributeSet;studio混淆报错

在使用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

你可能感兴趣的:(No static method asAttributeSet(Lorg/xmlpull/v1/a;)Landroid/util/AttributeSet;studio混淆报错)