android - Flutter Android 构建输出错误

标签 android flutter build apk android-app-bundle

我有一个应用程序已升级为使用 Flutter 2 构建。我仍然要做空安全的工作,但一次一步。

当我构建(发布和调试)时,apkaab 的输出到错误的位置并且(在 aab's) 这会导致 flutter 在最后抛出。

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

build folder in android

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

build folder in root

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

这也是 al 4 版本的输出(全部采用 nonprod 风格) enter image description here

一些 gradle 信息

  • ext.kotlin_version = '1.5.10'
  • com.android.tools.build:gradle:4.1.0
  • flavor 配置
    flavorDimensions "environment"

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

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

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 block 。这导致了问题。

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

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

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

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

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

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

归功于此答案https://stackoverflow.com/a/63414006/2181352

关于android - Flutter Android 构建输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68269312/

相关文章:

android - DownloadManager 在目录创建时的行为

android - 在 FlutterSplashView.java 为我发布的一个应用程序获取 ClasscastException

android - 用于桌面的 flutter 插件是否必须使用特定于平台的语言编写(例如我们使用 C++ 的 windows 和我们使用 Swift 的 mac)

flutter - 如何为外部类创建页面 View

flutter - 将 flutter app 从 ios 移动到 windows 时出现问题,反之亦然

git - 为什么我的 TeamCity 构建停止工作?

Android嵌入式数据库只读

android - 如何在应用程序内部创建论坛?

php - 从源代码构建 PHP 后的 PHP 二进制文件在哪里?

java - 错误: Could not find or load main class on Docker