Ошибка преобразования байт-кода в dex: несколько файлов dex, Android Studio 3.0

Недавно я обновился до Android Studio 3.0, и при запуске программы я получаю следующую ошибку:

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/vuforia/TransformModel;
Error:com.android.dex.DexException: Multiple dex files define Lcom/vuforia/TransformModel;
Error:  at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error:  at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error:  at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error:  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error:  at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error:  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error:  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error:  at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error:  at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/vuforia/TransformModel;

Помимо моего основного модуля app, в моем проекте есть еще два модуля. я уже пробовал

Может кто-нибудь мне помочь ?

app Модуль:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.example.shais.gpsdetector"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        resValue "string", "google_maps_key", (project.findProperty("GOOGLE_MAPS_API_KEY") ?: "")
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.google.android.gms:play-services-location:10.2.4'
    compile 'com.google.android.gms:play-services-places:10.2.4'
    compile 'com.google.android.gms:play-services-maps:10.2.4'
    compile 'com.google.maps.android:android-maps-utils:0.5+'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:cardview-v7:25.3.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    implementation 'com.cocoahero.android:geojson:1.0.1'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.google.code.gson:gson:2.8.1'
    compile 'com.android.support:design:25.3.1'
    implementation project(':vuforia')
    implementation project(':rajawali')
}

Vuforia Модуль:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        preDexLibraries = false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    compile files('libs/Vuforia.jar')
}

rajawali Модуль:

apply plugin: 'com.android.library'
apply plugin: 'jacoco'
apply plugin: 'signing'

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        debug {
            testCoverageEnabled true
            minifyEnabled false
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }   
    lintOptions {
        abortOnError false
    }
}

dependencies {   
    androidTestCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'org.jetbrains:annotations-java5:15.0'
}

person Shaishav Jogani    schedule 28.10.2017    source источник
comment
покажи свой build.gradle. Тот же модуль вызывает проблему!   -  person IntelliJ Amiya    schedule 28.10.2017
comment
Это может помочь: stackoverflow.com/questions/46949761/   -  person    schedule 28.10.2017
comment
@IntelliJAmiya Готово. Не могли бы вы посмотреть на это.   -  person Shaishav Jogani    schedule 28.10.2017
comment
добавить раздел multiDexEnabled true раджавали   -  person IntelliJ Amiya    schedule 28.10.2017
comment
@IntelliJAmiya тоже пробовал. Из журнала ошибок я предполагаю, что это где-то в модуле vuforia.   -  person Shaishav Jogani    schedule 28.10.2017


Ответы (2)


Наконец, я смог решить проблему. Ошибка возникла из-за двух путей Vuforia jar в Vuforia gradle. Следующие две строки в Vuforia Gradle на самом деле указывают на один и тот же jar библиотеки.

compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/Vuforia.jar')

Я просто удалил вторую компиляцию jar, и она удалила мою ошибку.

person Shaishav Jogani    schedule 17.01.2018
comment
Вы спасли мне жизнь, это ответ, который я искал! - person Amine; 01.04.2018

Во-первых, попробуйте удалить папку .gradle в вашем проекте. Затем вам нужно проверить наличие зависимостей из дерева зависимостей с помощью следующей команды в Linux:

./gradlew app:dependencies

или, если вы используете Windows, попробуйте следующее:

gradlew.bat app:dependencies

Если вы обнаружили дублирующиеся зависимости в списке, вы можете исключить их примерно так:

compile('com.library.name:version') {
  exclude group: 'com.example', module: 'library'
}
person ישו אוהב אותך    schedule 28.10.2017