🙄
【Flutter】【fastlane】 --dart-define-fileのパス指定でエラー
概要
- Flutterアプリを、fastlaneで、TestFlightアップロードしたい。
- dart-define-from-file を利用
- --dart-define引数で、iosをbuild。
- dart-define用の.evnファイルのパス指定のエラーで、ハマった(解決済み)
fvm flutter build ios --release --dart-define-from-file=dart_defines/hoge.env
前提条件
- 前提条件1 プロジェクトのフォルダ構成
FlutterApp/
/ios
/fastlane
/Fastfile
/dart-defines
/hoge.env
-「FlutterApp」の直下に、
- [iosフォルダ]と[dart-definesフォルダ]が同じ階層に配置
- 前提条件2 コマンドを実行するディレクトリ
- fastlaneの実行は、「FlutterApp/ios」で実行
- 前提条件3 Fastfile内でのパス指定の基準ディレクトリ
- fastlaneのコマンド実行の「基準となるディレクトリ」は、「Fastfile」の場所ではなく、「コマンド実行時の場所」
- つまり、今回は「FlutterApp/ios」が基準ディレクトリ。
ハマった点(→ dart-define のファイルのパス指定)
[Fastfile] 内で、[flutter build ios]する際の、「--dart-defineオプション」時のhoge.env のパス指定が、エラーでハマった。
上のような条件なので、
--dart-define-from-file=../../dart_defines/hoge.env
が、正しいように思うがエラーとなり(file not foundエラー)
--dart-define-from-file=dart_defines/hoge.env
が、正常に動作した。
実際のコマンド(Fastfile内で利用)
NG
sh "fvm flutter build ios --release --dart-define-from-file=../../dart_defines/hoge.env"
OK
sh "fvm flutter build ios --release --dart-define-from-file=dart_defines/hoge.env"
備考・考察
- current working directoryが、下のログのように自動で(?)切り替わるようで、上の「../../」指定だと、file見つからないエラーとなる様子。
- そのため、パス指定は、アプリルートからのパス指定が正解。
- ログ例:
▸ Changing current working directory to: /Users/hoge/Development/huga/piyo/puyo/flutterApp]
その他
ログ吐いて調査する際に、下記を実装した。
sh "cd ..&& pwd && ls"
sh "cd ../../&& pwd && ls"
sh "cd ../../dart_defines/&& pwd && ls"
sh "fvm flutter build ios --release --dart-define-from-file=dart_defines/hoge.env"
sh "cd ..&& pwd && ls" で、path出力するとパスは間違っていないが、
flutterコマンド?実行時のタイミングで「Changing current working directory to: 」 とディレクトリがアプリルートに変更(?)されるようになっている様子?
Discussion