gpt4 book ai didi

java - Gradle-什么是非零退出值,我该如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:25 24 4
gpt4 key购买 nike

我正在开发一个Android应用程序,每次运行它,都会收到以下消息:

:module:someTask FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':module:someTask'.
> some message here... finished with non-zero exit value X
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: Y.ZZ secs

我已经尝试清理和构建项目,但是错误仍然存​​在。

我已经看到回答说启用Multidex或增加堆大小,但是我确定我都不需要任何解决方案。

我该怎么解决?

关于这个问题:这是 What is a stack trace, and how can I use it to debug my application errors?的直接扩展,除了您要查看Gradle堆栈跟踪而不是Java堆栈跟踪。

最佳答案

前言

该错误消息不足以诊断问题。有ways to get more information,应该首先检查它。

Gradle输出本身应该指向:module:someTask FAILED和最后一个:module:someOtherTask之间的消息上方几行中的实际错误。因此,如果您提出有关错误的问题,请编辑您的问题以包括更多有关错误的上下文。

问题
someTaskapp:someTask FAILED部分是非常重要,因为它可以准确告诉您构建过程的哪一步已崩溃。

这些步骤包括准备依赖关系,生成和合并 Assets 和资源文件,检查代码中的错误并进行编译,然后最终安装应用程序。

如果在构建过程的任何时候Gradle检测到异常,它将抛出一个非零的退出值,表明发生了错误。

退出值本身有些重要。

  • 1只是一个常规错误代码,该错误很可能在Gradle输出
  • 2似乎与重叠的依赖项或项目配置错误有关。
  • 3似乎是由于包括过多的依赖项或内存问题。

  • 可能还有其他内容,因此请随时提供您自己的评论或其他值的答案。

    解决方案

    上面的一般解决方案(在尝试清理和重建项目后)是:
  • 1-解决提到的错误。通常,这是compile-time error,这意味着项目中的某些代码无效。这包括用于Android项目的XML和Java。有关进入应用程序
  • 的所有内容,请引用图像

    gradle process
  • 23-许多答案告诉您enable multidex。虽然它可以解决问题,但很可能是解决方法。如果您不明白为什么要使用它(请参阅链接),则可能不需要它。

  • 如果您在Gradle日志中找不到任何错误输出,那么建议的操作步骤是打开Android Studio的Gradle窗口。

    Android Studio Gradle

    打开每个模块的 Tasks文件夹,然后执行以下操作的组合。
  • 要清除并重置生成的文件的代码,请使用build> clean,然后使用build> build
  • 要检查嵌套的依赖项,请使用help> dependencies。确保没有重复。
  • 要检查代码中的语法错误和警告,请运行verification> lint。这将输出一个HTML文件,您可以在浏览器中阅读该文件。 Gradle日志将显示Wrote HTML report to file:///path/to/app/build/outputs/lint-results.html,因此只需打开该文件即可查看所有错误和警告。
  • 要尝试在设备上运行应用程序,请使用install> installDebug

  • 补充说明

    我刚安装Android Studio时看到过很多值2的帖子,但有一个错误

    'android-studio/jre/bin/java' finished with non-zero exit value 2



    安装Java JDK并正确配置Android Studio以使用JDK似乎可以解决此问题。

    如果您通过 compile 'com.google.android.gms:play-services:X.Y.Z'使用 Google Play服务,则仅使用 include the dependencies you actually need,否则您很可能达到了Multidex限制。了解如何 enable it

    如果您的Gradle文件中有一行读取 compile fileTree(dir: 'libs', include: ['*.jar']),那么您不需要任何其他具有 compile files('libs/some_file.jar')的行,因为第一种方式是“在 libs/目录中包括每个JAR文件”。

    到那时,如果您正在使用Gradle并能够通过搜索 Maven Repository找到想要使用的依赖项,那么强烈建议您使用它,而不是将JAR文件手动放置到 libs/目录中。对于该站点上的每个库,都有一个Gradle选项卡,您只需要复制该行并将 compile <line you copied>放入 dependencies部分。

    如果您有一行可以编译另一个项目,例如 compile project(":project_name"),请确保您没有从那里复制依赖项。

    解决内存相关问题的另一种解决方案涉及扩大堆大小,这是通过 build.gradle这样完成的
    android {
    // Other stuffs
    dexOptions {
    javaMaxHeapSize "2g" // or "4g" if your device has enough memory
    }
    }

    关于java - Gradle-什么是非零退出值,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698816/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com