繁体   English   中英

"Flutter fastlane ios如何通过--dart-define"

[英]Flutter fastlane ios how to pass --dart-define

我找不到这个问题的答案。 我的应用需要定义参数--dart-define=ENVIRONMENT="$APP_ENV"<\/code>

构建 Android 没有问题,但是在 fastlane 中构建 ad-hoc 时如何通过这些? 我准备了运行的构建脚本:

flutter pub get
flutter build ios --config-only \ 
    --flavor prod \ 
    --dart-define=ENVIRONMENT="$APP_ENV"

cd ios
bundle exec fastlane build_app_prod_ad_hoc

解决方案
flutter_export_environment.shGenerated.xcconfig中编码和替换你的 dart 变量,然后直接从 Xcode/Fastlane 运行应用程序就可以了。

- - - 细节 - - - -

问题:
如果您直接从 Xcode/Fastlane 运行应用程序而不先运行 flutter run/build 命令,则通过 --dart-define 传递的变量不会反映。

原因:
涉及以下生成的文件,但不打算手动更新,但在我们从 Xcode 或 Fastlane 运行来构建应用程序的情况下,使用的 dart 变量不会得到更新。 当您运行 flutter run 或 build 命令时,这些文件将使用 --dart-define 中的值更新为 Base64。

/ios/Flutter/flutter_export_environment.sh
ios/Flutter/Generated.xcconfig

在此处输入图像描述

当您直接从 Xcode 构建应用程序或使用 Fastlane 时,Flutter 项目代码中 ios 文件夹中的 Generated.xcconfig 将用于运行/构建应用程序。

示例:在我的例子中,我们使用 --dart-define 传递 ENV 变量,但是如果您直接从 XCode 运行而不先运行 flutter build 或 run 命令,这些参数将不会更新。

颤振运行/构建 --flavor dev --dart-define ENV=dev

Dart 定义变量会以 Base64 编码存储在 flutter_export_environment.sh 和 Generated.xcconfig 中。

DART_DEFINES=RU5WX1UEU9chZ2luZw==

在此处输入图像描述

注意:这是一种解决方法,可以避免运行 flutter run/build 命令,然后运行 ​​Xcode/Fastlane 来解决问题。 不是最好的解决方案,但我希望它可以帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM