T

起動しないiPhone Simulatorをなんとかする

こちらは「Titanium mobile “early” Advent Calendar 2012 – あすとろなんとかさんを救え –」の三日目用のエントリです。小ネタ限定ということで、内容は薄いですがまあ一発披露します。とはいえ、ちょっと危険なことも含まれているので、どうか実行する際はよくよく考えてくださいね。実際、失敗してしまった例を見たことがありますが、同情することしかできませんでした。

——————————————–

専門学校で教えているときなど、よくiPhone Simulatorが起動しないという報告を受けることがあります。実際、プログラムはどこも間違っていないのに、シミュレータを起動したらアプリが開始される間もなくドンと落ちます。ちょうど初日のあすとろなんとかさんのエントリと同じように、特にエラーも吐きません。

エラーも吐かないのではっきりとした原因はわかりませんが、どうやらシミュレータのゴミが溜まっているとこのようなことが起きるようです。ゴミといっても別に不快な排泄物とかではなく、アプリのGUID毎のディレクトリが残ったままだと発生することがあることまではわかりました。なので、これを掃除すればなんとかなります。もし、インストールはしたのに全然先に進めずお困りの方は下のやり方を試してみてください。

では掃除しましょう。最近のOS XはユーザーのライブラリディレクトリがFinderからは見えないようになっているので、この操作はターミナルから実行する必要があります。GUIしかわかんなくてマウスがなけりゃ何にもできないヘタレコマンドラインの操作に慣れていない方にはちょっとおっかないかもしれませんが、その場合はこちらをみて心の準備をしてください。下の「$」ドル記号はターミナルが出力する文字なので、みなさんはその右側から入力します。

$ cd $HOME/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/
$ ls
0864BE05-B166-46C8-8BCC-32AEC2245170/   27706EFB-BC84-4EA6-912E-8D970ECEC458/   E9BAE0E2-96DE-4B82-8F88-3204B09E7E92/
20ED5860-D7A5-4D3F-9B7B-EE982212D76A/   4F04718F-723B-4CD7-9834-BAE19621D576/

cdはchange directoryでディレクトリを移動するコマンドです。右側は異動先です。$HOMEはいつでもどこでも誰とでもあなたのホームディレクトリに置き換わってくれる魔法の言葉です。右端まで入力したらreturnキーを押しましょう。何もいわれなかったら大丈夫です。lsはlistのことで、ファイルの一覧を表示します。lsの後すぐにreturnキーを押すと、例えば上のようになんかだらだらと文字が表示されることがあります。

実はこちらがiPhone Simulatorにインストールして起動したアプリたちのGUIDなんです。アプリがシミュレータの中にある場合はこれらも残るようなので、いったんばっさり削除しましょう。

$ pwd
/Users/あなたのログインユーザー名/Library/Application Support/iPhone Simulator/6.0/Applications
$ rm -rf $HOME/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/*
$ ls

pwdというのは現在あなたがみているディレクトリを返すコマンドです。出力結果が上と同じようになっていることを確認してください。しましたね?しましたよね?次のコマンドは、これはファイルをremoveするrmコマンドです。基本的に後戻りはできませんので、間違ってファイルを消してしまうとまあ元に戻すのはとっても大変だし普通は無理だと考えていただいて結構です。なので、これを実行する場合は相対パスではなくちゃんと絶対パスを使って慎重な上にも慎重になった方が身のためです。思い出の詰まった大事なファイルを誤って消してしまうのが嫌なら、悪いことはいわないのでpwdで出力された内容をコピペしてください。もっとも、「Application Support」や「iPhone Simulator」のようにスペースが入る場合、これはコマンドの引数の切れ目なのかディレクトリの中の空白文字なのかシステム側で自動的に判別できないため、ターミナルでディレクトリの中の空白文字には直前にバックスラッシュを入れて空白であることを明示する必要があることをお忘れなく。最後のlsコマンドで何も返ってこなければ、作業は完了です。Titanium Studioからプロジェクトをcleanして、改めてビルドしてみてください。

もちろん、毎回毎回こんなことをやるのは面倒だし作業は手順が多ければそれだけ間違いが発生する可能性も増すので、普通は

$ echo 'alias cleansim="rm -rf $HOME/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/*"' >> $HOME/.bashrc
$ source $HOME/.bashrc

のようにして、cleansimと入力するだけで削除が実行できるようにしておくのが正しいやり方です。もちろん、バージョン依存が嫌いで

#!/usr/bin/env ruby

dir = "#{ENV['HOME']}/Library/Application Support/iPhone Simulator"
version = Dir.entries(dir).sort.last unless ARGV[1]
dir = "#{dir}/#{version}/Applications"
Dir.entries(dir).each do |d|
  if !File.directory?(d)
    # .や..じゃない
    dir_to_remove = "#{dir}/#{d}".gsub(/ /, '\\\ ')
    system "rm -rf #{dir_to_remove}"
  end
end

を/usr/local/bin/clearsimとして保存している人もいます(これを書いてます)。

Posted by on 11月 3, 2012 in Apple, Titanium

Comments

  • […] 【3日目】起動しないiPhone Simulatorをなんとかする […]

  • コメントを残す