Android Studio:错误:执行任务“:app:dexDebug”失败。

14

我第一次使用Android Studio,在导入项目后遇到以下错误(之前它是一个Eclipse项目,我也遇到了问题)。

下面是提供的信息:

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/crash-id/Development/SDK/adt-bundle-linux-x86_64-20140702/sdk/build-tools/21.1.2/dx --dex --no-optimize --output /home/crash-id/AndroidstudioProjects/LocalSin/app/build/intermediates/dex/debug --input-list=/home/crash-id/AndroidstudioProjects/LocalSin/app/build/intermediates/tmp/dex/debug/inputList.txt
  Error Code:
    2
  Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)

:app:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/crash-id/Development/SDK/adt-bundle-linux-x86_64-20140702/sdk/build-tools/21.1.2/dx --dex --no-optimize --output /home/crash-id/AndroidstudioProjects/LocalSin/app/build/intermediates/dex/debug --input-list=/home/crash-id/AndroidstudioProjects/LocalSin/app/build/intermediates/tmp/dex/debug/inputList.txt
  Error Code:
    2
  Output:

    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)



* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

这是 app build.gradle 文件的内容:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.myapp.test"
        minSdkVersion 11
        targetSdkVersion 14
    }

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

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:+'
    compile files('libs/google-play-services.jar')
    compile files('libs/httpcore-4.3.2.jar')
    compile files('libs/httpmime-4.3.4.jar')
}

而项目的build.gradle文件是这样的:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

你有任何想法关于问题可能是什么以及如何解决吗?对于问题的良好解释也将非常有用,因为我是 Android Studio 的新手。提前感谢 :)


8个回答

13

进入android目录,运行gradlew进行清理,然后返回上一级目录并启动react-native的android应用。


请为您的意图添加解释或将此文本作为注释添加。 - Reporter
我点赞是因为它有效,但是我认为加上一些解释会更有帮助。谢谢。 - Logic Artist
1
这对我有用。如果您正在使用React Native并遇到此问题或“Execution failed for task ':app:dexProductionDebug'”,那么这很可能会解决您的问题。 - DeanMWake

12
compile 'com.google.android.gms:play-services:+'
compile files('libs/google-play-services.jar')

我认为你应该删除其中的一行。


这解决了问题,谢谢。但现在我有一个新问题:APK META-INF/LICENSE 中复制了重复的文件。 文件1:/home/crash-id/AndroidstudioProjects/LocalSin/app/libs/httpcore-4.3.2.jar 文件2:/home/crash-id/AndroidstudioProjects/LocalSin/app/libs/httpcore-4.3.2.jar - dephinera
1
没关系。通过将 exclude 'META-INF/LICENSE' 添加到 packagingOptions {..} 中进行了修复。 - dephinera

4
我遇到了Android Studio错误:Error:Execution failed for task ':app:dexDebug',我通过将multiDexEnabled设置为true来解决它。
defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}

我的项目中使用了太多的库,因此超过了Android所施加的65K方法dex限制。更多信息请参见:http://developer.android.com/tools/building/multidex.html


2

避免包含整个gms库:
compile 'com.google.android.gms:play-services:+'

相反,只需以以下方式使用所需的组件:

compile 'com.google.android.gms:play-services-ads:8.3.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'

2
这是因为你在app build.gradle中重复引用了库依赖。请注意,Android Studio会自动使用libs文件夹中的所有文件来添加依赖关系。
compile fileTree(dir: 'libs', include: ['*.jar'])

或者在您的特定情况下,依赖项是使用以下方式添加的

compile files('libs/google-play-services.jar')

^ 当你尝试使用下面的命令再次添加依赖项时

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

您遇到了错误。



解决方案

在"app build.gradle"中删除所有重复添加的依赖项,然后问题就会得到解决。在您的情况下,请删除

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

1

确保编译的项目中包名不重复

@Drivers' answer中,指出在给定的项目中,不应该有多个具有相同命名空间的依赖项。在上面的情况中,Google Play服务库被包含了两次,因此导致了包名冲突。

同样的情况也可能发生在同一项目的多个模块(应用程序、库等)之间。因此,请确保每个AndroidManifest.xml文件的package名称在所有模块中都是唯一的:

AndroidManifest.xml:

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="this.must.be.unique.across.modules">

0

我在gradle文件中有以下代码,但是出现了相同的错误。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.android.gms:play-services-ads:8.3.0'
}

dependencies {
    compile 'com.android.support:design:23.+'
}
dependencies {
    compile 'com.android.support:design:23.+'
}
dependencies {
    compile 'com.android.support:design:23.+'
}

移除了最后三个依赖项,现在它可以工作了!


-2

删除 c:\users\<username>\.gradle\caches\transforms-2\files-2.1\ 中的所有文件

享受命令 flutter run


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接