Ошибка Multidex в Android Studio 3.0 [несколько файлов dex определяют Lnet/sourceforge/zbar/SymbolSet]

Перед обновлением Android Studio до версии 3.0.1 я никогда не сталкивался с ошибкой слияния dex. После обновления до 3.0.1 я столкнулся со следующей ошибкой

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

Чтобы решить эту проблему, я перепробовал множество решений в stackoverflow и google, но ничего не нашел.

Например:

Я попытался добавить к defaultConfig multiDexEnabled true с обновленным файлом Myapplication.java.

Пробовал чистить и восстанавливать.

Я попытался сделать Invalidate catch/Restart, а затем перестроить.

Сборка приложения выдала следующую ошибку:

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lnet/sourceforge/zbar/SymbolSet;
Error:com.android.dex.DexException: Multiple dex files define Lnet/sourceforge/zbar/SymbolSet;
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 ':project_name:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lnet/sourceforge/zbar/SymbolSet;

Build.gradle (проект) содержит следующее:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2'
        classpath 'com.google.gms:google-services:3.1.1'
    }
}
allprojects {
    repositories {
        jcenter()
        google()
        maven {
            url "https://maven.google.com"
        }
    }
}

Build.gradle (модуль: проект) содержит следующее:

apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount'
android {
    compileSdkVersion 27
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId “<—appID—>”
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.16.1"
        multiDexEnabled true
    }
    dexOptions {
        preDexLibraries = false
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice.txt'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
    def supportLibrariesVersion = '27.0.2'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(include: ['*.jar'], dir: 'libs')

//    compile 'cn.bingoogolapple:zbar:1.0.1'

    compile 'cn.bingoogolapple:bga-qrcodecore:1.1.9@aar'
    compile 'cn.bingoogolapple:bga-zbar:1.1.9@aar'

    compile "com.android.support:design:$supportLibrariesVersion"

    compile 'com.google.firebase:firebase-messaging:10.2.1'
    compile 'com.android.support:multidex:1.0.2'
    compile 'it.sephiroth.android.library.imagezoom:imagezoom:+'
    compile "com.android.support:support-v4:$supportLibrariesVersion"
    compile "com.android.support:appcompat-v7:$supportLibrariesVersion"
    compile 'com.google.code.gson:gson:2.4'
    compile 'joda-time:joda-time:2.2'
    compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
    compile("com.github.hotchemi:permissionsdispatcher:3.0.1") {
        // if you don't use android.app.Fragment you can exclude support for them
    //        exclude module: "support-v13"
    }
    annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.0.1"
}
apply plugin: 'com.google.gms.google-services'

Студийная версия Android — 3.0.1

Версия плагина для Android - 3.0.1

версия градиента - 4.1


person PoojaJangid    schedule 06.01.2018    source источник
comment
Я получил ту же ошибку несколько дней назад. Для меня это потому, что число основных dex превышает 64k, поэтому вы можете использовать решение, представленное здесь: stackoverflow.com/questions/32721083/   -  person blade    schedule 17.03.2018