Codemagic - 为构建参数设置动态环境变量

Codemagic - Set Dynamic Environment Variables for the Build arguments

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

如果我在 CodeMagic 的环境变量部分中为 TARGET_FILEFLAVOR 定义值,我就能让它工作。 但我的目标是在我的 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

不知道有没有人遇到过这种情况

至于从 GitHub 配置构建,您可以使用 codemagic.yaml 文件,该文件允许您定义 CodeMagic 构建的配置,包括环境变量 (here is a docs)。

补充说明,只是一个命题))

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

例如,您可以使用 .env 文件和 flutter_config package to pass env specific variables to the native layer, including plist's and Gradle. Also, you can load this .env file into Dart code and use variables from it. On top of this, you can use this package to generate .env file with the terminal command (if you don't want to create any sh scripts))). Alongside with .env file, it can generate Dart class specifically for Dart code. It also can generate files based on global env variables

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

2020 年 5 月 8 日更新:

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