4

I'm developing an Android app and for one component I can test outside of Android as it does not use any Android code.

It uses xstream and I have the following libraries include: xstream1.4.6 xpp3-min-1.1.4c xmlpull-1.1.3.1

When I unit test my code outside of Android everything works just fine.

When I try and use it with Android I get the following error:

[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;

This is on a clean brand new android app/android junit app. I've tried deleting bin, cleaning, etc but no use. It's just this one, the others don't show any problems.

I need this pullparser as the other ones don't quite seem to work with xstream for me.

Neil Walker
  • 6,400
  • 14
  • 57
  • 86

1 Answers1

2

I was having the same problem with a separately developed project that I was trying to integrate with an android app. The problem is that the Android API defines the class XmlPullParser (https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html) and is why this conflict arises.

I solved the problem by excluding the xmlpull dependency from the project which allowed for the Android-defined version of the classes to be used. This is how my build.gradle file looks for the app module (just the dependency section to illustrate the exclusion):

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.+'
}

The syntax is important. It must be of the form

compile (project(':project-name')) {
        exclude group: 'group-name', module: 'module-name' 
}
OneWorld
  • 17,512
  • 21
  • 86
  • 136
J. P. Krause
  • 171
  • 2
  • 7
  • 1
    What you use as group-name and module-name depends on the project you are excluding from. Further reading: https://stackoverflow.com/questions/47326984/whats-in-gradle-a-group-module-and-artifact/47327695#47327695 – OneWorld Nov 16 '17 at 15:47