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

时间:2020-04-20 15:07:56

标签: flutter continuous-integration continuous-deployment flutter-test codemagic

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

enter image description here

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

我当时想我可以在预构建部分中设置env var。

enter image description here

以下是我的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

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

1 个答案:

答案 0 :(得分:2)

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

其他注释,只是一个命题))

我实际上不知道您的Flavors和env入口点中发生了什么,但是很可能您可以同时摆脱这两种情况。

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

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

更新08/05/2020:

从Flutter 1.17开始,您可以使用--dart-defines参数而不是environment_config和flutter_config包来定义编译时变量。您可以阅读有关此参数here

的更多信息