Xcode 6-コマンドラインからシミュレーターを起動する


102

コマンドラインからiPhoneシミュレータを起動したい。

今まで私は以下のコマンドを使用しています

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator -SimulateDevice

-SimulateDeviceは、特定のデバイスタイプを起動するために使用されます

Xcode 6では、パスとアプリが次のように変更されました

/Applications/Xcode.app/Contents/Developer/Applications/iOS Simulator.app/Contents/MacOS/iOS Simulator

残念ながら、-SimulateDeviceオプションは現在機能していません。シミュレータを起動できますが、起動するシミュレータを指定するオプションがありません

誰もがXcode 6でこれの代替手段を見つけましたか?

回答:


210

私が欲しかったものを達成する方法を見つけました。

AppleはXcode 6で興味深いツールを導入しました!

simctl

simcltを使用すると、実行中のシミュレータを制御できます。

実行xcrun simctlして、使用可能なサブコマンドのリストを取得します。たくさんの新しいオプションを試してみてください。

次に、私がやりたいことを行うために、シミュレータを起動するコマンドを示します。

xcrun instruments -w "iPhone 5 (8.0 Simulator)"

-wは、デバイスタイプを提供し、使用可能なデバイスのリストを取得します。

これを実行するだけです:

xcrun instruments -s

シミュレーターを起動した後、次を使用して制御できます simctl

アプリをインストールするには:

xcrun simctl install booted <app path>

アプリを起動するには:

xcrun simctl launch booted <app identifier>

お役に立てれば。


8
<アプリ識別子>はアプリバンドルIDです
Hugo

いくつかの既知の問題を除いて、私が見たことはありませんが、言及されているように実行xcrun simctlするとコマンドが一覧表示されます。私の意見では、それらはかなり自明です。
daniellmb 14

1
xcrun simctl boot <device id>代わりに使用して動作させることができませんでしたxcrun instruments -w...
CambridgeMike

どういうわけか私は取得し続けます:simctl [23846:459252] ***キャッチされない例外 'NSInvalidArgumentException'のためにアプリを終了します、理由: '***-[__ NSPlaceholderDictionary initWithObjects:forKeys:count:]:オブジェクトからnilオブジェクトを挿入しようとしました[0]起動したsimctl installで
Pooja Shah

2
あなたは、実際のデバイスUDIDを指定するか、名前ではなく、必要があるbootedとしてbootedだけで任意のシミュレータ上のブートデバイスのいずれかを選択します。
devios1 2015年

63

Xcode 6では、iOS Simulator.appが起動時に特定のデバイスを起動するようにしたい場合、コマンドラインからこれを実行できます。

open -a "iOS Simulator" --args -CurrentDeviceUDID <DEVICE UDID>

ここで、起動するデバイスのUDIDを把握できます。

xcrun simctl list

Xcode 7では、アプリケーションの名前がSimulator.appに変更されたので、それに応じて上記を更新する必要があります。

open -a Simulator --args -CurrentDeviceUDID <DEVICE UDID>


6.2ベータ版では、このコマンドは機能しなくなりました。たとえば、iPhone 5sシミュレーター(IDを指定)を起動する代わりに、iPad Airシミュレーターを入手します。
Michael Teper

うーん、3つの異なるマシンで確実に動作しないようにしています。トラブルシューティングに役立つその他の情報はありますか?
Michael Teper

私は何が起こっているのかを理解しました。Xcode 6.2ベータ版をインストールしましたが、デフォルトのXcodeにしませんでした。そのため、/usr/bin/xcrun simctl list通常のXcodeで使用できるシミュレータをリストします。ただし、open -a "iOS Simulator"ベータシミュレータからのデバイスIDを想定している6.2ベータシミュレータを起動します。起動するシミュレータを指定するにはどうすればよいですか(通常とベータ)。
Michael Teper、2015年

1
/path/to/Xcode.app/Contents/Developer/Applications/iOS \ Simulator.app
Jeremy Huddleston Sequoia

2
@chrisco文書はありません。を介してデフォルトを確認defaults read com.apple.iphonesimulatorし、コマンドラインでデフォルトを上書きできます。Simulator.appは、UDIDのみを使用してデバイスを一意に識別します。名前は使用できません。
ジェレミーハドルストンセコイア

17

xcode 7の場合:

open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID <DeviceUDID>

シミュレータのudidを入手する xcrun simctl list


12

特定のデバイスを起動してシミュレーターを起動するには、list devicesサブコマンドを使用して、使用可能なすべてのデバイスのリストを取得します

$ xcrun simctl list devices
== Devices ==
-- iOS 11.2 --
iPhone 5s (E3B6EA43-C805-49C2-9502-A44A465D8DF2) (Shutdown)
iPhone 6 (801E9E11-CA86-473A-9879-4B0742B827FB) (Shutdown)
iPhone 6 Plus (24013349-1A6F-489C-9A68-ABB00EBB4BBF) (Shutdown)
iPhone 6s (1A594D75-146C-4BEA-A250-1FADE7886114) (Shutdown)
iPhone 6s Plus (C2730FA0-11CB-49C9-A087-CB3C1BF1CC3D) (Shutdown)
iPhone 7 (F58B3749-3276-49E5-81C8-EBA1AEA7B242) (Shutdown)
iPhone 7 Plus (98167D8C-8F27-404C-AB02-588D9AAFD071) (Shutdown)
iPhone 8 (96322368-F763-4E0A-8576-ADE9F678211F) (Shutdown)
iPhone 8 Plus (E916D1EE-B67B-4C01-B3F5-C5C80CC4CDF8) (Shutdown)
iPhone SE (ABEFEDDF-7A7C-4B94-9E91-E065170FA47F) (Shutdown)
iPhone X (84DAB7AB-3CA2-4F5B-8C4E-A5B54CA15C31) (Shutdown)
iPad Air (DCD8CF4B-2C9F-4BA1-952A-ACB9CAD0A84D) (Shutdown)
iPad Air 2 (A47C9A05-233F-450F-9A39-318258E9ADEA) (Shutdown)
iPad (5th generation) (819C058E-64AC-4E73-8F41-2C0F919F8B56) (Booted)

このコマンドは、UDIDとステータスとともに使用可能なデバイスのリストを出力します

次に、-CurrentDeviceUDIDオプションでデバイスを指定してシミュレータアプリを起動します。

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID <DEVICE-UDID>

注:をリストの有効なUDIDに置き換えます。

たとえば、iPadでシミュレーターを起動する場合(%世代ブート):

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator -CurrentDeviceUDID 84DAB7AB-3CA2-4F5B-8C4E-A5B54CA15C31

アップデート23/05/2018

Xcode 9.3では、CurrentDevice UDIDオプションが機能しません。回避策として、シミュレーターでデバイスを開く前にsimctlを使用してデバイスを起動する必要があります。

xcrun simctl boot 2BF01FC0-7E29-4AF1-ADD1-886DF129A9A9
open -a Simulator 

simctlを使用して、シミュレータを作成、消去、削除、起動、シャットダウン、およびアップグレードできます。

$ xcrun simctl create
Usage: simctl create <name> <device type id> <runtime id>

$ xcrun simctl delete
Usage: simctl delete <device> [... <device n>] | unavailable

有効なデバイスタイプランタイムのリストを取得するには

xcrun simctl list devicetypes

xcrun simctl list runtimes

10

シミュレータを起動するには:

xcrun simctl boot "iPhone X"

ヘッドレスモードとして起動します。シミュレータを表示するには:

open -a Simulator

xcrun simctl bootはより単純ですxcrun instruments -winstruments完全なデバイス名が必要です。


8

-wフラグでハードウェアとiOSバージョンを指定できます。フォーマットは

instruments -w "simulator-version"

たとえば:

instruments -w "iPhone Retina (3.5-inch) - Simulator - iOS 7.1"

instruments -w help コマンドを使用して、利用可能なハードウェアとiOSの組み合わせを取得します。


2
instruments -s devicesデバイスのリストを取得するために使用します。ただし、デバイス名を取得したらinstruments -w <device>、計測器がトレースをドライブのルートに書き込もうとすると、単純に呼び出すとエラーが発生する可能性があります。正常に書き込むトレースのパスを指定することができます。
Michael Teper

@MichaelTeperのコメントを詳しく説明するには、を使用-Dして.traceドキュメントの出力ディレクトリを指定します。
devios1 2015年

3

Xcode 9.4.1で検証済み

REALLY NICE FORMATのデバイスリスト: ~/Library/Developer/CoreSimulator/Devices/device_set.plist

Root
    DefaultDevices
        com.apple.CoreSimulator.SimRuntime.iOS-8-4
             com.apple.CoreSimulator.SimDeviceType.iPad-Retina : AB335FAF-E3E3-4AE9-A0AF-D1C6AEB5FBD4

次に、シミュレータアプリを実行(オープン)して、アプリの新しいインスタンスが起動されることを確認します。

アプリはこちらです: /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

また、使用する形式は次のとおりです。

open -n -a <SimulatorPath> --args -CurrentDeviceUDID <SimDeviceTypeUDID>

したがって、上記のシミュレータを起動したい場合は、これを実行します。

open -n -a /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID AB335FAF-E3E3-4AE9-A0AF-D1C6AEB5FBD4

いまいましい!テストしたところ、Mac OS 10.11.6で動作しました。次のトリックは、インストールしたアプリを開くようにシミュレーターに指示することです。私はまだそこにいません。お役に立てれば。彼の詳細な説明についてhttps://stackoverflow.com/users/726106/jeremy-huddleston-sequoiaに感謝します


「アプリの新しいインスタンス」などはありません。Macintoshでは、アプリケーションにはログインしているユーザーごとに1つのインスタンスしかありません。単一プロセスとしてホストされるこの単一インスタンスアプリは、それ自体で多くの「ドキュメント」(この場合はシミュレーター)をホストできます。
Motti Shneor

1

このコマンドを実行します。アプリが再起動され、変更が行われます。再構築する必要はありません。

ios-sim "launch" "/Library/WebServer/Documents/testapp/build/iphone/build/Debug-iphonesimulator/test.app" "--devicetypeid" "iPad-2" "--exit";

devicetypeidリストの場合:

ios-sim showdevicetypes

これにはiOS-sim(巨大なノードを含む)をインストールする必要があり、ネイティブのコマンドライン「scrub simctl」と比較すると、悲しいことに制限されています。
Motti Shneor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.