安卓Dalvik转换用于XMLPull解析器

4

我正在开发一款Android应用程序,在其中一个组件上,我可以在Android之外进行测试,因为它不使用任何Android代码。

它使用xstream,我包含了以下库: xstream1.4.6 xpp3-min-1.1.4c xmlpull-1.1.3.1

当我在Android之外对我的代码进行单元测试时,一切正常。

但是当我尝试在Android上使用它时,我会遇到以下错误:

[2014-01-15 18:59:23 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;
[2014-01-15 18:59:23 - AndroidMentor] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;

这是在一个全新的Android应用程序/Android Junit应用程序上发生的。我尝试删除bin、清理等操作,但都没有用。只有这一个存在问题,其他的没有任何问题。

我需要使用这个pullparser,因为其他的好像不能很好地与xstream一起工作。

1个回答

2
我遇到了一个类似的问题,我正在尝试将一个独立开发的项目与Android应用程序集成。问题在于,Android API定义了XmlPullParser类(https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html),这就是冲突产生的原因。
我通过从项目中排除xmlpull依赖项来解决了这个问题,这样就可以使用Android定义版本的类。以下是我的app模块的build.gradle文件的依赖部分(仅为说明排除而列出):
dependencies {
    compile (project(':epublib:epublib-core')) {
        exclude group: 'xmlpull'
    }
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:support-v4:21.0.+'
}

“语法很重要。它必须是以下形式:”
compile (project(':project-name')) {
        exclude group: 'group-name', module: 'module-name' 
}

1
你所使用的组名和模块名取决于你要排除的项目。更多阅读:https://dev59.com/Bqbja4cB1Zd3GeqPmNBM#47327695 - OneWorld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接