2

我正在寻找一种在构建参数中管理动态环境变量的方法。

在此处输入图像描述

如果我在 CodeMagic 的环境变量部分中定义值TARGET_FILE,我就能让它工作。FLAVOR但我的目标是在我的 git 存储库中指定值。因此,我将能够对其进行更改并进行动态构建。

我在想我可以在预构建部分设置环境变量。

在此处输入图像描述

以下是我的pre-build.sh文件示例

# in my case it’s `dev`, `qa` and `prod`
export FLAVOR='qa'

# major and minor part of app version e.g. 1.0
export VERSION_NUMBER='1.0.0'

# this is the entry point of the app e.g. main_dev.dart
export TARGET_FILE="lib/main_$FLAVOR.dart"

我的构建仍然失败,因为TARGET_FILE未指定示例

Target file "--flavor" not found.


Build failed :|
Failed to build for Android

我想知道是否有人遇到过这种情况

4

1 回答 1

2

至于从 GitHub 配置构建,您可以使用codemagic.yaml允许您为 CodeMagic 构建定义配置的文件,包括环境变量(这里是一个文档)。

附加说明,只是一个提议))

我实际上不知道您的 Flavors 和 env 入口点发生了什么,但很有可能您实际上可以摆脱两者。

例如,您可以使用 .env 文件和flutter_config包将特定于 env 的变量传递给原生层,包括 plist 和 Gradle。此外,您可以将此 .env 文件加载到 Dart 代码中并使用其中的变量。最重要的是,您可以使用此包通过终端命令生成 .env 文件(如果您不想创建任何 sh 脚本)))。除了 .env 文件,它还可以专门为 Dart 代码生成 Dart 类。它还可以根据全局环境变量生成文件。

这样,所有特定于环境的配置都将被定义一次,除了构建工具之外,您不会在任何地方公开您的 prod 凭据,并且您不需要复制/粘贴多个入口点。

2020 年 8 月 5 日更新:

从 Flutter 1.17 开始,您可以使用--dart-defines参数而不是 environment_config 和 flutter_config 包来定义编译时变量。您可以在此处阅读有关此论点的更多信息

于 2020-04-20T17:30:10.360 回答