xmlpull 无法加载任何工厂 class

xmlpull can not load any factory class

我正在尝试使用 apktool 使用如下所示的命令反编译 apk 文件,但它无法解码 Android 清单并引发异常。我已经用不同的应用程序对其进行了测试,并且总是得到相同的异常。我的 jre 库路径(即 /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/)中有 xmlpull-1.1.3.1、xmlpull_1_0_5 和 kxml2 的 jar,并且我已将这些路径包含在 CLASSPATH 中。请问我该如何解决?

apktool d uk.co.houseoffraser.apk

I: Using Apktool 2.3.0 on uk.co.houseoffraser.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
Exception in thread "main" brut.androlib.AndrolibException: Could not decode XML at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:145) at brut.androlib.res.decoder.XmlPullStreamDecoder.decodeManifest(XmlPullStreamDecoder.java:153) at brut.androlib.res.decoder.ResFileDecoder.decodeManifest(ResFileDecoder.java:140) at brut.androlib.res.AndrolibResources.decodeManifestWithResources(AndrolibResources.java:209) at brut.androlib.Androlib.decodeManifestWithResources(Androlib.java:137) at brut.androlib.ApkDecoder.decode(ApkDecoder.java:113) at brut.apktool.Main.cmdDecode(Main.java:160) at brut.apktool.Main.main(Main.java:72)
Caused by: org.xmlpull.v1.XmlPullParserException: could not load any factory class (even small or full default implementation); nested exception is: org.kxml2.io.XmlReader at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:225) at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:76) at org.xmlpull.v1.wrapper.XmlPullWrapperFactory.(XmlPullWrapperFactory.java:52) at org.xmlpull.v1.wrapper.XmlPullWrapperFactory.newInstance(XmlPullWrapperFactory.java:29) at brut.androlib.res.decoder.XmlPullStreamDecoder.decode(XmlPullStreamDecoder.java:49) ... 7 more

我终于发现 xmlpull jar 例如,xmlpull-1.1.3.1.jar,xmlpull_1_0_5.jar 是默认的 xml 解析器即使您的 CLASSPATH 中只有 KXML2 解析器,它也会始终被使用。从 jre 扩展库(例如,/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/)中删除 xmlpull 解析器可解决此问题。即使 CLASSPATH 有其他 xml 解析器,只要 jre 库中只有 KXML2 jar,它就可以工作。