我在执行我的 Android 应用程序时遇到此错误(我清理它然后构建它,但错误仍然存在)
同步:好的
制作项目:好的
清洁:好的
运行:错误
错误:任务':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 结束
我的毕业文件:
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')
它工作正常。
这个问题很可能是由于超过了 Android 规定的 65K 方法 dex 限制。这个问题可以通过清理项目,从 build.gradle 中的依赖项中删除一些未使用的库和方法来解决,或者通过添加 multidex 支持来解决。
因此,如果您必须保留库和方法,那么您可以通过在 gradle 配置中声明它来启用多 dex 支持。
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
您可以阅读有关多索引支持和开发apps with more than 65K methods here的更多信息。
对我来说,问题是,我在 build.gradle 中放了一个不必要的编译库代码
dependencies {
compile 'com.google.android.gms:play-services:7.5.0'
}
这导致超过 65k 方法,因此将其删除,gradle 同步,清理项目,然后再次运行,然后此错误停止。我只需要地图和 gcm,所以我把这些线和同步项目
compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'
大家好,我再次遇到了这个问题,这次是因为更改了构建工具版本,它确实需要我启用 multidex..所以我添加了这些我的应用程序的 build.gradle 文件..
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'
}
并创建一个扩展 Application 类的类,并将此方法包含在类中..
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
也包括在 OnCreate 方法中
@Override
public void onCreate() {
MultiDex.install(this);
super.onCreate();
}
以防万一有人仍在为此苦苦挣扎并且不知道为什么会发生这种情况以及如何解决。实际上这个错误
错误:任务“:app:dexDebug”执行失败。 > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '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 true 添加到您的 defaultConfig
defaultConfig {
...
...
multiDexEnabled true
}
这会增加方法限制,但由于可能的性能问题,这不是最好的做法重要实际上在所有运行 android <5 Lollipop 的设备上仅添加 multiDexEnabled true
到 defaultConfig
是不够的将导致意外行为和NoClassDefFoundError
。描述了如何解决它here
我不知道(到那时)“编译fileTree(dir:'libs',包括:['*.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')
它工作正常。不管怎么说,还是要谢谢你!我的错。
compile fileTree(dir: 'libs', include: ['*.jar'])
。它帮助了我。
compile fileTree(dir: 'libs', include: ['*.jar'])
,但它仍然显示相同的错误。
我有同样的问题,我修复了删除不必要的库
compile fileTree(dir: 'libs', include: ['*.jar'])
我删除了那个库,我可以毫无问题地运行该项目。
通过为调试构建启用 multiDex 解决了我的问题。
defaultConfig {
multiDexEnabled true
}
我拒绝嵌入式 JDK(32 位),因为嵌入式 JDK 是 64 位
右键单击您的项目 -> 打开模块设置 -> SDK 位置 -> 取消选中使用嵌入式 JDK 然后设置您的 JDK 路径,例如在 Ubuntu /usr/lib/jvm/java-8-openjdk-i386
echo $JAVA_HOME
用于路径
可能的问题:您已经超过 dex 65k 方法限制,可能是您在问题发生之前添加了一些库或几种方法?
如果您已经更新了 SDK 并且还使用了 google-play-services,那么您需要处理依赖关系,因为与以下内容存在某种冲突:
请遵循以下内容: compile 'com.google.android.gms:play-services:+' 替换为 compile 'com.google.android.gms:play-services:6.5.87'
注意:这里的“6.5.87”是 google-play-service 版本。我希望它会有所帮助..
我认为这是您项目中 .jar 文件的冲突。
我已经从 libs 文件夹中删除了 android-support-v4.jar 并且它的工作!
如果您的项目出错,请检查您的 build.gradle 文件
依赖{ }
就我而言,问题是我添加的新库(gradle 依赖项)依赖于其他一些依赖项,其中两个底层依赖项与我的构建脚本中其他库/依赖项的一些依赖项发生冲突/冲突。具体来说,我添加了 Apache Commons Validator
(用于电子邮件验证),它的两个依赖项(Apache Commons Logging
和 Apache Commons Collections
)与 Robolectric 使用的依赖项发生冲突(因为相同库的不同版本存在于我的构建路径)。因此,我在添加新依赖项(Validator
)时排除了那些冲突版本的依赖项(modules
):
compile ('commons-validator:commons-validator:1.4.1') {
exclude module: 'commons-logging'
exclude module: 'commons-collections'
}
您可以使用以下 gradle 命令查看 gradle 模块的依赖项(您的项目中可能只有一个模块)(如果您在 Android Studio/Intellij 中创建了项目,我将使用为您创建的 gradle 包装器主意)。在项目的根目录中运行此命令:
./gradlew :YOUR-MODULE-NAME:dependencies
添加这些 exclude
指令并重试运行后,我收到了 NOTICE.txt
的 duplicate file
错误,该错误被某些 Apache 公共库(如 Logging 和 Collections)使用。打包时我必须排除该文本文件。在我的 build.gradle 中,我添加了:
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/notice.txt'
exclude 'META-INF/NOTICE.txt'
}
事实证明,新库(Validator
)可以使用稍旧版本的依赖项/模块(已由另一个库 (Robolectric) 导入我的构建路径)。这个特定库就是这种情况,但其他库可能正在使用底层依赖项的最新 API(在这种情况下,您必须尝试查看依赖于冲突模块/依赖项的其他库是否能够使用较新的版本(通过在这些库的条目下排除旧版本的模块/依赖项))。
就我而言,当有 2 个或多个库冲突(相同的库但不同的版本)时,我会收到此错误。在依赖项块中检查您的应用程序 build.gradle。
有两种选择肯定会起作用:
清理您的项目,然后构建。
如果上述方法不起作用,请尝试下一个。
将以下内容添加到应用级别 defaultConfig { multiDexEnabled true } 的 build.gradle 文件中
Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/v4/view/MotionEventCompatEclair.class
,接下来我该怎么办?
将我的 Java SDK 更新到最新版本 1.7.0_79
并更新 Project Structure
下的 SDK Location
为我解决了这个问题。
我的问题是,除了拥有
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'/Library/Java/JavaVirtualMachines/jdk1.X.X_XX .jdk/Contents/Home/bin/java'' 以非零退出值 2 结束
我也有这个痕迹:
未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/mypackage/ClassX;
问题是我在两个不同的库中添加了相同的类。从其中一个库中删除类/jar文件,项目正常运行
对我来说,我正在添加整个 playstore 依赖项
编译'com.google.android.gms:play-services:8.4.0'
但我只需要谷歌地图,所以我把它做得更具体,错误就解决了。
编译'com.google.android.gms:play-services-maps:8.4.0'
在我的情况下,问题是构建工具版本是 23.0.0 rc3,我更改为 22.0.1,我的问题得到了解决。
您可能使用劣质电缆/有缺陷的电缆将您的设备连接到 PC,我更换了电缆,它对我有用。
此错误是因为使用了更多数量的库。在我的情况下,'compile'com.google.android.gms:play-services-9.4.0' 导致了此错误。为避免此错误,请使用必要的库。例如,如果你想要在您的应用程序中使用地图。然后使用编译“com.google.android.gms:play-services-maps:9.4.0”。同时添加谷歌播放服务依赖项指定所需的库。默认情况下,它包括所有库。
在您的 gradle.build
文件中,使用此
"compile fileTree(dir: 'libs', include: ['*.jar'])"
它工作正常。
如果您想查看究竟是什么导致了错误,请尝试通过 gradle 终端构建您的项目,例如 ./gradlew assembleDebug --stacktrace --debug
。我在案例 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
中看到了以下错误
这发生在我试图将 Google 地图集成到我的项目中时。为了修复它,我只是检查了我包含的库
compile 'com.google.android.gms:play-services:9.8.0'
我只是将其更改为
compile 'com.google.android.gms:play-services-maps:9.8.0'
问题消失了
将我的项目转换为 Kotlin
后,我遇到了同样的错误。我的问题是我的 jre 位置在此过程中被更改为无效路径(我想知道为什么会发生这种情况......让我浪费时间)。通过这样做修复它:
File > Project Structure > SDK Location
取消选中指向旧 JDK 安装的 Use embedded JDK
选项,并选择正确的选项:
/home/my_user/jdk1.8.0_101
更改后,错误消失了
为我工作:)
我将 java 升级到最新版本 8,之前它是 7,然后转到打开模块设置,右键单击项目并将 jdk 路径更改为 /usr/lib/jvm/java-8-oracle,安装新的 java 8。并重启工作室
签入 /usr/lib/jvm 以获取 java 8 文件夹名称
https://i.stack.imgur.com/YfKPW.png
不定期副业成功案例分享
./gradlew assembleDebug --stacktrace --debug
。我在我的案例com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
中看到了这个错误