Flutter:Gradle 构建未能生成 .apk 文件。很可能这个文件是在***下生成的但是工具找不到
Flutter: Gradle build failed to produce an .apk file. It's likely that this file was generated under *** but the tool couldn't find it
我们正在使用一些本机模块构建 flutter 应用程序。过去,我们使用 flutter 作为一些跨平台部署的模块,但最终我们决定先让它成为 flutter。
在我们遇到这个错误之前,一切似乎都按预期工作:
Gradle 构建未能生成 .apk 文件。很可能这个文件是在C:\Users\user\folder\project\flutter_modules\build下生成的,但是工具找不到它。
在 C:\Users\user\folder\project\flutter_modules\build\app\outputs\apk\debug 下生成了一个可用的 apk,但我们找不到设置 gradle 的方法找到它。
我们已经尝试了许多建议的修复,例如指定应用风格、添加拆分、更新 flutter 和 gradle,但没有任何效果。有什么我们遗漏的吗?
有什么方法可以指定 gradle 应在哪个文件夹中搜索生成的 apk?
我们知道,如果我们 运行 flutter run --use-application-binary flutter_modules/build/outputs/apk/debug/app-debug.apk
它会安装它,但不会在安装前构建它。
但是我们找不到使用 flutter run
或在 Android Atudio 中按 运行 来构建和安装它的方法。
有没有人遇到过同样的情况?除了构建它,让它找不到apk并手动安装它,我们还能做些什么吗?
经过几天的调试,我们决定在构建后将生成的 .apk 移动到构建系统期望的位置。换句话说,我们将此 添加到应用级别 build.gradle。
applicationVariants.all { variant ->
variant.assemble.doLast {
copy {
from '../../build/app/outputs/apk/debug/app-debug.apk'
into '../../build/host/outputs/apk'
}
}
}
还要确保此 在项目级别 build.gradle。
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我们正在使用一些本机模块构建 flutter 应用程序。过去,我们使用 flutter 作为一些跨平台部署的模块,但最终我们决定先让它成为 flutter。
在我们遇到这个错误之前,一切似乎都按预期工作:
Gradle 构建未能生成 .apk 文件。很可能这个文件是在C:\Users\user\folder\project\flutter_modules\build下生成的,但是工具找不到它。
在 C:\Users\user\folder\project\flutter_modules\build\app\outputs\apk\debug 下生成了一个可用的 apk,但我们找不到设置 gradle 的方法找到它。
我们已经尝试了许多建议的修复,例如指定应用风格、添加拆分、更新 flutter 和 gradle,但没有任何效果。有什么我们遗漏的吗?
有什么方法可以指定 gradle 应在哪个文件夹中搜索生成的 apk?
我们知道,如果我们 运行 flutter run --use-application-binary flutter_modules/build/outputs/apk/debug/app-debug.apk
它会安装它,但不会在安装前构建它。
但是我们找不到使用 flutter run
或在 Android Atudio 中按 运行 来构建和安装它的方法。
有没有人遇到过同样的情况?除了构建它,让它找不到apk并手动安装它,我们还能做些什么吗?
经过几天的调试,我们决定在构建后将生成的 .apk 移动到构建系统期望的位置。换句话说,我们将此 添加到应用级别 build.gradle。
applicationVariants.all { variant ->
variant.assemble.doLast {
copy {
from '../../build/app/outputs/apk/debug/app-debug.apk'
into '../../build/host/outputs/apk'
}
}
}
还要确保此 在项目级别 build.gradle。
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}