3

当我将 BoofCV 集成到 Android Studio 中时,发生了以下错误,

com.android.dex.DexException:多个dex文件定义了Lorg/xmlpull/v1/XmlPullParser;在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579) 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535) 在 com.android.dx.merge.DexMerger.mergeClassDefs (DexMerger.java:517) 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164) 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 在 com.android。 dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:334) 在 com.android.dx.command.dexer.Main。在 com.android.dx.command.Main.main(Main.java:106) 的 com.android.dx.command.dexer.Main.main(Main.java:245) 处运行 (Main.java:277) 错误:任务 ':app:dexDebug' 执行失败。com.android。

我的 build.gradle 文件是

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.example.huayu.boofcvandroidstart"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"

    //multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'

compile group: 'org.boofcv', name: 'all', version: '0.20'
}
4

2 回答 2

4

这是我处理这个问题的方式。像最初一样包含 BoofCV 罐子。然后将以下内容添加到您的 app/build.gradle

configurations {
    all*.exclude group: "xmlpull", module: "xmlpull"
}

这将删除有问题的 xmlpull。您可能还想包含 android 模块,它不是“全部”的一部分。

这是 BoofAndroidDemo 上的一个示例

https://github.com/lessthanoptimal/BoofAndroidDemo/blob/master/app/build.gradle

于 2015-12-03T07:18:31.003 回答
0

BoofCV在我的一个项目中使用过。您应该添加除 jar 之外的所有其他 BoofCV jar,XmlPullParser因为此 jar 与 Android 中已经存在的XmlPullParser冲突。

我通过下载所有 jars 添加了 BoofCV,并且只包括如下相关的:

dependencies {
            compile files('libs/BoofCV-android-0.19.jar')
            compile files('libs/BoofCV-calibration-0.19.jar')
            compile files('libs/BoofCV-feature-0.19.jar')
            compile files('libs/BoofCV-geo-0.19.jar')
            compile files('libs/BoofCV-io-0.19.jar')
            compile files('libs/BoofCV-ip-0.19.jar')
            compile files('libs/BoofCV-recognition-0.19.jar')
            compile files('libs/BoofCV-sfm-0.19.jar')
            compile files('libs/BoofCV-visualize-0.19.jar')
            compile files('libs/BoofCV-xuggler-0.19.jar')
            compile files('libs/core-0.26.jar')
            compile files('libs/ddogleg-0.7.jar')
            compile files('libs/georegression-0.8.jar')
            compile files('libs/xpp3_min-1.1.4c.jar')
            compile files('libs/xstream-1.4.7.jar')
}

虽然这是添加 jar 的一种简单方法,但您可以在 libs 文件夹中包含相关的 jar 并添加以下行:

dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
}
于 2015-12-03T05:07:39.203 回答