我正在寻找一种在构建参数中管理动态环境变量的方法。
如果我在CodeMagic的环境变量部分中为TARGET_FILE
和FLAVOR
定义了值,我就能使其工作。
但是我的目标是在git存储库中指定值。因此,我将能够对其进行更改并进行动态构建。
我当时想我可以在预构建部分中设置env var。
以下是我的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
我想知道是否有人遇到过这种情况
答案 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