【问题标题】:Dex error On Android Studio 3.0 Beta4Android Studio 3.0 Beta4 上的 Dex 错误
【发布时间】:2018-02-13 16:28:28
【问题描述】:
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/integration/android/IntentResult;

【问题讨论】:

  • 显示build.gradle
  • @IntelliJAmiya 这不是报告问题的重复。至少对我来说,问题从 AS 3.0 beta 4 开始,我已经在使用 multidex。
  • 怎么样?我认为我没有特权
  • @ADev 是的。感谢提及。它是一个错误?确定?
  • 我还不确定。但是我可以在命令行上运行./gradlew assembleRelease 没有问题。

标签: android android-gradle-plugin build.gradle dex


【解决方案1】:

我在使用 Android Studio 3.0 beta 4 时遇到了同样的问题。我找到了解决方案。

1.Build 菜单中,按Clean Project 按钮。

2.任务完成后,按下Build菜单中的Rebuild Project按钮。

【讨论】:

  • 我很乐意帮助您解决部分问题
  • 我想知道,为什么答案没有用,为什么要报告答案? @SagarTrehan
  • 这适用于 Android Studio 3.1 Canary。但是,每次我对 gradle 进行更改时,我似乎都必须这样做。有很多术语修复吗?
  • 使用 Android Studio 3.0 为我工作
【解决方案2】:

对于 Android Studio 3.0,我所做的是将其添加到我的 gradle 中:

multiDexEnabled true

它成功了!

例子

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.xx.xxx"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 9
        versionName "1.0"
        multiDexEnabled true //Add this
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

【讨论】:

  • 对我来说,这并不能解决问题...我仍在继续努力解决它..
  • 尝试以下步骤:删除您的 .gradle,清理并重建。也不要忘记添加 multiDexEnabled。希望对你有帮助
  • 如果你启用了multidex并且你的minSDK小于5.0,那么按照这里的说明操作:developer.android.com/studio/build/multidex
【解决方案3】:

所以我通过执行以下操作解决了这个问题:

  • 删除项目中的./gradle 文件夹
  • 删除所有构建文件夹和 gradle 缓存。我运行了以下命令:

如何?

 cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/

假设您的 gradle 配置文件 位于 $HOME/.gradle 文件夹中。

  • 在 Android Studio 中,转到 File > Invalidate caches / Restart... 并取消缓存并重新启动它。

【讨论】:

  • 删除 .gradle 文件夹解决了我的问题。感谢您的帮助!
  • AS 3.0 Beta 7 上的同样问题,不幸的是,这仍然不适用于我的情况。
  • 已尝试上述所有解决方案,但不适用于 AS 3.0 beta 7。请帮助
  • 我在 AS 3.0.1 中仍有问题
  • 使缓存失效并重新启动破坏了我所有的 Android Studio 设置...
【解决方案4】:

您应该能够通过使用 gradle 检查您的依赖项并查找重复项来找到此错误的原因,如下所示: ./gradlew -q app:dependencies

就我而言,构建时发生了以下错误:

Duplicate zip entry [httpcore-4.4.1.jar

通过在我的build.gradle 中执行此操作已解决:

implementation ('me.dlkanth:stetho-volley:1.0') {
    exclude group: 'org.apache.httpcomponents'
}

【讨论】:

  • 在我的情况下,'com.android.volley' 以某种方式被添加了两次,我还添加了排除语句,现在它工作正常。
  • 运行这个脚本给了我could not determine java version from 9.0.1。我使用 Android Studio 3.0 将 Gradle 从 4.1 更新到 4.2.1
【解决方案5】:

如果您的 minSdkVersion 为 21 或更高

   android {
        defaultConfig {
           multiDexEnabled true
        }
    }

如果您的 minSdkVersion 为 20 或更低

1)必须在依赖项中添加以下库

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

2) 创建一个 java 类,然后从 Application 扩展它并覆盖 attachBaseContext 方法。

 public class MyApplication extends Application {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

3) 在应用标签中提及清单内创建的类。

    <application
        android:name=".MyApplication"
.
.
.
    </application>

【讨论】:

  • 如果上面的代码不起作用,那么通过将光标放在 gradle 上检查你的每个库,如果它有可用的新版本,然后更新它,同步,清理项目,重建项目并运行。希望它对你有用。
  • 此代码适用于 Android 5.1 及更高版本...适用于以下 android 版本.. 还有另一种添加 multidex 支持的方法。 developer.android.com/studio/build/multidex.html
【解决方案6】:

检查您的依赖项以获取最新版本,通常它与您的任何依赖项的版本不一致。

1.Build > 清理项目 2. 重建你的项目

检查导致合并问题的依赖项的详细日志并更新。对每个依赖项重复相同的操作。

【讨论】:

    【解决方案7】:

    我在 Android Studio 3.0.1 中遇到了同样的问题,我尝试了所有可能的情况,如上所述对我没有任何帮助,最后我通过

    解决了

    解决方案 1:

    • 关闭 Android Studio
    • 删除位于C:\Users\YourComputerName\.gradle.gradle 文件夹不是从应用程序的.gradle 删除
    • 重启安卓工作室

    它将下载所有必要的 jar 并添加到您的构建路径中

    解决方案 2:

    • 从 app/libs 中的 libs 文件夹中删除重复的 jar
    • 再次重新运行应用程序

    因为如果 build.gradle 文件中已经定义了重复的 jar 文件,则会导致问题。

    这为我解决了这个问题。它可能会帮助其他人..

    【讨论】:

    • Linux 用户怎么样?我得到同样的错误。请指导我
    • 做我在你的 linux 中提到的同样的事情。即,转到终端 .gradle 的位置将类似于 '~\.gradle\'
    • 我正在尝试但它不可见..您要解释哪个位置?我在哪里安装了我的 Android 工作室或项目位置?
    • 不,它在您的用户主页中,例如:~/.gradle/caches/..
    • 谢谢...我解决了。版本代码不匹配
    【解决方案8】:

    此错误可能有多种原因。 没有清理和重建或类似的东西对我有用。

    对我来说,问题在于依赖:

    compile 'org.jetbrains:annotations-java5:15.0'
    

    我删除了它,一切正常。

    【讨论】:

    • 你是怎么得出这个结论的?通过反复试验?
    【解决方案9】:

    将“编译”更改为“仅编译” 这对我有用。

    【讨论】:

      【解决方案10】:

      在我的例子中,罪魁祸首是 SendGrid lib,添加了这个并得到了修复:

      compile 'com.github.danysantiago:sendgrid-android:1',{
          exclude group: 'org.apache.httpcomponents', module: 'httpclient'
      }
      

      【讨论】:

        【解决方案11】:

        我正在使用 Studio 3.0.0 版本。就我而言,有唯一的解决方案:我从项目的“libs”文件夹中删除了旧的 JAR:它是带有依赖项的“ksoap2”包。使用 gradle 获得的软件包通常不会相互冲突,至少如果您使用的是最流行的软件包。但是如果 libs 文件夹中的旧 JAR 包含所有自己的依赖项,它可能会破坏您的构建。

        【讨论】:

          【解决方案12】:

          我已经尝试过其他 cmets 删除 gradle 和 bla bla bla,但添加 multiDexEnabled true 解决了我的问题,我调查我的 apk 已达到超过 64K 方法。

          参考:https://developer.android.com/studio/build/multidex.html)

          【讨论】:

            【解决方案13】:

            我正在使用 安卓工作室 3.0.1 构建 #AI-171.4443003,构建于 2017 年 11 月 9 日

            我从 libs 文件夹中删除了 jar 文件。这对我来说很好用

            【讨论】:

              【解决方案14】:

              我使用的是 Android Studio 3.0.1 并且遇到了同样的问题。如果其他人的回答不起作用,试试这个:

              工具 -> Android -> 使用 Gradle 文件同步项目

              它对我有用Sync Project with Gradle Files

              【讨论】:

                【解决方案15】:

                有时可能由于相同的库(jar 文件)出现两次或您的项目已达到 64k 方法限制。

                解决方案: 1)如果您的项目使用它,请删除数据绑定 2) 从 lib 文件夹中删除相同类型的库,或者从 c//user//your_pc//.gradle 中删除 .gradle 文件 3) 在你的 build.gradle 中应用它

                android {
                    defaultConfig {
                       multiDexEnabled true
                    }
                }
                

                【讨论】:

                  【解决方案16】:

                  通过删除 Android 数据绑定库解决了这个问题:

                  dataBinding {
                      enabled = true
                  }
                  

                  【讨论】:

                  • 这不是一个有效的答案,因为您将无法使用数据绑定。如果它对你有用,那意味着你不在你的应用中使用数据绑定
                  猜你喜欢
                  • 2018-05-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-05-20
                  • 1970-01-01
                  • 2015-09-13
                  • 1970-01-01
                  • 2018-04-07
                  相关资源
                  最近更新 更多