【问题标题】:Codemagic - Set Dynamic Environment Variables for the Build argumentsCodemagic - 为构建参数设置动态环境变量
【发布时间】:2020-08-03 03:30:17
【问题描述】:

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

如果我在 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

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

【问题讨论】:

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


    【解决方案1】:

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

    补充说明,只是一个提议))

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

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

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

    2020 年 8 月 5 日更新:

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

    【讨论】:

    • 我设法使用codemagic.yaml 做到了。对于这个特定的场景,codemagic.yaml 就足够了,我不需要用flutter_config 来实现一些东西。但是现在意识到了。谢谢tatusDn
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多