Gradle 构建无法生成 .apk 文件。很可能这个文件是在~\<Project Name> uild下生成的,但是工具找不到它

问题描述 投票:0回答:1

在执行(flutter clean)、(文件 -> 无效缓存)然后通过(flutter pub get)重建我的 Flutter 项目后,我遇到了一个非常烦人的问题..

运行我的项目后,我遇到了这条该死的消息,上面写着: ((Gradle构建未能生成.apk文件。很可能该文件是在〜 uild下生成的,但工具找不到它。))

enter image description here

有人可以帮助我并告诉我如何解决这个该死的问题吗?为什么那个该死的 Gradle 不能生成 APK?

android flutter dart gradle
1个回答
0
投票

导致我该死的问题的是在build.gradle(project)中,在这部分代码中:

rootProject.buildDir = '../build'
subprojects {
  project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
  project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
  delete rootProject.buildDir
}

我这样更改了代码:

rootProject.layout.buildDirectory = "../build"
subprojects {
  project.layout.buildDirectory = "${rootProject.name}/${project.name}"
}
subprojects {
  project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {
  delete rootProject.layout.buildDirectory
}

在我读到 Project.buildDir 已被弃用并且应该从这里使用 Project.layout.buildDirectory 后:

https://docs.gradle.org/8.10.1/userguide/upgrading_version_8.html#deprecations_7

已弃用的 Project.buildDir 将被 Project.layout.buildDirectory 取代 Project.buildDir 属性已弃用。它使用急切的 API,并且如果在构建逻辑中读取值然后进行修改,则会出现排序问题。这可能会导致输出最终出现在不同的位置。

它被 Project.layout.buildDirectory 中的 DirectoryProperty 取代。 详情请参见ProjectLayout界面。

请注意,在此阶段,如果您仍然使用 Project.buildDir,Gradle 将不会打印弃用警告。我们知道这是一个很大的变化,我们希望给主要插件的作者时间停止使用它。

从文件切换到 DirectoryProperty 需要调整构建逻辑。主要影响是您无法使用 String 内部的属性来扩展它。相反,您应该利用 dir 和 file 方法来计算所需的位置。

我认为问题出在这一行:

project.layout.buildDirectory = "${rootProject.name}/${project.name}"

如果有人能回复我并告诉我如何在 Gradle 代码中使用project.layout.buildDirectory 而不是project.buildDir,我将不胜感激。 谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.