前言
该错误消息不足以诊断问题。有ways to get more information,应该先检查一下。
Gradle 输出本身应该指向:module:someTask FAILED 和最后一个:module:someOtherTask 之间消息上方几行中的实际错误。因此,如果您询问有关错误的问题,请编辑您的问题以包含错误的更多上下文。
问题
app:someTask FAILED 的 someTask 部分非常很重要,因为它可以准确地告诉您构建过程的哪个步骤已经崩溃。
这些步骤包括准备依赖项、生成和合并资产和资源文件、检查代码是否有错误和编译,然后最终安装应用程序。
如果 Gradle 在构建过程的任何时候检测到异常,它将抛出一个非零退出值,指示发生了错误。
退出值本身有些重要。
-
1 只是一般错误代码,错误可能在 Gradle 输出中
-
2 似乎与重叠依赖或项目配置错误有关。
-
3 似乎是由于包含了太多的依赖项,或者是内存问题。
可能还有其他人,所以请随时提供您自己的 cmets 或其他值的答案。
解决办法
上述问题的一般解决方案(在尝试清理和重建项目之后)是:
-
1 - 解决提到的错误。通常,这是compile-time error,这意味着您项目中的某些代码无效。这包括用于 Android 项目的 XML 和 Java。有关进入应用程序的所有内容,请参阅图片
-
2 & 3 - 这里有很多答案告诉你enable multidex。虽然它可能会解决问题,但它很可能是一种解决方法。如果您不明白为什么要使用它(请参阅链接),您可能不需要它。
如果您无法在 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' 以非零退出值 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') 的行,因为第一种方式是“将 每个 JAR 文件包含在libs/ 目录。”
除此之外,如果您使用 Gradle 并且能够通过搜索 Maven Repository 找到您想要使用的依赖项,那么强烈建议您使用它而不是手动将 JAR 文件放入 @ 987654357@ 目录。对于该站点上的每个库,都有一个 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
}
}