XcodeでiOS Simulatorを起動・操作した際に、Unable to lookup in current state: Shutdown と表示されることがあります。このエラーは、CoreSimulatorが対象Simulatorを”Shutdown(停止中)”と認識しているのに、Xcodeやsimctlが起動中の端末として情報取得やアプリ操作を行おうとしたときに発生します。
多くの場合はSimulatorの状態不整合、一時的なCoreSimulatorサービスの不調、壊れたSimulatorデータ、またはXcodeとSimulatorランタイムの組み合わせが原因です。
主な原因
- SimulatorがShutdown状態のまま、アプリのインストール・起動・情報取得が実行された
- XcodeとCoreSimulator間で端末状態が同期できていない
- Simulatorの起動途中や終了途中に別の操作が走った
- 特定のSimulator端末データが破損している
- 古い、または利用不能になったSimulatorランタイムが残っている
- Xcode更新後にCoreSimulator関連プロセスが不安定になっている
代表的な発生状況
たとえば、Simulatorを終了した直後にXcodeからRunを実行した場合や、simctlで停止中の端末に対して処理を行った場合に発生します。
Unable to lookup in current state: Shutdown
同時に com.apple.CoreSimulator や CoreSimulatorService に関するメッセージが表示される場合もあります。
確認手順
1. Simulatorの状態を確認する
ターミナルで次のコマンドを実行します。
xcrun simctl list devices
対象端末の末尾が (Shutdown) になっている場合、その端末は停止中です。
2. Xcodeが使用しているDeveloper Directoryを確認する
xcode-select -p
xcodebuild -version
複数のXcodeを入れている環境では、コマンドラインツールが意図しないXcodeを参照していないか確認します。
3. 利用可能なSimulatorランタイムを確認する
xcrun simctl list runtimes
unavailable と表示されるランタイムがある場合は、古いSimulator端末がそのランタイムを参照している可能性があります。
解決方法
方法1:対象Simulatorを明示的に起動する
まず対象端末のUDIDを確認し、次のように起動します。
xcrun simctl boot <SIMULATOR_UDID>
open -a Simulator
その後、もう一度XcodeからRunを実行します。
方法2:すべてのSimulatorを停止して起動し直す
状態が中途半端になっている場合は、一度すべて停止します。
xcrun simctl shutdown all
Simulatorアプリも終了してから再度Xcodeで実行します。
方法3:CoreSimulator関連プロセスを再起動する
Simulatorを終了した状態で、CoreSimulatorServiceを再起動します。
killall -9 com.apple.CoreSimulator.CoreSimulatorService
環境によってプロセス名が見つからない場合があります。その場合は無理に繰り返す必要はなく、Macの再起動でも同様の再初期化ができます。
方法4:問題のSimulatorをEraseする
特定の端末だけで繰り返す場合は、Xcodeの Window > Devices and Simulators から対象Simulatorを消去するか、次のコマンドを使用します。
xcrun simctl erase <SIMULATOR_UDID>
注意:Eraseを実行すると、そのSimulator内のアプリ、設定、保存データは削除されます。
方法5:問題のSimulatorを削除して作り直す
Eraseでも直らない場合は、Devices and Simulatorsから対象端末を削除し、新しいSimulatorを作成します。コマンドラインから削除する場合は次を使います。
xcrun simctl delete <SIMULATOR_UDID>
方法6:利用不能なSimulatorを整理する
古いXcodeや削除済みランタイムに紐づく端末を整理する場合は、次のコマンドが便利です。
xcrun simctl delete unavailable
このコマンドは利用不能と判定されたSimulatorを削除します。必要な古い検証環境がないことを確認してから実行してください。
方法7:XcodeとSimulatorランタイムを更新する
Xcodeを更新した直後や、新しいiOS Simulatorランタイムを使う場合は、XcodeのSettingsにあるPlatforms / Componentsから必要なランタイムが正しくインストールされているか確認します。古いXcodeで新しいランタイムを無理に使おうとせず、対応するXcodeを使用してください。
方法8:Macを再起動する
CoreSimulatorServiceや関連プロセスの状態が崩れている場合、Macの再起動で解消することがあります。複数のSimulatorやXcodeを長時間使った後にだけ発生する場合は特に有効です。
注意点
eraseやdeleteはSimulator内のデータを失う可能性があります。- 複数バージョンのXcodeを共存させている場合は、
xcode-selectの参照先を確認してください。 - 単発で発生しただけなら、まずSimulatorの再起動や
shutdown allから試すのが安全です。 - 特定のSimulatorだけで発生する場合は、その端末データの破損を疑います。
まとめ
Unable to lookup in current state: Shutdown は、XcodeやCoreSimulatorが停止中のSimulatorを起動中として扱おうとしたときに起きる状態不整合系のエラーです。
まず xcrun simctl list devices で状態を確認し、boot または shutdown all で状態を揃えます。それでも改善しない場合は、CoreSimulatorServiceの再起動、SimulatorのErase・再作成、利用不能ランタイムの整理、Xcode更新の順に確認すると効率的です。
