簡體   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