Flutter中无法使用多个flavor构建发布版apk?

8

我正在使用Flutter(版本 1.17.4)开发Android应用,并配置多种口味以运行多个环境。

我的源代码有三个环境:dev(开发),uat(质控)和prod(生产)。

源代码: https://github.com/huubao2309/demo_multi_flavors

我的multiFlavors.gradle文件 (/android/app/multiFlavors.gradle):

android {
    flavorDimensions "app"

    productFlavors {
      prod {
        dimension "app"
        applicationIdSuffix ".prod"
        versionNameSuffix "-prod"
      }
      dev {
        dimension "app"
        applicationIdSuffix ".dev"
        versionNameSuffix "-dev"
      }
      uat {
        dimension "app"
        applicationIdSuffix ".uat"
        versionNameSuffix "-uat"
      }
   }
}

每次我都使用终端构建发布应用程序:
flutter build apk --flavor uat -t lib/main-uat.dart

创建了文件 .apk 但终端抛出异常:

Gradle 构建未能生成 .apk 文件。这个文件可能已经在 D:\demo_multi_flavors\build 下生成,但工具找不到它。

error

运行 debug 模式时我也遇到了这个问题,但在 Android Studio (版本为 4.0) 上添加了 构建 flavor 的设置后,问题得以解决:

add_flavor

如何解决 release 模式下的此问题?

1个回答

5

这个bug似乎是由Flutter寻找一个精确的.apk名称引起的,但无法找到它。在我的情况下,生成的.apk文件名为app-release-unsigned.apk,但需要改为app-release.apk。这是我的解决方案:

  buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "app-${variant.getName()}.apk"
            }
        }
    }
}

参考:https://github.com/flutter/flutter/issues/44796#issuecomment-602278977

这是一个关于Flutter的问题解决方案的链接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接