我有一个应用程序已升级为使用 Flutter 2 构建。我仍然要做空安全的工作,但一次一步。
当我构建(发布和调试)时,apk
和 aab
的输出到错误的位置并且(在 aab
's) 这会导致 flutter 在最后抛出。
在此屏幕截图中,您将看到输出生成到 android/app/build
文件夹,这是不正确的
在构建 apk
的情况下,它还会将其生成到 build/app/outputs
文件夹,该文件夹更好,但仍然不是 100%,因为它应该是 build/app/outputs/apk/nonprod/release/app-nonprod-release.apk
所以我的应用程序有两种风格 [ prod | nonprod ],我在发布和调试版本上为 aab
和 apk
进行构建。
这也是 al 4 版本的输出(全部采用 nonprod
风格)
一些 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')
}
不要尝试在较旧的版本中使用它。
关于android - Flutter Android 构建输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68269312/