我在执行Android应用程序时遇到此错误(我先清理它,然后构建它,但该错误仍然存​​在)


同步:确定br />清洁:OK
运行:错误


错误:任务':app:dexDebug'的执行失败。com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:进程'命令'C:\ Program Files \ Java \ jdk1.7.0_25 \ bin \ java.exe''的退出值非零完成2


我的gradle文件:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
    applicationId "com.rzr.rzevallosr.miappdepruebas"
    minSdkVersion 19
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

productFlavors {
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

// This library handles authentication and authorization
compile 'com.spotify.sdk:spotify-auth:1.0.0-beta9@aar'
// This library handles music playback
compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar'

compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.+'

compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'

compile files('libs/spotify-web-api-android-master-0.1.0.jar')
compile files('libs/okio-1.3.0.jar')
}


编辑:我没有看到“ compile fileTree(dir:'libs',include:['* .jar' ])“,它编译了两次我的库,所以我只发表评论:

//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'

//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')


,它可以正常工作。

评论

@JaredBurrows在我的情况下,问题是我的应用程序对库进行了两次编译..一个在“ compile fileTree”(编译所有libs目录)和“ compile ****”上。

您能发布答案并将其标记为正确吗?

@JaredBurrows完成了。谢谢

请在这里查看我的帖子stackoverflow.com/a/33387368/740372

我遇到了相同的错误,但是我的gradle文件没有太多的编译。请帮忙。我发布了这个问题:stackoverflow.com/questions/34558251/…我是android开发的新手。

#1 楼

此问题很可能是由于超出了Android规定的65K方法dex限制。这个问题可以通过清理项目,从build.gradle的依赖项中删除一些未使用的库和方法来解决,或者通过添加multidex支持来解决。

因此,如果您必须保留库和方法,那么您可以通过在gradle配置中对其进行声明来启用多dex支持。

defaultConfig {        
    // Enabling multidex support.
    multiDexEnabled true
}


您可以在此处阅读更多有关multidex支持以及使用超过65K方法开发应用程序的信息。

评论


很高兴,它对您有所帮助。 @大卫

– minhazur
2015年8月27日15:52



非常感谢你帮了我

– Aayushi
2015年9月5日在9:36

然后在启动类中重写该方法:@Override protected void attachBaseContext(Context base){super.attachBaseContext(base); MultiDex.install(this); }

–根特·贝拉尼(Gent Berani)
15-10-12在10:03



哇,效果很好。从来没有想过这可能是问题所在。

– Neela
16年4月8日在7:53

如果您想查看到底是什么导致了错误,请尝试通过gradle终端构建项目,例如./gradlew assembleDebug --stacktrace --debug。我在案例com.android.dex.DexIndexOverflowException中看到此错误:方法ID不在[0,0xffff]中:65536

– NecipAllef
16年11月5日在8:48

#2 楼

对我来说,问题是,我在build.gradle中放入了不必要的compli库代码。项目,然后再次运行,然后此错误停止。
我只需要地图和gcm,所以我把这些行和同步的项目中了。再次遇到此问题,这次是因为更改了构建工具的版本,确实需要我启用multidex..so,所以我将这些添加到我的应用程序的build.gradle文件中。.

dependencies {
    compile 'com.google.android.gms:play-services:7.5.0'
}


并创建一个扩展Application类并将其包含在类中的类。.

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


也包含在OnCreate方法中

defaultConfig {
    applicationId "com.am.android"
    minSdkVersion 13
    targetSdkVersion 23
    // Enabling multidex support.
    multiDexEnabled true
}

dexOptions {
    incremental true
    javaMaxHeapSize "2048M"
    jumboMode = true
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
}


评论


这是最好的解决方案,您应该只包括实际使用的库。

–罗伊森(Roisgoen)
15年8月19日在16:26

为我工作!更改“ compile'c​​om.google.android.gms:play-services:7.5.0'”以编译“ com.google.android.gms:play-services-identity:8.1.0”,然后编译“ com.google.android。 gms:play-services-plus:8.1.0“

–奥斯卡·卡尔德隆(Oscar Calderon)
15年9月28日在22:19

不错的一个,也可以参考:developers.google.com/android/guides/setup-提供各种单独库的列表。

– Ed礼节
2015年12月9日在18:38



@ edsappfactory.com我提到了,并进行了修改。

–阿米·图姆库尔
2015年12月10日14:47

#3 楼

以防万一有人仍在为此奋斗并且不知道为什么会这样以及如何解决。实际上,此错误


错误:任务':app:dexDebug'的执行失败。 > com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'C:\ Program Files \ Java \ jdkx.x.x_xx \ bin \ java.exe'完成非零退出值2


可能有很多原因发生,但肯定与您的JDK版本无关,所以不要浪费时间。发生这种情况的两个主要原因


您具有相同的库或jar文件,其中包含多个位置,并且其中一些相互冲突。
您即将或已经超过65k方法限制

第一种情况可以解决如下:
找出您多次包含的依赖项。为了执行此操作,请在android studio终端中运行以下命令

gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile


,这将返回所有依赖项,但您从lib文件夹中包含的jar文件
消除标有星号(*)的重复项,这并不总是可能的,但是在某些情况下您仍然可以做到这一点,在尝试排除多次包含的模块之后,您可以这样做

compile ('com.facebook.android:facebook-android-sdk:4.0.1'){
    exclude module: 'support-v4'
}



对于第二种情况,当您超出方法限制时,建议尝试通过删除包含的库(请注意第一个解决方案)来最小化它,如果没有办法添加multiDexEnabled对您的defaultConfig正确

defaultConfig {
   ...
   ...
   multiDexEnabled true
}


这会增加方法的限制,但这不是最好的选择,因为可能存在性能问题
重要的是,仅将multiDexEnabled true添加到defaultConfig是实际上在所有运行android <5 Lollipop的设备上都不够,这将导致意外行为和NoClassDefFoundError。如何解决它在这里描述

#4 楼

我当时还不知道“ compile fileTree(dir:'libs',include:['* .jar'])”会编译所有在libs文件夹中具有jar扩展名的文件,所以我只评论(或删除)此文件行:

//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'

//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')


,它可以正常工作。不管怎么说,还是要谢谢你!我不好。

评论


或相反:在gradle中注释compile fileTree(dir:'libs',include:['* .jar'])。它帮助了我。

– Tomasz Mularczyk
15年5月22日在16:35

关于此问题还有其他解决方案吗?我没有编译每个jar文件,而是只使用了这一行编译fileTree(dir:'libs',include:['* .jar']),但它仍然显示相同的错误。

– Kairi San
16年1月20日在8:11

#5 楼

我遇到了同样的问题,并且我修复了删除不必要的库

compile fileTree(dir: 'libs', include: ['*.jar'])


我删除了该库,并且可以毫无问题地运行该项目。

评论


我试图添加slideingMenu类并将其从我的主要gradle中删除对我来说很有效。谢谢! :)

–卢卡斯·塞尼察(Lucas Senechal)
16年4月30日在4:27

#6 楼

通过为调试版本启用multiDex解决了我的问题。

defaultConfig {
multiDexEnabled true
}


#7 楼

我拒绝嵌入式JDK(32位),因为嵌入式JDK是64位。

右键单击您的项目->打开模块设置-> SDK位置->取消选中使用嵌入式JDk,然后设置您的JDK路径,例如在Ubuntu / usr / lib / jvm / java-8-openjdk-i386

评论


我认为这可行,因为嵌入式JDK是64位的。我在32位计算机上遇到了同样的问题。

–卢卡斯·诺瓦克(Lukas Novak)
16年5月30日在15:32

这解决了我的32位计算机上的问题。回显$ JAVA_HOME作为路径

– SANBI示例
16-11-20在10:23



是的,我知道这与我的32位计算机有关。谢谢Zacharia-拯救了我的一天!

– Ilonpilaaja
16年4月4日在19:14

#8 楼

可能的问题:您已超出dex 65k方法的限制,可能是在问题发生之前添加了一些库或几种方法?

评论


没有几种..只是几种方法。

– Maverick.pe
15年4月20日在21:20

嗯,请尝试构建项目的先前版本,或者尽可能删除未使用的库,然后重新构建

– Artem Zinnatullin
15年4月20日在23:09

我也只有几种方法

–韩宝文
2015年5月5日在6:57

#9 楼

如果您已经更新了SDK,并且还使用了google-play-services,那么您需要注意依赖项,因为与以下版本存在某些冲突:

遵循以下内容:编译'com。 google.android.gms:play-services:+'替换为编译'com.google.android.gms:play-services:6.5.87'

注意:这里的“ 6.5.87”是谷歌播放服务版本。希望对您有所帮助。

#10 楼


我认为这是您项目中.jar文件的冲突。


我从libs文件夹中删除了android-support-v4.jar及其工作状态! >
如果您的项目出错,请检入build.gradle文件


依赖项{

}


#11 楼

在我的情况下,问题在于我添加的新库(渐变依赖项)依赖于其他一些依赖项,而这些基础依赖项中的两个与构建脚本中的其他库/依赖项的某些依赖项冲突/冲突。具体来说,我添加了Apache Commons Validator(用于电子邮件验证),并且它的两个依赖项(Apache Commons Logging和Apache Commons Collections)与Robolectric使用的依赖项冲突(因为在我的构建路径中存在相同版本的库)。因此,在添加新的依赖项(modules)时,我排除了那些相互冲突的依赖项版本(Validator): (您的项目中可能只有一个模块)使用以下gradle命令(如果您在Android Studio / Intellij Idea中创建了项目,则我将使用为您创建的gradle包装器)。在项目的根目录中运行以下命令:

./gradlew:您的模块名称:依赖项

添加了这些exclude指令并重试运行后,我得到了duplicate file的错误,该日志由某些Apache Commons库(如“日志记录”和“集合”)使用。包装时我必须排除该文本文件。在我的build.gradle中,我添加了:

compile ('commons-validator:commons-validator:1.4.1') {
    exclude module: 'commons-logging'
    exclude module: 'commons-collections'
}


原来,新库(NOTICE.txt)可以使用其依赖项/模块的稍旧版本(已被另一个库(Robolectric)导入到我的构建路径中。这种特定的库就是这种情况,但是其他库可能正在使用最新的基础依赖关系API(在这种情况下,您必须尝试查看依赖冲突模块/依赖关系的其他库是否能够与较新的版本(通过在这些库的条目下排除模块/ dependecy的较旧版本)。

#12 楼

就我而言,当有两个或多个库冲突(相同的库但版本不同)时,出现此错误。在依赖项块中检查您的应用程序build.gradle。

#13 楼

有两种选择可以肯定起作用:


清理您的项目然后构建。

如果上述方法无效,请尝试下一种。



将以下内容添加到应用程序级别的build.gradle文件中。

defaultConfig {   

multiDexEnabled true

}




评论


我都尝试了,但是我遇到了一个新的错误Error:任务':app:packageAllDebugClassesForMultiDex'的执行失败。 > java.util.zip.ZipException:重复条目:android / support / v4 / view / MotionEventCompatEclair.class,下一步该怎么做?

– Kairi San
16年1月20日在8:14

试试这个stackoverflow.com/questions/28168063/…

– Udit Kapahi
16年1月20日在11:53

由于项目中存在重复/相同的软件包,因此发生此错误

– Udit Kapahi
16年1月20日在11:54

#14 楼

将我的Java SDK更新到最新版本1.7.0_79并更新SDK Location下的Project Structure为我解决了这个问题。

#15 楼

我的问题是,除了拥有com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:处理'command
'/Library/Java/JavaVirtualMachines/jdk1.X.X_XX.jdk/Contents/Home/bin/java''
以非结束-零退出值2


我也有此跟踪信息:


未捕获的翻译错误:java.lang.IllegalArgumentException:
已经添加:Lcom / mypackage / ClassX;


问题是我在两个不同的库中添加了相同的类。从其中一个库中删除class / jar文件,项目可以正常运行

评论


确实,我遇到了相同的问题,相同的类签名,幸运的是,这是我的类,因此我对其进行了重构。我在这里写了答案:stackoverflow.com/a/35045501/3397345

–Davideas
16年1月27日在18:52

#16 楼

对我来说,我正在添加整个playstore依赖项


编译'com.google.android.gms:play-services:8.4.0'


但是我只需要google map,所以我使它更具体,错误已解决。


编译'com.google.android.gms:play-services-maps:8.4.0'


#17 楼

在我的情况下,问题是构建工具版本为23.0.0 rc3,我更改为22.0.1,并且解决了我的问题。

#18 楼

您可能使用了低质量的电缆/弯曲的电缆将设备连接到PC,我更换了电缆,它对我有用。

#19 楼

此错误是由于使用了更多的库造成的。在我的案例中,'compile'c​​om.google.android.gms:play-services-9.4.0'导致了此错误。为避免此错误,请使用必要的库。例如,如果需要即可在您的应用中使用地图。然后使用
编译'com.google.android.gms:play-services-maps:9.4.0'。同时添加google play服务依赖项时,请仅指定所需的库。默认情况下,该库包括所有的图书馆。

#20 楼

在您的gradle.build文件中,使用此

"compile fileTree(dir: 'libs', include: ['*.jar'])"


它可以正常工作。

#21 楼

如果您想查看到底是什么引起了错误,请尝试通过gradle终端(例如./gradlew assembleDebug --stacktrace --debug)构建项目。我遇到了以下错误com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

当我尝试将Google Maps集成到我的项目中时发生。要解决此问题,我只检查了包含

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

的库,我只是将其更改为

compile 'com.google.android.gms:play-services-maps:9.8.0'

问题不见了

#22 楼

将项目转换为Kotlin后,我遇到了相同的错误。我的问题是,在此过程中,我的jre位置更改为无效路径(我想知道为什么会这样……使我浪费时间)。通过执行以下操作修复了该问题:

File > Project Structure > SDK Location 


取消选中指向旧JDK安装的Use embedded JDK选项,并选择正确的选项:

/home/my_user/jdk1.8.0_101


更改此设置后,错误消失了

#23 楼

对我有用:)

我将Java升级到了最新的版本8,以前是7,然后右键单击项目转到OPEN MODULE SETTING,并将jdk路径更改为/ usr / lib / jvm / java-8-oracle安装了新的Java 8。并重新启动Studio

在/ usr / lib / jvm中检查Java 8文件夹名称

我正在使用ubuntu