无法合并dex

时间:2017-09-17 18:42:31

标签: android dex android-studio-3.0

我有Android Studio Beta。我创建了一个新项目,编译我的旧模块,但是当我尝试启动应用程序时,它没有启动消息:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
  

com.android.builder.dexing.DexArchiveMergerException:无法合并dex

但我不知道如何解决这个错误。我用谷歌搜索了几个小时但没有成功。

我的项目gradle:

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

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta6'
        classpath "io.realm:realm-gradle-plugin:3.7.1"
        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
}

我的应用程序gradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "parad0x.sk.onlyforyou"
        minSdkVersion 21
        targetSdkVersion 26
        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'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

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'
    })
    //noinspection GradleCompatible
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile project(path: ':loginregisterview')


}

我的模块gradle:

    apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    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:26.0.2'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    testCompile 'junit:junit:4.12'
    compile project(path: ':parser')

}

我的第二个模块:

     apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    realm {
        syncEnabled = true
    }
    useLibrary 'org.apache.http.legacy'

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'junit:junit:4.12'
    //  compile 'com.android.support:appcompat-v7:23.1.0'

    //   compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
    compile 'com.google.code.gson:gson:2.6.2'
}

____________发现_________

当我没有导入第二个模块(解析器)时,应用程序没有在dex上崩溃,但是当模块未导入时,应用程序无效。 :D:D

61 个答案:

答案 0 :(得分:281)

com.google.android.gms:play-services:11.2.2更新为com.google.android.gms:play-services:11.4.0时,我遇到了同样的问题。这解决了我的问题:

  1. 清洁
  2. 重建

答案 1 :(得分:262)

我尝试了以上所有内容,但没有一个帮助,最后,我发现这对我有用:

应用/的build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

答案 2 :(得分:56)

注意警告!

有时您只需要消除警告错误就会自动消失。见下面特例:

我在模块级build.gradle文件中有这两个依赖项:

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

且Studio 警告除了dex合并问题):

  

所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本27.0.221.0.3。示例包括com.android.support:animated-vector-drawable:27.0.2com.android.support:support-v4:21.0.3

所以我明确确定了com.android.support:support-v4 的版本(详见here以及两个问题(警告和相关的警告) dex mergeging 已解决

implementation 'com.android.support:support-v4:27.0.2'  // Added this line (according to above warning message)
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

请参阅以下有关其他类似情况的评论。

答案 3 :(得分:37)

就我而言,不幸的是,Michel和Suragch的解决方案都不适合我。

所以我通过以下方式解决了这个问题:

gradle:3.0 中,编译配置现已弃用,应替换为实施 api 。有关详细信息,您可以read here您可以阅读Gradle Build Tool

上的官方文档
  

编译配置仍然存在但不应该使用,因为它不会提供api和实现的保证   配置提供。

最好使用实施 api 而不是编译

编译替换为实施,将 debugCompile 替换为 debugImplementation testCompile 使用 androidTestImplementation

testImplementation androidtestcompile

例如:而不是这个

compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'

像这样使用

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'

之后

  • 删除项目中的.gradle文件夹(注意,为了查看.gradle,您需要切换到左上角导航器中的"项目"视图)
  • 删除所有构建文件夹和gradle缓存。
  • 从构建菜单中,按清洁项目按钮。
  • 任务完成后,按“构建”菜单中的重建项目按钮。

希望它会有所帮助!

答案 4 :(得分:26)

  1. 删除 <form id="contact-form" class="form" action="#" method="POST" role="form"> <div class="form-group"> <label class="form-label" for="name">Your Name</label> <span class="wpcf7-form-control-wrap fullname"> <input type="text" class="form-control" id="name" name="name" placeholder="Your Name" required> </span> </div> <div class="form-group"> <label class="form-label" for="email">Your Email</label> <span class="wpcf7-form-control-wrap email"> <input type="email" class="form-control" id="email" name="email" placeholder="Your Email" required> </span> </div> <div class="form-group"> <label class="form-label" for="subject">Subject</label> <span class="wpcf7-form-control-wrap subject"> <input type="text" class="form-control" id="subject" name="subject" placeholder="Subject"> </span> </div> <div class="form-group"> <label class="form-label" for="message">Message</label> <span class="wpcf7-form-control-wrap message"> <textarea rows="5" cols="50" name="message" class="form-control" id="message" placeholder="Message..." required></textarea> </span> </div> <div class="text-center"> <span class="wpcf7-form-control-wrap fullname"> <button type="submit" class="btn btn-start-order">Send Message</button> </span> </div> </form> 目录。

  2. 再次运行您的应用。

  3. 备注

    • .gradle目录位于项目的根文件夹中。 (您可能必须先显示隐藏文件。)
    • 每次使用Android 3.0更新依赖模块时都必须这样做。 (Android Studio 3的最新版本似乎解决了这个问题。)

答案 5 :(得分:22)

按照Suragch的建议删除.gradle对我来说还不够。另外,我必须执行Build > Clean Project

请注意,要查看.gradle,您需要切换到&#34;项目&#34;在左上角的导航器中查看:

Switch to project view

答案 6 :(得分:21)

我尝试了所有其他解决方案,但没有人为我工作。最后,我通过编辑build.gradle使用相同的依赖版本来解决它。我认为在将库添加到使用不同依赖版本的支持或谷歌库的gradle时会出现此问题。

将以下代码添加到构建gradle文件中。然后cleanrebuild投标。

  

ps:这对我来说是旧解决方案所以你应该使用更新版本   以下图书馆。

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        }
    } else if (requested.group == "com.google.android.gms") {
        details.useVersion '11.8.0'
        } else if (requested.group == "com.google.firebase") {
            details.useVersion '11.8.0'
          }
      }
}

答案 7 :(得分:13)

在我的案例中,问题是因为房间库:

compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'

将其更改为:

compile 'android.arch.persistence.room:runtime:1.0.0'

的工作。

答案 8 :(得分:12)

if(1。尝试清理和重建工作)然后好

否则if(2.尝试删除gradle工作)然后好

else-&GT; 3.尝试添加grade.properties

android.enableD8 = false

else-&GT; 4.将multiDexEnabled true添加到build.gradle

android {
    compileSdkVersion 26
    defaultConfig {
      ...
        minSdkVersion 15
        targetSdkVersion 26
        multiDexEnabled true
     ...
    }
}

并添加依赖项

dependencies {
    compile 'com.android.support:multidex:1.0.1'}

它可能是第一个适用于你的等等,但它实际上取决于你的问题的性质,例如

我添加此库后出现错误

implementation 'com.jjoe64:graphview:4.2.2'

后来我发现我必须检查它,我必须添加相同版本的支持库。所以我必须尝试另一个版本

compile 'com.jjoe64:graphview:4.2.1'

它解决了这个问题。所以要注意这一点。

答案 9 :(得分:11)

只是添加上述解决方案:

确保没有指向的重复依赖项 它们的不同版本,在多个地方(甚至在同一个文件中)。

答案 10 :(得分:11)

嗨,我有同样的问题几乎尝试了一切。所以,最后我通过逐行调试一切经过6个小时的努力解决了。

classpath 'com.google.gms:google-services:3.0.0'

Google-services 3.0 不支持带有PlayServiceVersion的Studio 3.0的firebase:11.6.0或更低版本。

implementation "com.google.firebase:firebase-messaging:$rootProject.ext.playServiceVersion"
implementation "com.google.firebase:firebase-core:$rootProject.ext.playServiceVersion"
implementation "com.firebase:firebase-jobdispatcher-with-gcm-dep:$rootProject.ext.jobdispatcherVersion"

解决方案:

我已将 google服务 更改为

classpath 'com.google.gms:google-services:3.1.1'

它支持firebase服务。

希望有人能节省他/她的时间。

答案 11 :(得分:9)

  1. 启用

    defaultConfig {    multiDexEnabled是的 }

  2. 如果步骤1不起作用,那么

    转到项目结构并找出正在使用的外部库 不同的版本。双击它并删除其jar文件。关闭项目并再次打开android studio将重建项目。 问题应该消失。

答案 12 :(得分:5)

其中一种可能性是:存在相同的库但在依赖项中具有不同的版本

我在gradle文件中使用以下行时出现此问题:

  • compile fileTree(include: ['*.jar'], dir: 'libs')
  • compile 'com.google.code.gson:gson:2.8.2'

gson库位于我的libs目录中,但是具有以前的版本。 我从libs目录中删除了gson-2.3.1.jar,一切都恢复正常。

答案 13 :(得分:5)

[无法合并DEX求助] 经过数小时的堆栈溢出 我解决了“UNABLE TO MERGE DEX ERROR”

  1. 将您的gradle中的所有com.android.support行更新为v27.1.0
  2. 原因 - Android已将其支持库更新到v27.1.0,因此您必须将gradle文件中的所有android支持行从26.1.0更改为27.1.0

    1. 确保存储库部分包含带有“https://maven.google.com”端点的maven部分。例如:

      allprojects { 存储库{     jcenter()     maven {         网址“https://maven.google.com”     } } }

    2. 原因: - Android无法更新SDK管理器中的支持库,现在它使用maven.google.com进行更新,因此您必须将其包含在内才能使用27.1.0支持库

      更改版本后:  1.清洁项目  2.重建项目

答案 14 :(得分:5)

如果在包含kotlin支持后出现此错误,并且没有其他解决方案有效,请尝试将app模块的{0}的kotlin依赖关系更改为:

build.gradle

这适用于Android Studio 3.0 Beta 6.有关详细说明,请参阅this answer。

答案 15 :(得分:4)

With Android Studio 3.0 stable build以下步骤对我有用:

  1. 获得SdkManager - &gt; Android Sdk - &gt; Sdk工具和更新谷歌播放服务到最新版本到46。
  2. 清理项目并重建项目。

答案 16 :(得分:4)

添加以下命令:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

答案 17 :(得分:4)

安装Google Play服务(最新版本)+包括

android {
    defaultConfig {
        multiDexEnabled true
        }
}
build.gradle中的

解决了我的问题,请务必清理并重建项目!

答案 18 :(得分:3)

我同意Chris-Jr。如果您使用Firebase嵌入AdMob广告(或者即使您不是),则即使您不将其添加为依赖项,播放服务分析也会包含播放服务广告。由于分析包括版本10.0.1的广告,而不是11.4.0(鼠标在gradle中的提示显示了这一点),谷歌显然在他们的11.4.0推出时犯了一个错误。

我在顶部手动添加编译'com.google.android.gms:play-services-ads:11.4.0',但只有在我禁用了Instant Run之后: http://stackoverflow.com/a/35169716/530047

因此,要么回归到10.0.1,要么添加广告并禁用“即时运行”。 这就是我发现的,如果有帮助的话。

答案 19 :(得分:2)

在我的情况下,它是 gson-2.8.1.jar ,我已将其添加到项目的 libs 文件夹中。但SDK的引用已经存在。 因此,将 gson-2.8.1.jar 添加到libs文件夹不是必要的。

当我拿出它时,gson-2.8.1.jar 项目编译时没有出现这个错误。

因此,请尝试修改 libs 文件夹和依赖项

答案 20 :(得分:2)

对于我们的项目,我们意外地添加了两次不同名称的jar。删除其中一个解决了这个问题。

答案 21 :(得分:2)

我遇到了同样的问题,并找到了我案件的真正原因。 以前,我也再次尝试了所有以前的答案,但它没有解决问题。 我的Wear app项目中有两个模块,build.gradle如下:

穿模块的build.gradle:

implementation project(':common')
implementation files('libs/farmer-motion-1.0.jar')

common module的build.gradle:

implementation files('libs/farmer-motion-1.0.jar')

在升级到gradle 3.x之前,'implementation'都是'compile'。

我使用--stacktrace选项运行gradlew来获取堆栈跟踪,当出现此问题时,您可以在gradle控制台窗口上单击此选项。并发现对jar包的依赖重复:

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/farmer/motion/common/data/pojo/SportSummary$2;

在farm-motion-1.0.jar包中的SportSummary类,在阅读official migration guide之后,我将build.gradle更改为:

穿模块的build.gradle:

implementation project(':common')
// delete dependency implementation files('libs/farmer-motion-1.0.jar')

common module的build.gradle:

api files('libs/farmer-motion-1.0.jar') // change implementation to api

现在穿模块将具有通过普通模块输出的farm-motion-1.0.jar的依赖性。 如果在运行时期间没有依赖jar包,那么'实现'jar包的依赖关系也可以更改为'compileOnly'

答案 22 :(得分:1)

对我而言,它正在 app \ build.gradle中更新firebase消息:

compile 'com.google.firebase:firebase-messaging:10.0.1'

compile 'com.google.firebase:firebase-messaging:11.4.2'

答案 23 :(得分:1)

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

答案 24 :(得分:1)

如果最常见的答案对您不起作用,您的问题可能是您有多个依赖于同一个库的依赖项。

以下是一些调试技巧。在此示例代码中,com.google.code.findbugs:jsr305:3.0.0是违规库。

每次修改以检查解决方案时始终清理并重建

  1. 使用--stacktrace标志构建以获取更多详细信息。它会抱怨一个类,谷歌那个类找到了库。 Here's how you can set up Android studio to always run gradle with the --stacktrace flag

  2. 构建后,在Android Studio View > Tool Windows > Gradle Console中查看Gradle控制台

  3. 运行./gradlew -q app:dependencies检查重复的依赖关系。每次修改build.gradle时都可以重新运行它。

  4. 在build.gradle中,

    android {
            ...
            configurations.all {
                resolutionStrategy {
                    // Force a particular version of the library 
                    // across all dependencies that have that dependency
                    force 'com.google.code.findbugs:jsr305:3.0.0'
                }
            }
    }
    
  5. 在build.gradle中,

    dependencies {
        ...
        implementation('com.google.auth:google-auth-library-oauth2-http:0.6.0') {
            // Exclude the library for this particular import
            exclude group: 'com.google.code.findbugs'
        }
    }
    
  6. 在build.gradle中,

    android {
        ...
        configurations.all {
            resolutionStrategy {
                // Completely exclude the library. Works for transitive
                // dependencies.
                exclude group: 'com.google.code.findbugs'
            }
        }
    }
    
  7. 如果您的某些依赖项位于jar文件中,请打开jar文件并查看是否存在任何冲突的类名。如果是,您可能需要使用新的类名重新构建jar或查看shading

  8. 更多背景阅读:

答案 25 :(得分:1)

我找到了我的项目出现此问题的原因。 我在build.gradle中添加了两次依赖项 。有一次通过添加jar依赖来添加依赖关系和一次:

编译'org.achartengine:achartengine:1.2.0'
...
实施文件('../ achartengine-1.2.0.jar')

删除第一行问题后解决。

答案 26 :(得分:1)

可能的根本原因之一:Android Studio导入多模块项目未正确处理的重复瞬态依赖项。检查列表并将其删除。对我来说,修复就是这样:

--- a/project/module/build.gradle
+++ b/project/module/build.gradle
@@ -21,5 +21,4 @@ android {
 dependencies {
     implementation project(':upstream-dependency-project')
     implementation 'com.android.support:support-v4:18.0.0'
-    implementation files('libs/slf4j-android-1.6.1-RC1.jar')
 }

答案 27 :(得分:1)

这可能不是您的问题,但是当我在项目的dependencies {}部分中意外包含两个相同(但名称不同)的库时,出现了此错误。

答案 28 :(得分:1)

在我的情况下,一个库导致了这个问题,库已成功添加到项目中,但是当我运行我的应用程序时,它向我显示此错误。因此,如果您也遇到这种情况,则可以转到github并检查问题或提出新问题。如果找不到有关该库的任何解决方案,我建议您将其替换。

答案 29 :(得分:1)

我有同样的问题。 我刚刚启用了Instant Run(已禁用),然后我的项目开始了。 您可以在

中找到它
File->Settings-> Build,Execution,Deployment->Instant Run

答案 30 :(得分:0)

如果您在插件中使用Firebsae,则此问题将归因于Play服务版本问题,请尝试以下操作     `科尔多夫

cordova.system.library.4=com.google.gms:google-services:3.3.0
    cordova.system.library.5=com.google.android.gms:play-services-tagmanager:+
    cordova.system.library.6=com.google.firebase:firebase-core:16.0.1
    cordova.system.library.7=com.google.firebase:firebase-messaging:17.1.0
    cordova.system.library.8=com.google.firebase:firebase-crash:16.0.1
    cordova.system.library.9=com.google.firebase:firebase-config:16.0.0
    cordova.system.library.10=com.google.firebase:firebase-perf:16.0.0 

像这样更改您的project.properties,然后将解决此问题 Reference

答案 31 :(得分:0)

转到Unity >> Edit Project settings>>player,找到Minify部分,然后选择Proguard选项

答案 32 :(得分:0)

这对我有用-

最后在platform \ android \ build.gradle中添加代码

PagedList

答案 33 :(得分:0)

不幸的是,Michel和Suragch的解决方案都不适合我。

我最终必须做的只是将我的com.google.firebase:firebase-database回滚到版本10.0.1,因为11.4.0在我的应用程序gradle文件中导致了依赖项不一致警告。

答案 34 :(得分:0)

将buildToolsVersion更改为其他版本并进行同步,将其更改回来并再次同步。它会再次运作。

答案 35 :(得分:0)

确保所有相同的源库具有相同的版本号。在我的情况下,我使用不同的谷歌API版本。我使用 11.6.0 用于所有Google图书馆,但 10.4.0 用于google place api。更新google将api更新为 11.6.0 后,问题已修复。

请注意我的项目也启用了multidex。

答案 36 :(得分:0)

检查 build.gradle 中是否有debugCompilereleaseCompile。将其更改为debugImplementationreleaseImplementation。这就是我解决它的方法,gradle应该通过这个成功标记的指令作为弃用,但突然间它完全停留在这两个。

答案 37 :(得分:0)

将此添加到您的 app / build.gradle 中。会工作

实现'com.android.support:design:27.1.0'

答案 38 :(得分:0)

此信息尚未在此处分享,因此希望可以对某人有所帮助。

遵循此link为我解决了同样的问题。

首先,我将注意到不必将multiDexEnabled设置为true。

首先,我将pubspec.yaml中的依赖项设置为

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore: ^0.8.2 

并在我的IDE终端中运行flutter packages get

我还必须更改最低目标SDK版本:

  1. 打开android / app / build.gradle,然后找到显示以下内容的行 minSdkVersion 16.
  2. 将该行更改为minSdkVersion 21。
  3. 保存文件。

仅此一项就可以解决您的问题;但是,我还必须执行以下操作,因为某些依赖项版本不匹配。

我必须打开android/app/build.gradle,然后将以下行添加为文件的最后一行: apply plugin: 'com.google.gms.google-services'

接下来,我必须打开android/build.gradle,然后在buildscript标记内,添加一个新的依赖项:

buildscript {
   repositories {
       // ...
   }

   dependencies {
       // ...
       classpath 'com.google.gms:google-services:3.2.1'   // new
   }
}

此后,我的应用终于在android模拟器上运行了。

如果遇到困难,link的演练会更完整。

另外,请注意,我不必将multiDexEnabled设置为true。

答案 39 :(得分:0)

就我而言,以下方法有效

implementation 'com.google.android.gms:play-services-ads:17.2.0'
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-analytics:16.5.0'
implementation 'com.google.firebase:firebase-messaging:18.0.0'

在我的app模块中。问题在于它们是firebase-analytics最新库,但无法与其他最新库一起正常工作。

答案 40 :(得分:0)

只需将这一行添加到app / build.gradle

defaultConfig {
       multiDexEnabled true 
    }

答案 41 :(得分:0)

在我的情况下,我导入一个'android_support'lib两次,所以我在'libs'目录下删除一个并重建。

答案 42 :(得分:0)

如果它们不相同,请检查依赖项版本然后将其设置为相同它将解决您的问题

compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:recyclerview-v7:27.0.2'
compile 'com.android.support:cardview-v7:27.0.2'

答案 43 :(得分:0)

尝试这样,它对我有用。

在app / build.gradle中:

void
在模块grow-notification / build.gradle中

dependencies {
    ....

    compile project(':grow-notification')

    /** Firebase Start **/
    compile 'com.google.firebase:firebase-messaging:11.4.0'
    compile 'com.firebase:firebase-jobdispatcher:0.6.0'
    /** Firebase End **/
}

apply plugin: 'com.google.gms.google-services'

答案 44 :(得分:0)

在我的情况下,问题是我在build.gradle文件中实现了两次相同的库。删除重复的条目对我有用。甚至不需要清理,重建项目。

答案 45 :(得分:0)

简单的解决方案对我有用:

  1. 不要编译/实现相同依赖项的两个版本。
  2. 如果您直接从gradle编译,请不要在项目的 libs 文件夹中使用.jar文件。以上观点也适用于此。
  3. 然后清理重建项目。

答案 46 :(得分:0)

我遇到了同样的问题。我通过执行干净然后从Android Studio 3.0菜单构建项目来解决它:

  1. 构建 - &gt;清洁项目
  2. 建设 - &GT;重建项目

答案 47 :(得分:0)

对于大多数情况,这都有效。 这个对我有用 。 祝你好运,如果它也适合你。

第1步:在build.gradle中(模块:app) 添加这个:           defaultConfig {              multiDexEnabled是的            }

第2步:执行此操作:Build =&gt;清洁项目

第3步:执行此操作:Build =&gt;重建项目

答案 48 :(得分:0)

./gradlew :app:assembleStubLiveDebug -debug -stacktrace

或类似(从Android Studio获取任务名称(:app:assembleStubLiveDebug))。

答案 49 :(得分:0)

当您添加同一个库的两个版本时,这是一个常见的问题..无论是在依赖项还是在库中....我的情况,几乎每次都解决了这个问题..

答案 50 :(得分:0)

在我的项目中,我有两个以上的模块和sdks,我尝试上面列出的所有建议或答案,如

  • 在defaultConfig
  • 中添加multiDexEnabled true
  • 清理并重建项目
  • 用实现
  • 替换编译
  • 更新所有依赖项

所有这些都是暂时的,但当我打开项目结构(cntrl + altr + shift + s)时,我发现,在我的项目属性中,没有选择像 -   - 编译SDK版本,构建sdk版本   - 同样的口味

我更新所有这些并执行清理和重建项目,它对我有用。

答案 51 :(得分:0)

    android {
        defaultConfig {
            multiDexEnabled true
            }
    }

   compile 'com.google.android.gms:play-services:11.0.4'

   compile 'com.google.android.gms:play-services-location:11.0.4'

构建清理并构建重建

答案 52 :(得分:0)

升级一些依赖后,我找到了解决方案。我们应该使用最新的播放服务版本。在 build.gradle [app] 依赖项中。

compile 'com.android.support:multidex:1.0.2'
compile 'com.google.android.gms:play-services:11.8.0'
compile 'com.google.firebase:firebase-core:11.8.0'

build.gradle [project] 中,我们应该使用最新的Google插件。

classpath 'com.google.gms:google-services:3.1.1'

我也在下面分享代码以便更好地理解。

    android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.***.user"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 26
        versionName "1.0.20"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true

        aaptOptions {
            cruncherEnabled = false
        }

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

答案 53 :(得分:0)

对我来说,问题是我在项目中包含的两个罐子里面有相同的类。

对于其中一个罐子,我需要排除这些类:

jar {
    exclude('com/files/to/exclude/**')
}

答案 54 :(得分:0)

在我的情况下,错误是导入依赖项:

实施'com.firebaseui:firebase-ui:2.3.0'

我没有使用它,当我删除它清理项目并重新编译时它开始工作。当然我也做了上面的人所做的事情:

  • 在整个app.grade中更改complie到实现
  • 在整个app.grade中将testcomplie更改为testimplementation
  • 确保我有multidexenabled true
  • 将compileSdk更新为26
  • 已删除.gradle文件(在项目中找到),清理项目并重新编译

最后......

  • 已删除实施'com.firebaseui:firebase-ui:2.3.0'(因为我的代码中没有使用它)

答案 55 :(得分:0)

可能存在重复的依赖项(可能嵌套在另一个依赖项中)。在命令行中使用“gradlew app:dependencies”来验证所有依赖项。

删除重复项后,问题就解决了。

答案 56 :(得分:0)

我花了3个多小时阅读和测试所有回复。 最后问题是图书馆&#34; joda时间&#34;,

阅读this answer我发现了问题,使用完整堆栈跟踪运行gradle控制台并阅读错误详情。

答案 57 :(得分:0)

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.xyz.name"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 7
        versionName "1.6"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.volley:volley:1.0.0'
    implementation 'com.wang.avi:library:2.1.3'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:support-v4:27.1.0'
    implementation 'de.hdodenhof:circleimageview:2.1.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.0'
    implementation 'com.loopj.android:android-async-http:1.4.9'
    implementation 'com.google.firebase:firebase-messaging:11.8.0'
    implementation 'com.felipecsl.asymmetricgridview:library:2.0.1'
    implementation 'com.android.support:recyclerview-v7:27.1.0'
    implementation 'com.github.darsh2:MultipleImageSelect:3474549'
    implementation 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
    implementation 'com.android.support:multidex:1.0.1'
}

apply plugin: 'com.google.gms.google-services'

注意:如上所述将所有支持库更新为27.1.0并删除重复项

答案 58 :(得分:0)

上述解决方案都不适合我:启用multiDex,清理,重建,删除.gradle文件,所以我最后做的是创建一个全新的项目,删除 src 目录和用前一个替换它。复制build.gradle(app)所需的所有库,同步它应该构建没有任何错误。

答案 59 :(得分:-1)

在关注依赖关系之前尝试了所有这些。

以下杀手:

//implementation 'org.apache.httpcomponents:httpcore:4.3.1'
//implementation 'org.apache.httpcomponents:httpmime:4.3.1'

现在按预期工作。

答案 60 :(得分:-3)

如果您正在使用

compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1")

你应该把它改成

compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1"){
    exclude group:'org.apache.oltu.oauth2' , module: 'org.apache.oltu.oauth2.common'
}

由于客户端lib已经包含公共库,因此它会创建一个重复的类条目,该条目会出错:

  

无法合并dex