FlutterのiOSビルドができない
Flutterのアプリ開発を行っている大学3回生です。
普段はUbuntuでVSCode + Android Studioで開発しているのですが,慣れないMacbookとXCodeでiOSアプリのビルド&アップロードが必要になり,様々な苦労をしたのでシェアします。
XCodeでプロジェクトディレクトリを開く方法がわからない
GitHubからリポジトリをクローンしてきたものの,XCodeで開くこともできず…。
問題
XCodeでリポジトリのルートディレクトリを選択するも,開けない。
原因
VSCodeやAndroid Studioでプロジェクトを開く際は,ルートディレクトリを直接開いて作業することが多いですが,XCodeでFlutterアプリのプロジェクトを開くには,<root_dir>/ios/Runner.xcworkspace
というファイルを選択して開く必要があるようです。なお,Runner.xcodeproj
を選択してしまうとまた別の問題が発生するようですのでご注意を (参考サイト)
解決策
<root_dir>/ios/Runner.xcworkspace
を指定して開く。
参考サイト
iOS Simulatorによるデバッグを試みるもビルド失敗
リリースビルドの前に,まずはシミュレータによるデバッグが成功するかどうか調べようとして,XCodeのプロジェクトナビゲータ(左側のバー)で▶ボタンを押し,デバッグを試みたものの……
問題
次のようなエラーが発生しました。
error: unable to parse contents of file list ‘/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks-Debug-input-files.xcfilelist’
原因
このエラーについて調査した結果,CocoaPodsがインストールされていないことが原因と判明しました。CocoaPodsとは,iOS/Macアプリ開発用のパッケージ管理ツールだそうです。
解決策
CocoaPodsをインストールすることによって解決できました。今回私が躓いた原因は「そもそもインストールされていない」ということでしたが,「古いバージョンを使用している」場合にも同様の方法により解決が期待できるようです。
sudo gem install cocoapods
CocoaPodsをインストールした後は,実際にビルドする前に以下のコマンドも実行する必要があります。
cd ios # ルートディレクトリ直下のiosディレクトリへ移動
pod install
pod install
を実行した後でXCode上でRunした時に"Generated.xcconfigというファイルが見つからない"というエラーが出た場合は,先にルートディレクトリでflutter pub get
を実行してから再度pod install
を実行してみてください。
参考: Flutter iOSのシミュレーターで実行エラーになるときの対処法の章「pod install成功 → Xcodeで依然エラー」
参考サイト
ちなみに調査時にはこちらのページも見ていたのですが,今回はこちらの方法では解決できませんでした。
https://qiita.com/kogepan159/items/eade1c9d3049b0d9a4d9
XCodeでビルドエラーの詳細がどこに書かれているかわからない
先程のCocoaPods絡みのエラーを解決したところで,改めてXCodeからデバッグを試みたところ…
問題
表示されたエラーメッセージはこのようなものでした。
Command PhaseScriptExecution failed with a nonzero exit code
あまりに不親切ですね。とはいえ,どこかにエラー詳細を読む方法があるはずです。
解決策
Report Navigatorと呼ばれる場所(デフォルトで左側にあるバー)からエラーログを読みに行くことができました。詳細は以下の記事をご覧ください。
xcode_backend.sh: no such file or directory.
エラー
先程の投稿でビルドエラーの詳細を調査できるようになりました。そこで該当エラー出力を読みに行ったところ…
問題
以下のようなエラー文が出力されていました。
xcode_backend.sh: no such file or directory.
原因
ビルド時にFlutter SDKの所在を知るためFLUTTER_ROOT
という環境変数が参照されるが,そのFLUTTER_ROOT
が設定されていなかった。
解決策
~/.zshrc
に環境変数FLUTTER_ROOT
として,Flutter SDKのパス(flutter doctor
で調べられます!)を設定する。今回は~/.zshrc
に書き込んでいますが,状況に応じて.zprofile
や.bashrc
等に書き込んでください。
export FLUTTER_ROOT="(SDKの展開先)"
参考サイト
flutter build ios
コマンドが失敗する
色々調べて,リリースビルドのためにはflutter build ios --release
を実行してから,XCode内で"Product"=>"Archive"を実行すれば良いらしいと判明し,flutter build ios --release
を実行したところ…
問題
以下のようなエラーが出ました。
Cannot find "xcodebuild". Xcode 13.0 or greater is required to develop for iOS.
原因
間違いなくXCodeは入っているので,どうやらFlutter SDK側にXCodeが認識されていないようです。
実際flutter doctor
を実行したところ,iOS toolchain
の章にXCode installation is incomplete
と書かれていました。
解決策
flutter doctor
を実行した際のXCode installation is incomplete
のすぐ下に,Once installed, run
から次の文が書かれていました。
Once installed, run:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
すなわち,以下のコマンドを実行することで解決です。
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
参考サイト
2回目以降のリリースについて
参考サイト: