Ошибки сборки BoofCV в студии Android

Когда я интегрировал 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. run(Main.java:277) на com.android.dx.command.dexer.Main.main(Main.java:245) на com.android.dx.command.Main.main(Main.java:106) Ошибка: Не удалось выполнить задачу ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: команда процесса '/usr/lib/jvm/jdk1.8.0_60/bin/java'' завершена с ненулевым значением выхода 2

Мой файл 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'
}

person Huayu Zhang    schedule 03.12.2015    source источник


Ответы (2)


Вот как я справился с проблемой. Включите банки BoofCV, как вы это делали изначально. Затем добавьте следующее в ваше приложение/build.gradle

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

Это удалит оскорбительный xmlpull. Вы также можете включить модуль Android, который не является частью «всех».

Вот пример на BoofAndroidDemo

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

person lessthanoptimal    schedule 03.12.2015
comment
Я просто хотел поблагодарить вас за эту замечательную библиотеку, отличная работа! - person Eric B.; 04.12.2015

Я использовал BoofCV в одном из своих проектов. Вы должны добавить все остальные jar-файлы BoofCV, кроме XmlPullParser, потому что этот jar-файл конфликтует с уже существующим XmlPullParser присутствует в Android.

Я добавил BoofCV, загрузив все jar-файлы и включив только соответствующие, например:

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')
}

Хотя это наивный способ добавления банок, вы можете просто включить соответствующие банки в папку libs и добавить эту строку:

dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
}
person Eric B.    schedule 03.12.2015
comment
Я удалил xmlpull-1.1.3.1.jar, но ошибка осталась. Кроме того, я не знаю, зачем мне добавлять файлы один за другим, когда я могу использовать compile fileTree(dir: 'libs', include: ['*.jar']) - person Huayu Zhang; 03.12.2015
comment
Да, вам не нужно добавлять файлы по одному. Я опубликовал включение отдельных файлов, чтобы показать вам, какие jar-файлы я использую, и они компилируются без каких-либо ошибок, поэтому включайте только упомянутые выше jar-файлы в папку libs и используйте эту строку: compile fileTree(dir: 'libs', include: ['*.jar']) - person Eric B.; 03.12.2015