複数のユーザーを必要とするゲームを計画していますが、iPhoneシミュレーターの複数のインスタンスを起動する方法があるかどうか疑問に思いました。メニューやGoogleの検索結果には何も表示されませんでしたが、何かが欠けていないことを確認したかっただけです。
10 に答える
それは可能ですが、複数のユーザーがいる場合に限ります。
これを読んでください:http://www.coderebel.com/2010/08/31/iphone_simulator
同時にデバッグする2つのプロジェクト(P1、P2)があると仮定して、次のようにします。
設定手順:
- Macで新しいユーザー(U2)を作成します
- P2、特にビルドフォルダーへのR/Wアクセスを許可します。
- 上記のサイトからランチャーアプリをダウンロードして、アプリケーションにコピーします。
デバッグする手順:
- 実行中の場合はXcodeとシミュレータを閉じます
- U1でiPhoneLauncher.appを起動します。
- U1でXcodeを起動し、P1をロードして、デバッグを開始します。
- U2でiPhoneLauncher.appを起動します。
- U2でXcodeを起動し、P2をロードして、デバッグを開始します。
残念ながら、それは時々ユーザーを変更しなければならないPITAですが、これまでのところ、これ以上の解決策は見つかりませんでした。お役に立てれば。
複数のユーザーを使用せずにこれを簡単に行う方法があります。ただし、デバッガーには接続されないことに注意してください。以下の説明はXCode 6+用であることに注意してください。この説明はスキップして、下のまとめセクションまでスクロールしてください。
ここの回答から、コマンド ラインから任意のシミュレーターを起動できることがわかります。
open -a "iOS シミュレーター" --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 つ注意すべき点として、このようにシミュレーターを実行すると、シミュレーターが制限される可能性があります。また、制限があるため、既に画面に表示されているものを中断せずに起動したい場合があります. この回答からこれを解決できますここで、彼は方法を示しています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"
上記で実行したコマンド コマンドからランタイム ID を見つけることができますxcrun simctl list
。上記のコマンドを実行すると、デバイス ID がコンソール画面に出力されます。以下に示すシミュレーターを起動するための最後の引数として必要になるので、メモしておいてください。この 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
簡単に実行できるように、これらすべてを 1 つの .sh ファイルに配置できます。これらすべてをshファイルに入れることにした場合は、各コマンドの後にwait
またはコマンドを入れることに注意してください。sleep
[2017 年編集] XCode 9 が複数のシミュレーターをサポートするようになりました。すべてがどのように機能するかを楽しみにしています。
私が知る限り、シミュレーターの複数のインスタンスを実行できないだけでなく、実際のデバイス テストの時間になると、デバッガーの複数のインスタンスを実行することもできません。
これは、マルチデバイス アプリを実行することを意味します。アプリを実行する 1 つの iPhone/タッチ デバイス (またはシミュレータ インスタンス) に 1 つの Mac を割り当てる必要があります。
VMWare や Parallels をどうにかしてこれに持ち込むことができるかどうかを調べ始めましたが、OS をハッキングせずにできることはあまりありません。
http://bugreporter.apple.comで機能リクエストを提出することをお勧めします。
Mac OS X サーバーのライセンスを持っている場合のもう 1 つのオプション (やり過ぎかもしれませんが) は、Mac OS X サーバーのインスタンスを仮想化し、VM で 2 つ目のシミュレーターを実行することです。
うーん...ここで何かが欠けているとは思わない。私の知る限り、SDKには、複数のデバイスをエミュレートできるテクノロジーはありませんが、それは便利な機能です。あなたの唯一の選択肢は、2台目のiPhone OSデバイスを入手するか、iPhoneOSデバイスを持っている友人にテストに使用してもらうことだと思います。
次の手順に従って、アプリをテストします。
最初にプロセス全体に対して1つのことを行う必要があります。[プロジェクト]->[プロジェクト設定の編集]->[オプション]にチェックマークを付けます-独立したターゲットを並行して構築します。
- シミュレーターでアプリを作成するデバッグコードたとえば、アプリ名は-インスタンス
- シミュレーターを閉じる
- Project-> New Target-> Instance2に移動し、Instance2.info.plistファイルに「Bundledisplay name:Instance2」を追加します。SetExecutable Name:Instance2 Select Instance2 Target-> Go to Project-> Set Active Target-> Instance2 Build with Instance2
注:すべてを慎重に行ってください。そうしないと、シミュレーターをリセットする必要があります。[シミュレーターのリセット]->[シミュレーターの実行]->[iPhoneシミュレーター]->[コンテンツと設定のリセット...]
これで、シミュレーターに2つのアプリがあり、すべてのインスタンスでアプリをテストできます。
それがあなたを助けることを願っています:)
XCode 4 では、両方をデバッグ モードにして、複数のインスタンスを実行できます。
私がしたことは、ターゲットの複製を作成し、オリジナルと複製の両方を実行することでした。出力ウィンドウを使用している場合は、見ている出力を切り替えることができます。
Xcode 9 以降でサポートされています。
(出典: WWDC 2017)