🙄

【Flutter】【fastlane】 --dart-define-fileのパス指定でエラー

2024/10/31に公開

概要

  • 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