【flutter】iPhoneでbuild(ビルド)できない時に試すこと
プログラミング初学者が躓きがちな、環境構築とビルドエラー。
今回は、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にしましょう。
すごく端折って説明すると、vscodeやandroidstudioのようなxcode以外からのビルドをブロックするような設定だと思えばいいです。
simulatorを起動
simulatorを直接起動すると、Unable to boot the Simulator というエラーが出ていることがあります。これは、パソコン側の処理が追いついていない、キャッシュが溜まりすぎてしまっていることが原因です。Macであればアクティビティモニタ、Windowsであればタスクマネージャーで原因となっているアプリケーションを特定できます。
キャッシュクリア1
パソコン自体のメモリを使いすぎている可能性があります。
About this Mac > Storage > Manage > Developper と進み、XCode Cache を全て削除する。
キャッシュクリア2
キャッシュクリア1の手順で解決しない場合はこちら。
ユーザ>(自身のディレクトリ名)>ライブラリ>Developer>CoreSimulator>Cashes>dyld>2xxxx配下のファイルを全て削除します。
ライブラリは通常通りfinderを開くと見えない隠しファイルです。finderで「command」+「shift」+「.」 で表示させましょう。
※terminalからUNIXで隠しファイルを検索したい場合は(自身のディレクトリ名)のフォルダの階層で「ls -a」コマンドで表示することができます。
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を使うのであれば必ず向き合うことになるエラーです。間違っているところなどございましたらコメントいただけると幸いです。
参考
Discussion