OSX El Capitan(10.11.6)
Xcode 8.2.1
Swift version 3.0.2
を使用しております。
最近シミュレーターで開発をしてて、めんどうになってきたので覚書。
開発時、シミュレーターを使って開発することが多いかと思います。
データのダウンロードがうまくいったか?、作ったデータファイルがきちんとできているのか?
など、シミュレーターのフォルダの中を見たいことがあるかと思います。
慣れた人だと多分
ファインダー:移動+optionでライブラリに移動してそれらしいフォルダを探せるかと思われます。
~/Library/Developer/CoreSimulator/Devices/
がシミュレーターのフォルダの場所です。
実際フォルダに移動してみると、アプリを開発している本数によるかもしれませんが、英数字のフォルダ名が並んでいてどれを使っているのかわからない。
で、どこだ?とググっったりするのですが、よく考えたら
プログラムで単純にログに表示させれば使用しているシミュレーターのフォルダの場所はわかりますね。
下記、単純にログに表示させるだけ
let documentDirPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
print(documentDirPath)
作成したプロジェクトのDocumentsまでが表示されるのでそこまで辿っていけば使っているフォルダまでいけますね。
これを毎回確認して移動というのは面倒なのでここでAutomator登場。
アプリケーション > Automator.app
cd ~/Library/Developer/CoreSimulator/Devices/
cd `ls -t | head -n 1`/data/Containers/Data/Application
cd `ls -t | head -n 1`/Documents
open .
Automatorで新規を選んで「シェルスクリプト実行」(ダブルクリック)を選び上記を入力orコピペ
※バッククォートってあまり使うことないのであれ?どこ?ってなるかもしれません。
日本語キーボードですが
Shift+@キーで「`」が入力できます。@はどこ?ってあまりならないかとおもいますが「P」の右です。
コピペすれば探すこともないです。
入力後、適当な場所に保存。
1行目
cd ~/Library/Developer/CoreSimulator/Devices/
ここはスパッと取得できないので決め打ちです。シミュレータがある場所まで移動します。
今後場所が変わったら修正が必要になります。そもそもこのスクリプトが使えるかどうかもわかりません。
2行目
cd `ls -t | head -n 1`/data/Containers/Data/Application
`ls -t | head -n 1`はタイムスタンプ順にファイル取得し、その最新1つだけのファイル名を表示するということになります。
ls -t がタイムスタンプ順に名前を取得、
| がパイプラインで結果を次に渡すということになり(今回は結果を連結させて使用)
head -n 1 は先頭部分を表示するのですが -n 1はその行数表示ということで1行表示となります。
**``**で括ってあるのは結果の出力を使用したいのでこのような書き方になってます。
cd lsと書くとそんなファルダはないとエラーになります(lsというフォルダがなければですが)。
なので実行すると
”一番タイムスタンプの新しいフォルダ/data/Containers/Data/Application”
ということになり、そのフォルダに移動。
シミュレーターのアプリフォルダになります。
3行目
cd `ls -t | head -n 1`/Documents
更に使ったアプリ(実行したアプリ)が一番新しいはずなのでそれのフォルダを取得して移動。
最後、4行目
open .
開く。ということになります。
Xcodeからアプリ実行をしシミュレーター起動。
Automatorで作ったものを実行するとアプリで使っているフォルダーがファインダーが開く。
これで少しは楽になるかと。