原因:com.android.dex.DexException:多个dex文件在Studio 3.0中定义了Lorg / apache / commons / io / IOCase [英] Cause: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOCase in Studio 3.0

查看:322
本文介绍了原因:com.android.dex.DexException:多个dex文件在Studio 3.0中定义了Lorg / apache / commons / io / IOCase的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个项目。这与Android Studio 2.3.3工作正常,但是当我更新了我的 Android Studio 3.0 并打开我的项目,然后它无法组装,它会发送错误日志。


$ b

错误日志

 错误:将字节码转换为dex时出错:
原因:com.android.dex.DexException:多个dex文件定义了Lorg / apache /公共/ IO / IOCase;
错误:com.android.dex.DexException:多个dex文件定义了Lorg / apache / commons / io / IOCase;
错误:com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
错误:at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
错误:com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
错误:at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
错误:在com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
错误:在com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
错误:在com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
错误:在java.util.concurrent.ForkJoinTask $ AdaptedCallable.exec(ForkJoinTask.java:1424)
错误:在java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
错误:在java.util.concurrent.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1056)
错误:在java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
错误:在java.util.concurr ent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
错误:任务':app:transformDexArchiveWithDexMergerForDebug'的执行失败。
> com.android.build.api.transform.TransformException:com.android.dex.DexException:多个dex文件定义Lorg / apache / commons / io / IOCase;

请不要让它重复,因为我已经尝试过所有的东西
$ b


  • 清理项目

  • 重建项目

  • 已删除重新打开项目后清理并重建
  • 删除 .gradle 现金文件夹后重新打开项目并清理并重建
    后删除 .gradle


其他的想法是我在下面的堆栈溢出问题和它的答案和其他答案,然后我也没有得到解决方案。



1。问题 2。问题 3。问题 4。问题 5。问题


项目级别 build.gradle 文件
blockquote>

  buildscript {
存储库{
jcenter()
}
依赖关系{
classpath'com.android.tools.build:gradle:3.0.0'
classpath'com.google.gms:google-services:3.1.0'

//注意:不要在这里放置您的应用程序依赖关系;它们属于单个模块build.gradle文件中的
//
}
}

allprojects {
存储库{
jcenter()
google()
}
}

任务清理(类型:删除){
删除rootProject.buildDir
}




应用程序级别 build.gradle 文件




  apply plugin:'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion '26 .0.2'
defaultConfig {
applicationIdcom.mypackage
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName1.0
testInstrumentationRunnerandroid.support.test.runner.AndroidJUnitRunner

//用于渲染脚本以创建模糊图像
renderscriptTargetApi 18
renderscriptSupportModeEnabled true

multiDexEnabled true

$ b buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules。 pro'
}
}
}

依赖关系{
编译fileTree(dir:'libs',include:['* .jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',{
exclude group:'com.android.support',module:'support-annotations'
})
编译'com.android.support:appcompat-v7:25.3.1'
编译'com.android.support:cardview-v7:25.3.1'
编译'com.android.support:design:25.3.1'
compile'c​​om.android.support:multidex:1.0.0'
testCompile'junit:junit:4.12'

编译'com.jakewharton:butterknife:8.8.1'
annotationProcessor'com.jakewharton:butterknife-compiler:8.8.1'

// goog le API
编译'com.google.firebase:firebase-auth:10.0.1'
编译'com.google.firebase:firebase-messaging:10.0.1'
compile'c​​om。 google.firebase:firebase-core:10.0.1'
compile'c​​om.google.android.gms:play-services-auth:10.0.1'
compile'c​​om.google.android.gms: play-services-places:10.0.1'
compile'c​​om.google.android.gms:play-services-maps:10.0.1'

// facebook SDK
编译'com.facebook.android:facebook-android-sdk:[4,5)'

编译'de.hdodenhof:circleimageview:2.1.0'
compile'c​​om.github。 bumptech.glide:glide:3.7.0'
compile'c​​om.squareup.okhttp3:okhttp:3.4.2'
compile('org.apache.commons:commons-lang3:3.4'){
排除模块:'commons-io'
}

编译('net.yazeed44.imagepicker:imagepicker:1.3.0'){
排除模块:'cam2 '
}
}
应用插件:'com.google.gms.googl电子服务'

请帮我解决这个问题。我可以知道你是否需要我身边的任何事情。帮助将非常感激。感谢提前。

解决方案

我同意 @CommonsWare 还有另一个lib在你的项目中也包含 commons-io



有一个选项可以解决gradle依赖中的这个冲突问题。在您的应用程序级别添加以下代码 build.gralde file。

 配置.all {
resolutionStrategy.dependencySubstitution {
替换模块('org.apache.commons:commons-io:1.3.2')与模块('commons-io:commons-io:1.3.2' )




$ b $ p $原因是为什么'org.apache.commons:commons-io:1.3.2' is conflict检查这个堆栈溢出


是什么是在maven-dependencies-org-apache-commonscommons-io / 37421794#37421794

I am developing one project. This is working fine with Android studio 2.3.3, but what happen is when i updated my Android Studio 3.0 and open my project then it can't assembled and it send me below error Log.

Error Log

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;

Please don't make it duplicate because i have tried below all the things

  • Clean project
  • Rebuild project
  • Deleted /.gradle folder in project after Reopen project and clean and rebuild
  • Deleted .gradle cash folder after Reopen project and clean and rebuild

Other think is i checked below stack overflow questions and its answer and other also then also i don't get the solution.

1. Question, 2. Question, 3. Question, 4. Question and 5. Question

Project level build.gradle file

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
}

app level build.gradle file

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'

Please do some help that how i can fix this issue. May i know if you need any thing from my side. Help would be very appreciate. Thank in advance.

解决方案

I agree with @CommonsWare that there is one another lib also contain commons-io in your project.

There is an option to fix this conflict issue in gradle dependency. Add below code in your app level build.gralde file.

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

Reason is that why that 'org.apache.commons:commons-io:1.3.2' is conflict Check this stack overflow question's answer.

这篇关于原因:com.android.dex.DexException:多个dex文件在Studio 3.0中定义了Lorg / apache / commons / io / IOCase的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆