XcodeでiOS Simulatorを起動したり、アプリを実行・デバッグしたりした際に「Failed to open service」と表示されることがあります。このエラーは、XcodeやSimulatorがCoreSimulator内部のサービス、あるいはシミュレータ上のデバッグ関連サービスへ正常に接続できないときに発生しやすいものです。単純な一時不調から、壊れたSimulator状態、ランタイム不整合、Xcodeの選択先の誤りまで原因は複数あります。
主な原因
- SimulatorまたはCoreSimulatorサービスが一時的に不安定になっている
- 対象Simulatorが正常にBootしていない、または途中状態で停止している
- Simulatorデバイスの状態やデータが破損している
- インストール済みSimulator Runtimeに問題がある
- 複数のXcodeを導入しており、Command Line Toolsの参照先が意図しないXcodeになっている
- Xcode更新後に古いSimulator状態が残っている
- Mac側の空き容量不足やバックグラウンドサービスの異常がある
代表的な発生状況
Build自体は成功しているのにSimulatorへのアプリ転送やデバッグ開始の段階で処理が止まり、次のようなメッセージが表示されることがあります。
Failed to open service
エラーの後ろにCoreSimulator、launchd、debugserverなど別の情報が続くこともあります。後続メッセージも原因切り分けの重要な手掛かりです。
確認手順
1. Simulatorの状態を確認する
xcrun simctl list devices
対象端末がBootedになっているか、Unavailableになっていないかを確認します。
2. 利用可能なRuntimeを確認する
xcrun simctl list runtimes
使用予定のiOS Simulator Runtimeが一覧に存在し、Unavailableになっていないことを確認します。
3. 使用中のXcodeを確認する
xcode-select -p
xcodebuild -version
複数バージョンのXcodeを使っている場合は、意図したXcodeのDeveloperディレクトリを参照しているか確認します。
解決方法
方法1:Simulatorを終了して再起動する
Simulatorを完全に終了し、Xcodeも一度閉じてから再起動します。
方法2:すべてのSimulatorをShutdownする
xcrun simctl shutdown all
その後Simulatorを再度起動し、対象デバイスをBootします。
方法3:対象SimulatorをEraseする
Eraseすると、そのSimulator内のアプリ、設定、保存データは削除されます。
xcrun simctl erase all
方法4:壊れたSimulatorを削除して作り直す
特定の1台だけでエラーが続く場合は、「Devices and Simulators」でそのSimulatorを削除し、同じDevice TypeとOS Versionで新しく作成します。
方法5:Simulator Runtimeを入れ直す
Xcodeの「Settings」→「Components」から対象iOS Simulator Runtimeの状態を確認し、必要なら再インストールします。
方法6:Command Line Toolsの参照先を修正する
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcode-select -p
xcrun simctl list devices
方法7:Macを再起動する
CoreSimulator関連のバックグラウンドプロセスが不安定な場合、Macの再起動で状態がリセットされることがあります。
方法8:別のSimulator Runtimeで再現するか確認する
別Runtimeで正常なら、特定Runtime側の問題である可能性が高まります。
注意点
「Failed to open service」は単独では原因を一意に特定できない比較的広いエラーです。直前・直後に表示されるDomain、Code、Failure Reason、service名がある場合は必ず合わせて確認してください。
CoreSimulator関連ディレクトリの手動削除より、まずshutdown、erase、Simulator再作成、Runtime再インストールといった標準の方法を優先するのが安全です。
まとめ
最初にxcrun simctl list devicesとxcrun simctl list runtimesで状態を確認し、Simulatorの再起動、xcrun simctl shutdown all、Erase・再作成を順番に試します。それでも改善しない場合は、Runtime再インストール、Command Line Toolsの参照先、Mac再起動まで確認します。
