Преобразование Android dalvik для xmlpullparser

Я разрабатываю приложение для 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 для меня.


person Neil Walker    schedule 15.01.2014    source источник


Ответы (1)


У меня была такая же проблема с отдельно разработанным проектом, который я пытался интегрировать с приложением для Android. Проблема в том, что Android API определяет класс XmlPullParser (https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html) и поэтому возникает этот конфликт.

Я решил проблему, исключив зависимость xmlpull из проекта, что позволило использовать версию классов, определенную для Android. Вот как мой файл 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' 
}
person J. P. Krause    schedule 25.07.2015
comment
То, что вы используете в качестве имени группы и имени модуля, зависит от проекта, из которого вы исключаете. Дальнейшее чтение: stackoverflow.com/questions/47326984/ - person OneWorld; 16.11.2017