我正在开发一个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和last:module:someOtherTask.因此,如果您询问有关错误的问题,请编辑您的问题以包含错误的更多上下文.
问题
应用程序的soMetask部分:soMetask Failed非常重要,因为它告诉您构建过程的哪个步骤已经崩溃.
这些步骤包括准备依赖项,生成和合并资产和资源文件,检查代码是否存在错误和编译,然后最终安装应用程序.
如果在构建过程的任何时刻Gradle检测到异常,它将抛出一个非零退出值,表示发生了错误.
退出值本身有点重要.
> 1只是一般错误代码,错误可能在Gradle输出中
> 2似乎与重叠依赖项或项目配置错误有关.
> 3似乎来自包含太多依赖项或内存问题.
可能还有其他人,所以请随意提供您自己的意见或答案与其他价值观.
解决方案
上述(在尝试清理和重建项目之后)的一般解决方案是:
> 1 – 解决上面提到的错误.通常,这是compile-time error,这意味着项目中的某些代码无效.这包括Android项目的XML和Java.有关进入应用程序的所有内容,请参阅图像
> 2& 3 – 这里有很多答案告诉你enable multidex.虽然它可以解决问题,但它很可能是一种解决方法.如果您不明白为什么使用它(请参阅链接),您可能不需要它.
如果您无法在Gradle日志中找到任何错误输出,那么建议的操作方法是打开Android Studio的Gradle窗口.
>要清理和重置生成文件的代码,请使用build>清洁后跟构建>建立.
>要检查嵌套的依赖项,请使用help>依赖.确保没有重复.
>要检查代码是否存在语法错误和警告,请运行验证>皮棉.这将输出您可以在浏览器中阅读的HTML文件. Gradle日志会将HTML报告写入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似乎可以解决此问题.
如果您使用Google Play服务编译’com.google.android.gms:play-services:X.Y.Z’,那么只有include the dependencies you actually need,否则您很可能达到了Multidex限制.了解如何enable it.
如果您的Gradle文件中有一行读取编译filetree(dir:’libs’,include:[‘* .jar’]),那么您不需要任何其他具有编译文件的行(‘libs / some_file. jar’)因为第一种方式是“将每个JAR文件包含在libs /目录中”.
除此之外,如果您正在使用Gradle并且能够通过搜索Maven Repository找到您想要使用的依赖项,那么强烈建议您使用它而不是手动将JAR文件放入libs /目录中.对于该站点上的每个库,都有一个Gradle选项卡,您只需要复制那一行并放入您复制的编译<行>进入依赖项部分.
如果你有一行编译另一个项目,如编译项目(“:project_name”),那么请确保你没有从那里复制依赖项.
与内存相关的问题的另一个解决方案涉及扩展堆大小,这是从build.gradle中完成的,就像这样
android {
// Other stuffs
dexOptions {
javaMaxHeapSize "2g" // or "4g" if your device has enough memory
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。