Reputation: 479
I have seen this error in multiple forums and related answers to it, I tried all but it didnt seem to work in my case. Let me give brief about my environment. I am running Gradle 2.4 on mac osx 10.7.5 with sunjdk 1.7 and androidsdk 21. My android project is setup in eclipse juno and i am trying to build it in terminal using "gradle clean", "gradle build" command.
Below is the build.gradle file
buildscript {
repositories {
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenCentral() // or jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3' // 1.3.0-beta3
}
}
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile ('com.android.support:appcompat-v7:21.0.3') {
exclude module: 'support-annotations'
}
compile ('com.android.support:recyclerview-v7:21.0.3') {
exclude module: 'support-annotations'
exclude module: 'support-v4'
}
compile 'com.android.support:cardview-v7:21.0.3'
compile "org.igniterealtime.smack:smack-android-extensions:4.1.2"
compile "org.igniterealtime.smack:smack-tcp:4.1.2"
}
android {
compileSdkVersion 21
buildToolsVersion "19.1.0"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/java']
aidl.srcDirs = ['src/main/java']
renderscript.srcDirs = ['src/main/java']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
}
}
Below is my output for command "./gradlew -q dependencies"
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:21.0.3
| \--- com.android.support:support-v4:21.0.3
+--- com.android.support:recyclerview-v7:21.0.3
+--- com.android.support:cardview-v7:21.0.3
+--- org.igniterealtime.smack:smack-android-extensions:4.1.2
\--- org.igniterealtime.smack:smack-tcp:4.1.2
It doesn't look there is any duplication of jars/modules from dependency output. However, while running "gradle build", I get below error
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
:dexDebug FAILED
FAILURE: Build failed with an exception.
Please help me out. It looks I am not getting around this error forever.
Upvotes: 0
Views: 1886
Reputation: 479
Finally I manage to find solution. The issue was due to lib folder of my project contained android-appcompat-support-v4.jar and android-appcompat-support-v13.jar. I deleted them from projects lib folder as these jars are being loaded by gradle using maven so it was resulting in duplication.
Deleting above jars from project's lib folder is key to resolve this issue.
Upvotes: 1