⚠️

【flutter】iPhoneでbuild(ビルド)できない時に試すこと

2024/01/27に公開

プログラミング初学者が躓きがちな、環境構築とビルドエラー。
今回は、flutterでよく陥るiOS(iPhoneなど)ビルドエラーの解決方法をまとめました。
初学者向けに書いているため、ある程度検討がついてる方は目次からサクッとどうぞ。

  • VScode:1.85.2
  • Xcode:15.2
  • iOS:17.2
  • macOS:Sonoma 14.2

flutter doctor -v

問題を探すコマンドです。
ただし、こちらで出てきたエラーが原因とは限りません。解決すればラッキーくらいの気持ちでやってみましょう。
エラーが出ているファイルのterminalで入力してください。

flutter doctor -v

flutter devices

どのシミュレータでビルドできるかを確認するコマンドです。
選択肢にiOSが出てこない場合は、xcodeのアカウントや、シミュレータそのものの問題である可能性があります。

flutter devices

AppleIDの設定

xcode > Setting > Accounts > AppleIDを追加
xcode以外のエディタをメインに使用している場合は、起動時に設定していない可能性があります。

xcodeログイン

xcodeを立ち上げてsigninされているか確認してください。
xcodeで以下の▶︎アイコンをクリック

xcodeのアプリ情報を入力


上記であれば、Bundle identifyが一意でないことが原因です。短い文字列や、タイマーアプリにtimerなどとつけようとするとエラーになってしまうため、数字やアルファベットを用いて被らないようにしましょう。

xcodeのsandbox設定

iOS15.0以降、デフォルトでセキュリティに守られた状態になりました。
xcode > setting > command + F > "sandbox" と検索
以下をYesからNoにしましょう。

https://tech.amefure.com/swift-xcode-build-error-sandbox

すごく端折って説明すると、vscodeやandroidstudioのようなxcode以外からのビルドをブロックするような設定だと思えばいいです。
https://www.ntt.com/bizon/glossary/j-s/sandbox.html

simulatorを起動

simulatorを直接起動すると、Unable to boot the Simulator というエラーが出ていることがあります。これは、パソコン側の処理が追いついていない、キャッシュが溜まりすぎてしまっていることが原因です。Macであればアクティビティモニタ、Windowsであればタスクマネージャーで原因となっているアプリケーションを特定できます。

キャッシュクリア1

パソコン自体のメモリを使いすぎている可能性があります。
About this Mac > Storage > Manage > Developper と進み、XCode Cache を全て削除する。
https://zenn.dev/shinkano/articles/75c7582a04a630

キャッシュクリア2

キャッシュクリア1の手順で解決しない場合はこちら。
ユーザ>(自身のディレクトリ名)>ライブラリ>Developer>CoreSimulator>Cashes>dyld>2xxxx配下のファイルを全て削除します。
ライブラリは通常通りfinderを開くと見えない隠しファイルです。finderで「command」+「shift」+「.」 で表示させましょう。
※terminalからUNIXで隠しファイルを検索したい場合は(自身のディレクトリ名)のフォルダの階層で「ls -a」コマンドで表示することができます。
https://qiita.com/kokogento/items/465984cad8624f483782

flutter clean

キャッシュをクリアするコマンドです。
エラーが出ているファイルのterminalで入力してください。

flutter clean

flutter pub get

パッケージ周りのエラーが起こっている可能性があります。pabspec.yamlなどのファイルにあるパッケージを整理しましょう。
git cloneした際など、debagに失敗したら試すコマンドです。作業しているファイルのterminalで、以下のコマンドを実行します。

flutter clean
flutter pub get
flutter run

ここでビルドできれば、パッケージの情報が更新されてなかっただけの可能性があります。

dart fix

単純に文法通りにしてくれます。
根本原因は解決しないことも多いので、わかっていないエラーがあればよく読むか調べましょう。
エラーが出ているファイルのterminalで入力してください。

dart fix

xcodeビルド

xcode側が原因の可能性があります。エラー原因が切り分けられない場合は行ってみると良いでしょう。
xcodeを起動して左にある▶︎を押します。

エディタやシミュレータの再起動

困ったら再起動。VScode,AndroidStudio,Xcode,Simulatorなど再起動してみましょう。
UIで終了しなくても、reloadコマンドでできます。

Mac
Shift + Command + P
Windows
Shift + Ctrl + P

reload

iosフォルダを置換

環境構築時に指定したフォルダにiosフォルダがあります。バックアップをコピーして保存した後、全て削除して以下のコマンドで置き換えましょう。

flutter create -i swift .

iOSのサポートバージョン

project.pbxproj ファイル内にある IPHONEOS_DEPLOYMENT_TARGET のバージョン値を更新しましょう。

アップデート/アップグレード

flutterをアップグレード

flutterのバージョンが古い可能性があるため、実施してみても良いかもしれません。
公開しているアプリの場合、予期せぬエラーが起こることがあります。
エラーが出ているファイルのterminalで入力してください。

flutter upgrade

cocoapodsのアップグレード

cocoapodsのバージョンを更新しましょう。
rubyでインストールしている

gem update cocoapods

homebrewでインストールしている

brew upgrade cocoapods
  • iPhoneのOSをアップデートする
  • MacのOSをアップデートする
  • Xcodeをアップデートする

iPhoneとの接続エラー

  • iPhoneとMacを繋ぎ直す
  • iPhoneとMacを再起動する

細分化するととてもエラーが多いですが、flutterとxcodeを使うのであれば必ず向き合うことになるエラーです。間違っているところなどございましたらコメントいただけると幸いです。

参考
https://zenn.dev/seito/articles/6ac70d8831aa88#discuss

Discussion