我正在开发一个 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 应用程序。我试过删除垃圾箱、清理等,但没有用。就这一个,其他都没有问题。
我需要这个 pullparser,因为其他的似乎不太适合我的 xstream。
最佳答案
我在试图与 Android 应用程序集成的单独开发项目中遇到了同样的问题。问题在于 Android API 定义了类 XmlPullParser ( https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html ),这就是出现此冲突的原因。
我通过从允许使用类的 Android 定义版本的项目中排除 xmlpull 依赖项解决了这个问题。这是我的 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'
}
关于xmlpullparser 的 Android dalvik 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21146142/