それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

iOS シミュレータだけを起動する(Xcode7)simctl

条件 説明 -n 文字列が存在すれば真 -z 文字列が存在しなければ真 -d ディレクトリが存在すれば真 -f ファイルが存在すれば真 -s ファイルが存在し、かつファイルサイズが0でなければ真 -e ディレクトリかファイルが存在すれば真 -r ファイルが読み込み可能であれば真 -w ファイルが書き込み可能であれば真 -x ファイルが実行可能であれば真

http://www.boaro.jp/linux/bash/bash_script.html

iOS シミュレータが直接起動できないっぽい

むかしは直接起動できたけど、管理方法がアレコレ変わって直接起動が出来ない。

iOS のプロファイル(OSイメージ)一覧を出力する

iOS のプロファイル管理は 次の場所にある。

~/Library/Developer/CoreSimulator/Devices/

ちなみに、私のOSXでは次のようになっていた。

takuya@~/Desktop$ ll ~/Library/Developer/CoreSimulator/Devices/
total 8
drwxr-xr-x 4 takuya staff  136  5 21 22:57 16D197CE-8B41-45C6-A9BD-EB7F12D6FD95
drwxr-xr-x 4 takuya staff  136  5 21 22:57 18F87714-EB72-47E0-AEAC-81DCE7C6BD57
drwxr-xr-x 4 takuya staff  136  5 21 22:57 24195A52-91D1-469D-98E8-B9FBE4F957EB
drwxr-xr-x 4 takuya staff  136  5 26 22:45 286C2C87-9A6E-4FBB-AF33-FC2E61051A6E
drwxr-xr-x 4 takuya staff  136  5 21 22:57 4AD7F520-0550-4E98-8961-4E74EC1A9577
drwxr-xr-x 4 takuya staff  136  5 21 22:57 4D18598F-FE49-4EF0-878D-F464B64AD728
drwxr-xr-x 4 takuya staff  136  5 21 22:57 549A15D3-3496-44C9-9409-C1D934116F1A
drwxr-xr-x 4 takuya staff  136  5 21 22:57 5984338B-FB8F-43E9-8E48-559BC9C9F57D
drwxr-xr-x 4 takuya staff  136  5 21 22:57 6F4C1121-997C-40D4-A406-7D32C6BE8829
drwxr-xr-x 4 takuya staff  136  5 21 22:57 822C303E-DD38-4B6D-9C4A-0C3558896684
drwxr-xr-x 4 takuya staff  136  5 21 22:57 E5025B7C-0A30-40CB-99F9-131017209AA6
-rw-r--r-- 1 takuya staff 5819  5 25 13:15 device_set.plist

でもこんなが見られても、嬉しい人はあまりいないと思う。

イメージ一覧を出力する simctl

先ほどのディレクトリの中身は次のコマンドで行う。*1

xcrun simctl list

list をすることで一覧を見ることが出来ます。

takuya@~/Desktop$ xcrun simctl list
== Device Types ==
iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5)
iPhone 5s (com.apple.CoreSimulator.SimDeviceType.iPhone-5s)
iPhone 6 (com.apple.CoreSimulator.SimDeviceType.iPhone-6)
iPhone 6 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus)
iPhone 6s (com.apple.CoreSimulator.SimDeviceType.iPhone-6s)
iPhone 6s Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus)
iPad 2 (com.apple.CoreSimulator.SimDeviceType.iPad-2)
iPad Retina (com.apple.CoreSimulator.SimDeviceType.iPad-Retina)
iPad Air (com.apple.CoreSimulator.SimDeviceType.iPad-Air)
iPad Air 2 (com.apple.CoreSimulator.SimDeviceType.iPad-Air-2)
iPad Pro (com.apple.CoreSimulator.SimDeviceType.iPad-Pro)
Apple TV 1080p (com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p)
Apple Watch - 38mm (com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm)
Apple Watch - 42mm (com.apple.CoreSimulator.SimDeviceType.Apple-Watch-42mm)
== Runtimes ==
iOS 9.0 (9.0 - 13A344) (com.apple.CoreSimulator.SimRuntime.iOS-9-0)
iOS 9.3 (9.3 - 13E230) (com.apple.CoreSimulator.SimRuntime.iOS-9-3)
tvOS 9.2 (9.2 - 13Y227) (com.apple.CoreSimulator.SimRuntime.tvOS-9-2)
watchOS 2.2 (2.2 - 13V143) (com.apple.CoreSimulator.SimRuntime.watchOS-2-2)
== Devices ==
-- iOS 9.0 --
    iPhone 4s (4AD7F520-0550-4E98-8961-4E74EC1A9577) (Shutdown)
    iPhone 5 (549A15D3-3496-44C9-9409-C1D934116F1A) (Shutdown)
    iPhone 5s (286C2C87-9A6E-4FBB-AF33-FC2E61051A6E) (Booted)
    iPhone 6 (4D18598F-FE49-4EF0-878D-F464B64AD728) (Shutdown)
    iPhone 6 Plus (E5025B7C-0A30-40CB-99F9-131017209AA6) (Shutdown)
    iPhone 6s (5984338B-FB8F-43E9-8E48-559BC9C9F57D) (Shutdown)
    iPhone 6s Plus (6F4C1121-997C-40D4-A406-7D32C6BE8829) (Shutdown)
    iPad 2 (24195A52-91D1-469D-98E8-B9FBE4F957EB) (Shutdown)
    iPad Retina (16D197CE-8B41-45C6-A9BD-EB7F12D6FD95) (Shutdown)
    iPad Air (822C303E-DD38-4B6D-9C4A-0C3558896684) (Shutdown)
    iPad Air 2 (18F87714-EB72-47E0-AEAC-81DCE7C6BD57) (Shutdown)
-- iOS 9.3 --
-- tvOS 9.2 --
-- watchOS 2.2 --
== Device Pairs ==

先ほど~/Library で確認したデバイスがチャント確認できます。こちらは、iOS と 機種名で強い

xcrun が見つからない時は。

xcrun は xcode 内蔵のコマンドを実行します。simctl も xcrun も次の場所にありました。

/Applications/Xcode.app/Contents/Developer/usr/bin

シミュレータを起動する(バックグラウンド)

シミュレータを起動するには次のようにします。

xcrun simctl shutdown 286C2C87-9A6E-4FBB-AF33-FC2E61051A6E

すると xcrun simctl の結果が次のように変わります。

iPhone 5s (286C2C87-9A6E-4FBB-AF33-FC2E61051A6E) (Shutdown)
iPhone 5s (286C2C87-9A6E-4FBB-AF33-FC2E61051A6E) (Booted)

でも、GUIは起動しません。

Simulator のGUIを起動する。

Simulator app を起動するには、次のように変わります。

open -a "Simulator" --args 286C2C87-9A6E-4FBB-AF33-FC2E61051A6E

これで無事にシミュレータが起動します。

やったね。

f:id:takuya_1st:20160526230416j:plain

simctl は他にも次のように使える

Usage: simctl [--noxpc] [--set <set path>] <subcommand> ... | help [subcommand]
Command line utility to control the Simulator

For subcommands that require a <device> argument, you may specify a device UDID
or the special "booted" string which will cause simctl to pick a booted device.
If multiple devices are booted when the "booted" device is selected, simctl
will choose one of them.

Subcommands:
    create              Create a new device.
    delete              Delete a device or all unavailable devices.
    pair                Create a new watch and phone pair.
    unpair              Unpair a watch and phone pair.
    pair_activate       Set a given pair as active.
    erase               Erase a device's contents and settings.
    boot                Boot a device.
    shutdown            Shutdown a device.
    rename              Rename a device.
    getenv              Print an environment variable from a running device.
    openurl             Open a URL in a device.
    addphoto            Add photos to the photo library of a device.
    addvideo            Add videos to the photo library of a device.
    install             Install an app on a device.
    uninstall           Uninstall an app from a device.
    get_app_container   Print the path of the intsalled app's container
    launch              Launch an application by identifier on a device.
    spawn               Spawn a process on a device.
    list                List available devices, device types, runtimes, or device pairs.
    icloud_sync         Trigger iCloud sync on a device.
    help                Prints the usage for a given subcommand.

個人的には openurl とかめっちゃ楽じゃん。と思った。

iOS 楽しい。

*1: 調査中にパスが覚えられないとか行ってるqiitaの記事見つけてそっ閉じした。