Flutter Android 构建输出错误

Flutter Android build output is wrong

我有一个升级为使用 Flutter 2 构建的应用程序。我仍然要做 null-safety 的事情,但一次一个步骤。

当我构建(发布和调试)时,apkaab 将输出输出到错误的位置并且(在 aab 的情况下) 这会导致 flutter 在最后呕吐。

在此屏幕截图中,您将看到输出生成到 android/app/build 文件夹,这是不正确的

在构建 apk 的情况下,它还会将其生成到 build/app/outputs 文件夹中,这更好,但仍然不是 100%,因为它应该是 build/app/outputs/apk/nonprod/release/app-nonprod-release.apk

所以我的应用有两种风格 [prod | nonprod ],我在发布和调试版本上为 aabapk 构建。

这里也是 al 4 构建的输出(都是 nonprod 风格)

一些gradle信息

    flavorDimensions "environment"

    productFlavors {
        prod {
            dimension "environment"
        }
        nonprod {
            dimension "environment"
            versionNameSuffix "-test"
            applicationIdSuffix ".test"
        }
    }

那么我该如何解决这个问题以将人工制品生成到正确的文件夹

build/app/outputs/apk/{flavor}/{buildType}/app-{flavor}-{buildType}.apk

build/app/outputs/bundle/{flavor}{buildType}/app-{flavor}-{buildType}.aab

并且不会在 appbundle 上完全失败

提前致谢。

因此,作为我迁移到 Flutter 2 的一部分,我犯了一个错误。

android/build.gradle 中定义了 subprojects 我试着聪明地将它们组合成一个 subprojects 块。这导致了问题。

重要的是,如果您当前有两个单独的块,请将它们分开,就像这样

subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}

subprojects {
    project.evaluationDependsOn(':app')
}

生成新的flutter项目时,实际上是用一个block生成的。

subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
    project.evaluationDependsOn(':app')
}

不要尝试在旧版本中使用它。

归功于此答案