🦁

Unable to boot device because it cannot be located on disk

2025/01/23に公開

Daily Blogging 33日目

Flutterでアプリ開発をしてるとちょこちょこシミュレータのエラーに遭遇する。

Unable to boot device because it cannot be located on disk.

シミュレータを開こうとすると発生するエラーで、これが出るとシミュレータ使えない。

何回か遭遇してるけど結構期間空いてから遭遇するので、毎回時間かけてこれってなんだっけ?どうやって解決してたっけ?ってなる。
多分いつも気がついたら解決してましたって感じになってたと思う。

今回はちゃんと原因と対策をまとめておこう。

結局なんのエラーなの??

教えてChatGPT

このエラーが出る主な原因は、シミュレーターやデバイスのデータが正しく認識されていない場合や、デバイスが削除されているか壊れている場合です。
以下が考えられる原因と解決策です:

  • シミュレーターのデータが壊れている
    • iOSシミュレーターのデータや設定ファイルが破損していると、このエラーが発生します。
  • シミュレーターが削除された
    • 使用しようとしているシミュレーターがXcodeや他の操作によって削除された可能性があります。
  • Xcodeのバージョン変更による不整合
    • Xcodeをアップデートまたはダウングレードした際、古いデバイスやシミュレーターとの互換性の問題が発生することがあります。
  • キャッシュの問題
    • シミュレーターやデバイスのキャッシュが原因で正しく起動できないことがあります。

このエラーが起こる大まかな原因は3つあるっぽい。

今回の原因は...?

多分、下記2つかなぁ

  • シミュレーターのデータが壊れている
  • キャッシュの問題

今回でいうと、「Bucho Cleaner」っていうソフト使ってMac上の無駄なファイルを消した後にシミュレータがうまく動かなくなった(...はず)
その時にXcodeのゴミファイルもまとめて消したので、その時に本当はシミュレータに必要なファイルとかを消してしまったのかも。

解決策

いろいろ方法があるらしいけど、自分はこれで解決した。

# snapshotだけをインストール
$ brew install snapshot

# 既存のシミュレータを削除してから新規作成してる
$ fastlane snapshot reset_simulators

snapshotって何

https://docs.fastlane.tools/actions/snapshot/

fastlaneっていうツールの中の一部らしい
じゃあfastlaneってなんなんだよ!って思うところだが、簡単にいうとスマホアプリのデプロイメントマネジメントツールっぽい
snapshotが担うのは、スクリーンショットの自動取得らしい
スマホアプリをApp storeに公開する時とかって、デバイスごとにスクショ撮って掲載したりしないといけないが、そこらへんの作業を効率化してくれる
https://qiita.com/yuta-shoji/items/7870866f16817994f224

まとめ

これでもう安心だねっ

Discussion