同步:确定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')
,它可以正常工作。
#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'com.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 CommonsValidator
(用于电子邮件验证),并且它的两个依赖项(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'com.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
评论
@JaredBurrows在我的情况下,问题是我的应用程序对库进行了两次编译..一个在“ compile fileTree”(编译所有libs目录)和“ compile ****”上。您能发布答案并将其标记为正确吗?
@JaredBurrows完成了。谢谢
请在这里查看我的帖子stackoverflow.com/a/33387368/740372
我遇到了相同的错误,但是我的gradle文件没有太多的编译。请帮忙。我发布了这个问题:stackoverflow.com/questions/34558251/…我是android开发的新手。