android - 多个dex文件定义lorg/apache/commons/io/IOUtils;

标签 android android-gradle-plugin dex

我遇到了一个非常愚蠢的问题。 我无法组装我的项目。

我创建了单个项目,例如数据库管理、API、自定义布局等。现在我正在尝试将所有这些项目合并为一个,以构建一个应用程序。

但不幸的是,它并没有像我收到的这个错误那样正常工作:

Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'. com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/IOUtils;

我的依赖关系树如下:

6.0.2 (*)
|    |    +--- com.android.support:support-core-utils:26.0.2
|    |    |    +--- com.android.support:support-annotations:26.0.2
|    |    |    \--- com.android.support:support-compat:26.0.2 (*)
|    |    +--- com.android.support:support-core-ui:26.0.2
|    |    |    +--- com.android.support:support-annotations:26.0.2
|    |    |    \--- com.android.support:support-compat:26.0.2 (*)
|    |    \--- com.android.support:support-fragment:26.0.2
|    |         +--- com.android.support:support-compat:26.0.2 (*)
|    |         +--- com.android.support:support-core-ui:26.0.2 (*)
|    |         \--- com.android.support:support-core-utils:26.0.2 (*)
|    +--- com.android.support:support-vector-drawable:26.0.2
|    |    +--- com.android.support:support-annotations:26.0.2
|    |    \--- com.android.support:support-compat:26.0.2 (*)
|    \--- com.android.support:animated-vector-drawable:26.0.2
|         +--- com.android.support:support-vector-drawable:26.0.2 (*)
|         \--- com.android.support:support-core-ui:26.0.2 (*)
+--- com.android.support:multidex:1.0.2
+--- com.github.jetradarmobile:multibackstack:1.2.1
|    \--- com.android.support:appcompat-v7:25.3.1 -> 26.0.2 (*)
+--- com.ashokvarma.android:bottom-navigation-bar:2.0.2
|    +--- com.android.support:appcompat-v7:25.3.1 -> 26.0.2 (*)
|    \--- com.android.support:design:25.3.1
|         +--- com.android.support:support-v4:25.3.1 -> 26.0.2 (*)
|         +--- com.android.support:appcompat-v7:25.3.1 -> 26.0.2 (*)
|         +--- com.android.support:recyclerview-v7:25.3.1
|         |    +--- com.android.support:support-annotations:25.3.1 -> 26.0.2
|         |    +--- com.android.support:support-compat:25.3.1 -> 26.0.2 (*)
|         |    \--- com.android.support:support-core-ui:25.3.1 -> 26.0.2 (*)
|         \--- com.android.support:transition:25.3.1
|              +--- com.android.support:support-annotations:25.3.1 -> 26.0.2
|              \--- com.android.support:support-v4:25.3.1 -> 26.0.2 (*)
+--- com.github.bumptech.glide:glide:4.0.0
|    +--- com.github.bumptech.glide:gifdecoder:4.0.0
|    |    \--- com.android.support:support-annotations:25.3.1 -> 26.0.2
|    +--- com.github.bumptech.glide:disklrucache:4.0.0
|    \--- com.github.bumptech.glide:annotations:4.0.0
+--- com.android.support.constraint:constraint-layout:1.1.0-beta1
|    \--- com.android.support.constraint:constraint-layout-solver:1.1.0-beta1
+--- com.wdullaer:swipeactionadapter:2.0.0
|    \--- com.android.support:support-annotations:23.1.0 -> 26.0.2
+--- project :onboarder
|    +--- com.android.support.constraint:constraint-layout:1.0.2 -> 1.1.0-beta1 (*)
|    +--- com.android.support:appcompat-v7:26.0.2 (*)
|    +--- com.android.support:cardview-v7:26.0.2
|    |    \--- com.android.support:support-annotations:26.0.2
|    \--- com.android.support:support-v4:26.0.2 (*)
+--- project :DatabaseManagement
|    +--- io.realm:realm-android-library:3.7.2
|    |    +--- com.google.code.findbugs:jsr305:3.0.2
|    |    +--- com.getkeepsafe.relinker:relinker:1.2.2
|    |    \--- io.realm:realm-annotations:3.7.2
|    \--- io.realm:realm-annotations:3.7.2
\--- project :api
     +--- com.google.code.gson:gson:2.8.1
     +--- com.google.apis:google-api-services-youtube:v3-rev44-1.14.1-beta
     |    \--- com.google.api-client:google-api-client:1.14.1-beta
     |         \--- com.google.oauth-client:google-oauth-client:1.14.1-beta
     |              +--- com.google.http-client:google-http-client:1.14.1-beta
     |              |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.2
     |              |    +--- org.apache.httpcomponents:httpclient:4.0.1
     |              |    |    +--- org.apache.httpcomponents:httpcore:4.0.1
     |              |    |    +--- commons-logging:commons-logging:1.1.1
     |              |    |    \--- commons-codec:commons-codec:1.3
     |              |    \--- xpp3:xpp3:1.1.4c
     |              \--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.2
     +--- io.reactivex.rxjava2:rxandroid:2.0.1
     |    \--- io.reactivex.rxjava2:rxjava:2.0.1 -> 2.1.3
     |         \--- org.reactivestreams:reactive-streams:1.0.1
     +--- io.reactivex.rxjava2:rxjava:2.1.3 (*)
     \--- org.apache.commons:commons-io:1.3.2
          \--- commons-io:commons-io:1.3.2

以下是我在项目中得到的模块:

:TOPLEVEL

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta5'
        classpath "io.realm:realm-gradle-plugin:3.7.2"

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

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url "https://jitpack.io" }
        maven { url 'https://maven.google.com' }
        maven { url 'https://oss.jfrog.org/libs-snapshot' }
    }

    project.ext {
        minSdk=14
        targetSdk=26
        buildVersion="26.0.1"
        compileSdk=26
        supportLibraryVersion="26.0.2"
        set('supportLibraryVersion',supportLibraryVersion)
    }
}

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

:api

dependencies {
    implementation 'org.jsoup:jsoup:1.10.3'
    implementation ('com.google.http-client:google-http-client-jackson2:1.22.0')
    api 'com.google.code.gson:gson:2.8.1'
    api ('com.google.apis:google-api-services-youtube:v3-rev44-1.14.1-beta')
    api 'io.reactivex.rxjava2:rxandroid:2.0.1'
    api 'io.reactivex.rxjava2:rxjava:2.1.3'
}

:数据库管理

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "com.android.support:appcompat-v7:${supportLibraryVersion}"
    implementation project(':api')
    implementation 'org.apache.commons:commons-io:1.3.2'
}

:onboarder

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile "com.android.support:appcompat-v7:${supportLibraryVersion}"
    compile "com.android.support:cardview-v7:${supportLibraryVersion}"
    compile "com.android.support:support-v4:${supportLibraryVersion}"
}

:app(根项目)

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    /** Android/Google Support Libraries **/
    implementation "com.android.support:appcompat-v7:${supportLibraryVersion}"
    implementation 'com.android.support:multidex:1.0.2'
    /** UI dependencies **/
    implementation 'com.github.jetradarmobile:multibackstack:1.2.1'
    //has dependencies on old appcompat version
    implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.2'
    //has dependencies on old appcompat version
    implementation 'com.github.bumptech.glide:glide:4.0.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta1'
    implementation 'com.wdullaer:swipeactionadapter:2.0.0'
    implementation project(':onboarder')
    /** Techniqual implementations */
    implementation project(':DatabaseManagement')
    implementation project(':api')
}

尝试过的解决方案:
在过去的 3 个小时里,我疯狂地寻找解决方案,但我发现没有任何效果。从依赖关系树中我也看不到发生了对 commons-io 的双重引用,这显然导致了这个错误。
Multidex 不是这里的问题,没有 multidex 它也无法组装。

我正在使用 Android Studio 3 Beta 5

很可能,我没有看到明显的东西。
非常感谢您的提前帮助!

最佳答案

问题解决了! 这是一个错误的 commons-io 依赖。 可以在此处找到此失败的原因:What is the difference between maven dependencies org.apache.commons:commons-io and commons-io:commons-io?

只是替换

implementation 'org.apache.commons:commons-io:1.3.2'

implementation 'commons-io:commons-io:1.3.2'

关于android - 多个dex文件定义lorg/apache/commons/io/IOUtils;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46224039/

相关文章:

android - 将 APK 文件从构建位置复制到 gradle 4.4 中的其他位置

android - Gradle构建错误:输入重复

java - 将java服务器移植到Android

java - android studio 找不到指定的文件

android - onOptionsItemSelected不能在 fragment 中工作

android - 如何在 Android Studio 上将 Kotlin 版本从 1.2.51 升级到 1.3

android - com.android.dx.util.DexException : Multiple dex files define

android - Android Studio Gradle错误 “Multiple dex files define…”

java - Android - 我应该使用什么从远程数据库获取数据?

java - 在android中通过soap ws在mysql数据库中插入微调器值