私は複数のユーザーを必要とするゲームを計画していて、iPhoneシミュレーターの複数のインスタンスを起動する方法があるかどうか疑問に思っていました。メニューやGoogle検索結果には何も表示されませんでしたが、見落としがないようにしたかっただけです。
私が知る限り、シミュレータの複数のインスタンスを実行できないだけでなく、実際のデバイステストの時間になると、デバッガの複数のインスタンスも実行できなくなります。
つまり、マルチデバイスアプリを実行するには、それぞれがアプリを実行する単一のiPhone /タッチデバイス(またはシミュレーターインスタンス)に単一のMacを割り当てる必要があります。
VMWareかParallelsをどうにかしてこれに組み込むことができるかどうかを調べ始めましたが、OSをハッキングせずにできることはあまりありません。
http://bugreporter.Apple.com で機能リクエストを提出することをお勧めします。
可能ですが、複数のユーザーでのみ可能です。
これを読んでください: http://www.coderebel.com/2010/08/31/iphone_simulator
同時にデバッグする2つのプロジェクト(P1、P2)があるとすると、次のようにします。
セットアップの手順:
デバッグする手順:
残念ながらそれはP.I.T.Aです。ユーザーを時々変更する必要がありますが、これまでのところ、これ以上の解決策はありません。お役に立てれば。
複数のユーザーを使用せずにこれを簡単に行う方法があります。ただし、デバッガには接続しません。以下の説明はXCode 6 +に関するものであることに注意してください。この説明をスキップして、下の「wrapping-it-up」セクションまでスクロールダウンできます。
答えから ここ コマンドラインから任意のシミュレータを起動できることがわかります。
open -a "iOS Simulator" --args -CurrentDeviceUDID
コンソールでxcrun simctl list
コマンドを実行すると、deviceID(およびすべてのシミュレータ)を見つけることができます。このようなリストが生成されます。デバイスIDは中括弧で囲まれたコードです。
== Runtimes ==
iOS 8.3 (8.3 - 12F69) (com.Apple.CoreSimulator.SimRuntime.iOS-8-3)
== Devices ==
-- iOS 8.3 --
iPhone 4s (99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8) (Shutdown)
iPhone 5 (K262AF11-ADD2-4FDA-ACBA-8C80DD9D4AA1) (Shutdown)
iPhone 5s (337KDC51-0A4B-47DB-8966-83562FD92C93) (Shutdown)
iPhone 6 Plus (9GK714E2-F713-4F98-A96E-C72ACD6571A8) (Shutdown)
-- iOS 8.2 --
etc continued....
したがって、上記の例を使用してシミュレータを実行するには、コンソールで次のコマンドを実行します。
open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'
-n
フラグは、ファイルを開くために使用するアプリケーションを指定するため、代わりに-a
フラグを使用します。一方、-n
フラグは、アプリケーションの新しいインスタンスを開く場合でも既に実行中。 man open
コマンドを使用して、これらすべてを把握します。
また、シミュレータのパスが正しいことを確認してください。
もう1つ注意する必要があるのは、このようにシミュレータを実行すると、シミュレータの数が限られている可能性があります。また、制限があるため、すでに画面に表示されているものを中断せずに起動することもできます。私たちはこの答えからこれを解決できます here ここで、彼はcreate a new simulator and delete one.
の方法を示します
A)起動する前に、まずシミュレータを作成します。
使用法:simctl create "name" "device type id" "runtime id"
xcrun simctl create "mynewsimulator" "iPhone 6" "com.Apple.CoreSimulator.SimRuntime.iOS-8-3"
上記で実行したコマンドxcrun simctl list
コマンドからランタイムIDがわかります。上記のコマンドを実行すると、deviceIDがコンソール画面に表示されます。以下に示すシミュレーターを起動する最後の引数として必要になるので、それをメモしてください。このIDが99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8
であったとしましょう
B)それを起動する
open -n /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/ --args -CurrentDeviceUDID '99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8'
C)シミュレータでの作業が終了したら削除します
xcrun simctl delete 99Z06AC6-A2D6-46E7-B4F7-BA4F5F3F39C8
これらすべてを単一の.shファイルに配置して、簡単に実行できます。これらすべてをshファイルに入れる場合は、各コマンドの後にwait
またはsleep
コマンドを置くことに注意してください。
[EDIT 2017]XCode 9が複数のシミュレータをサポートするようになりました。それがどのように機能するかを確認するために待っています。
Mac OS Xサーバーライセンスを持っている場合のもう1つのオプション(おそらくやり過ぎですが)は、Mac OS X Serverのインスタンスを仮想化し、VMで2番目のシミュレーターを実行することです。
Xcode 9以降でサポートされます。
(出典:WWDC 2017)
次の手順に従ってアプリをテストします。
最初に、プロセス全体に対して1つのことを行う必要があります。[プロジェクト]-> [プロジェクト設定の編集]-> [オプション]にチェックマークを付け、独立したターゲットを並行してビルドします。
注:慎重に行ってください。そうしないと、シミュレータをリセットする必要があります。リセットシミュレータ->シミュレータを実行-> iPhoneシミュレータ->コンテンツと設定をリセット...
これで、シミュレーターに2つのアプリがあり、すべてのインスタンスでアプリをテストできます。
それがあなたを助けることを願っています:)
XCode 4では、両方をデバッグモードにしたまま、複数のインスタンスを実行できます。
私がしたことは、ターゲットの複製を作成し、元の複製と複製の両方を実行することでした。出力ウィンドウを使用している場合は、表示している出力を切り替えることができます。
うーん...あなたはここで何かを見逃しているとは思わない。私の知る限り、SDK内に複数のデバイスをエミュレートできるテクノロジーはありませんが、これは便利な機能です。私の唯一の選択肢は、2台目のiPhone OSデバイスを入手するか、iPhone OSデバイスを持っている友人にテストのために使用してもらうことだと思います。