web-dev-qa-db-ja.com

原因:com.Android.dex.DexException:複数のdexファイルがStudio3.0のLorg / Apache / commons / io / IOCaseを定義しています

私は1つのプロジェクトを開発しています。これはAndroid studio 2.3.3で正常に動作していますが、 Android Studio 3. を更新してプロジェクトを開くと、アセンブルできず、以下のエラーログを送ってください。

エラーログ

Error:Error converting bytecode to dex:
Cause: com.Android.dex.DexException: Multiple dex files define Lorg/Apache/commons/io/IOCase;
Error:com.Android.dex.DexException: Multiple dex files define Lorg/Apache/commons/io/IOCase;
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 Lorg/Apache/commons/io/IOCase;

以下のことをすべて試したので、複製しないでください

  • クリーンプロジェクト
  • プロジェクトを再構築する
  • 削除 /.gradle プロジェクトを再度開いてクリーンアップして再構築した後、プロジェクト内のフォルダ
  • 削除 .gradle プロジェクトを再開し、クリーンアップして再構築した後のキャッシュフォルダ

他の人は私がスタックオーバーフローの質問とその答えを下でチェックしていると思いますそして他の人もそれから私は解決策を得ません。

1。質問2。質問。質問4。質問 および 5。質問

プロジェクトレベルbuild.gradleファイル

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:3.0.0'
        classpath 'com.google.gms:google-services:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

アプリレベルbuild.gradleファイル

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.mypackage"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"

        // for render script to create blur image
        renderscriptTargetApi 18
        renderscriptSupportModeEnabled true

        multiDexEnabled true

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    compile 'com.Android.support:appcompat-v7:25.3.1'
    compile 'com.Android.support:cardview-v7:25.3.1'
    compile 'com.Android.support:design:25.3.1'
    compile 'com.Android.support:multidex:1.0.0'
    testCompile 'junit:junit:4.12'

    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    //google API
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.Android.gms:play-services-auth:10.0.1'
    compile 'com.google.Android.gms:play-services-places:10.0.1'
    compile 'com.google.Android.gms:play-services-maps:10.0.1'

    //facebook SDK
    compile 'com.facebook.Android:facebook-Android-sdk:[4,5)'

    compile 'de.hdodenhof:circleimageview:2.1.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.squareup.okhttp3:okhttp:3.4.2'
    compile ('org.Apache.commons:commons-lang3:3.4'){
        exclude module: 'commons-io'
    }

    compile('net.yazeed44.imagepicker:imagepicker:1.3.0') {
        exclude module: 'cam2'
    }
}
apply plugin: 'com.google.gms.google-services'

この問題を解決する方法を教えてください。私の側から何か必要なものがあれば教えてください。助けていただければ幸いです。少し早いですがお礼を。

5
Ninja

@ CommonsWare プロジェクトにcommons-ioを含むlibが互いに存在することに同意します。

Gradleの依存関係におけるこの競合の問題を修正するオプションがあります。アプリレベルのbuild.graldeファイルに以下のコードを追加します。

configurations.all {
    resolutionStrategy.dependencySubstitution {
        substitute module('org.Apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2')
    }
}

その理由は、その'org.Apache.commons:commons-io:1.3.2'が競合している理由です。このスタックオーバーフローを確認してください 質問の回答

注:-Apache Commonsコレクションとそのさまざまなバージョンについて詳しく知る この回答を確認してください

23
Shailesh