iMacを製作用にリプレイスしてもらったはいいけどiOS SimulatorがXCodeをいれた直後から起動せずに困りました。
シュミレータの設定をリセットするとか、
シュミレータファイルを削除するとか、
関連ファイルを削除してrestartするとか、
いろいろ試しましたがどれもだめでした。
よくみるのはreinstallでうまくいった、という話なのですが、
今回の場合はOS管理下のファイルに問題があったようで
効果がありませんでした。
最初は誰か同じ目にあっているだろうとググったのですが、
どれも自分のケースには該当しない、もしくは回答がされなくて、
きっと次のアップデートで直るはずと思っていたら、
7になっても状況変わらずで覚悟をきめて調査しました。
なんとか解決したので共有します。
環境
MacOS 10.10.5
Xcode Version 7.0 (7A220)
Simulator Version 9.0 (SimulatorApp-620 CoreSimulator-179)
現象
シュミレータを起動すると以下のようなメッセージが表示されて起動しない。
Unable to boot the Simulator.
原因
/private/tmp
の権限に問題がありました。
社内システムの人が最初にセキュリティ関連のアプリケーションをいれていたのでその過程でおかしくなったようです。
原因解析にいたった経緯
メッセージはとても汎用的なもので原因は無数にあるので、
ログから調査。
以下のようなコマンドでみれます。
今回学習したのですがエラーメッセージはけこう手抜きで、
調べるにはまずこれを確認すべきです。
tail -f ~/Library/Logs/CoreSimulator/CoreSimulator.log
最初にみつけたのは下記のようなもの。
<Error>: Error Domain=com.apple.CoreSimulator.SimError Code=159 "Unable to lookup in current state: Shutdown" UserInfo=0x7fcf83668e40 {NSLocalizedDescription=Unable to lookup in current state: Shutdown}
Code=159が何なのか調べたのですがみつけられず。
このエラーコード表みたいなのがあればとてもありがたいのですが、
みつけれませんでした。
さらにさかのぼると下記のようなエラー
<Error>: Could not register service com.apple.PowerManagement.control: launch_sim_register_endpoint: 0xfffffecc
<Error>: Could not register service com.apple.SystemConfiguration.configd_host: launch_sim_register_endpoint: 0xfffffecc
<Error>: Could not register service com.apple.audio.coreaudiod: launch_sim_register_endpoint: 0xfffffecc
<Error>: Could not register service com.apple.SystemConfiguration.PPPController: launch_sim_register_endpoint: 0xfffffecc
こちらを手掛かりに調べるとどうやらtmp領域が問題らしいことがわかったので権限修正を行いました。
sudo chmod -R 777 /tmp
ひとまず上記のよう対応で。
しかしうまくいかず。
ここで諦めてしばらく放置していたのですが、
やはり我慢ならず他に関連しそうなディレクトリを調べたところ
sudo chmod -R 777 /private/tmp
としたら起動するようになりました。
どうやらシュミレータは起動前にprivate以下のtmpディレクトリを参照するようです。
もし上記のディレクトリが存在しない場合は作成してください。
存在しなくても同じエラーがおきます。
私の場合は、ディスクユーティリティのアクセス権限の修復ををやっても効果がありませんでした。
(いろいろ触っていたせいもあるかもしれませんが。)
ちなみに同様の原因でvirtualBoxも起動しませんでした。