Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

com.android.dex.DexException: Multiple dex files define

I am using Android Studio 0.4.2. Opened project from a friend who is using 0.3.2. Tried to compile but got exception.

Execution failed for task ':JuiceTV:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    C:\Program Files\Android\android-studio\sdk\build-tools\19.0.0\dx.bat --dex --output D:\Antik TV - Android\JuiceTV\build\libs\JuiceTV-debug.dex D:\Antik TV - Android\JuiceTV\build\classes\debug D:\Antik TV - Android\JuiceTV\build\dependency-cache\debug D:\Antik TV - Android\JuiceTV\build\pre-dexed\debug\classes-ffe9228b675e120536184b1056a59fcfc91e4006.jar D:\Antik TV - Android\JuiceTV\build\pre-dexed\debug\commons-io-2.4-27f1277ba9e42db4b52f3f658da01a26db29b896.jar D:\Antik TV - Android\JuiceTV\build\pre-dexed\debug\joda-time-2.2-4549e2440d188ee3fb4f85702e03eace13e8ad18.jar D:\Antik TV - Android\JuiceTV\build\pre-dexed\debug\mmlib-04a4fd100008bfbc84f0c25fd219e50eb7de9d0b.jar D:\Antik TV - Android\JuiceTV\build\pre-dexed\debug\support-v4-18.0.0-ba816fc3ae00ee0fdb20e5444c1d8bb88647d773.jar
Error Code:
    2
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/sevensoft/mmlib/AttachedOverlayWindow$1;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:593)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:551)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:532)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:169)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:187)
        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)  

Tried this things:

  • deleting *.apk files
  • searching for dependencies with gradle -q dependencies but got nothing

JuiceTV Gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 18
    }
}

dependencies {
    compile project(':TVbase')
}

BaseTv Gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion '19.0.0'

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 18
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
    compile files('libs/joda-time-2.2.jar')
    compile files('libs/mmlib.jar')
    compile files('libs/commons-io-2.4.jar')
}

Any new tips?

like image 299
user3302639 Avatar asked Feb 12 '14 17:02

user3302639


People also ask

What are Android DEX files?

A DEX file is an executable file saved in a format that contains compiled code written for Android, Google's Linux-based mobile phone platform. It is technically referred to as a "Dalvik Executable," and can be interpreted by the Dalvik virtual machine.

Where are DEX files located?

dex file in the APK file. The classes. dex file must be located at classes/classes. dex within the APK file.

How do I read DEX files on Android?

The DEX file opens in the Google Android SDK. To open the DEX file in a text editor, select the "Notepad" or "WordPad" option in the list of available programs. Tammy Clevenger works in the I.T. industry while maintaining creative outlets through film making, writing and audio production.

What is the significance of the .DEX files in Android?

dex file, which references any classes or methods used within an app. Essentially, any Activity , Object , or Fragment used within your codebase, will be transformed into bytes within a Dex file that can be run as an Android app.


2 Answers

I just had the same issue and I discovered that my application and a library were referring to 2 versions of the same jar.

I did a search and my application.iml file clearly showed the duplicates.

<orderEntry type="library" exported="" name="crittercism_v3_0_11_sdkonly" level="project" />
<orderEntry type="library" exported="" name="crittercism_v4_4_0" level="project" />

I replaced the older v3 version with the v4 version and it worked after a clean rebuild.

like image 115
user01000101 Avatar answered Oct 09 '22 10:10

user01000101


This happens when a Module has a dependency on both another module and that same module's jar.

like image 7
pzulw Avatar answered Oct 09 '22 09:10

pzulw