Xcode/iPhone SIM을 사용하여 여러 아이폰을 시뮬레이션하는 방법이 있습니까?
문제
여러 사용자가 필요한 게임을 계획하고 있으며 iPhone 시뮬레이터의 여러 인스턴스를 발사 할 수있는 방법이 있는지 궁금합니다. 메뉴 나 Google 검색 결과에서는 아무것도 보지 못했지만 아무것도 놓치지 않았는지 확인하고 싶었습니다.
해결책
내가 알 수있는 한, 시뮬레이터 실행의 여러 인스턴스를 가질 수있을뿐만 아니라 실제 장치 테스트를위한 시간이 오면 디버거의 여러 인스턴스를 실행할 수 없습니다.
이는 다중 장치 앱을 수행하는 것을 의미합니다. 앱을 실행하는 각각의 iPhone/Touch 장치 (또는 시뮬레이터 인스턴스)에 단일 Mac이 할당되어 있어야합니다.
VMware 또는 Parallels가 어떻게 든 이것에 가져올 수 있는지 여부를 조사하기 시작했지만 OS를 해킹하지 않고 할 수있는 일은 많지 않습니다.
기능 요청을 제출하는 것이 좋습니다 http://bugreporter.apple.com.
다른 팁
가능하지만 여러 사용자만으로 가능합니다.
이것을 읽으십시오 : http://www.coderebel.com/2010/08/31/iphone_simulator
동시에 디버그하려는 두 개의 프로젝트 (P1, P2)가 있다고 가정하면 다음과 같이 수행하십시오.
설정 단계 :
- Mac에서 새 사용자 (U2) 생성
- P2, 특히 빌드 폴더에 R/W에 액세스하십시오.
- 위 사이트에서 런처 앱을 다운로드하여 응용 프로그램에 복사하십시오.
디버깅 단계 :
- 실행중인 경우 Xcode 및 시뮬레이터를 닫습니다
- U1을 사용하여 iPhone Launcher.App을 시작하십시오.
- U1로 Xcode를 시작하고 P1을로드하고 디버깅을 시작하십시오.
- U2와 함께 iPhone 런처를 시작하십시오.
- U2로 Xcode를 시작하고 P2를로드하고 디버깅을 시작하십시오.
불행히도 지금은 사용자를 변경 해야하는 피타이지만 지금까지는 더 나은 솔루션을 찾지 못했습니다. 도움이 되었기를 바랍니다.
여러 사용자를 사용하지 않고 쉽게 수행 할 수있는 방법이 있습니다. 그래도 디버거에 연결되지 않음을 명심하십시오. 아래의 설명은 Xcode 6+. 이 설명을 건너 뛰고 아래의 랩핑 구간으로 스크롤하면 아래로 스크롤 할 수 있습니다.
대답에서 여기 명령 줄에서 모든 시뮬레이터를 시작할 수 있음을 알 수 있습니다.
Open -a "iOS 시뮬레이터" -Args -CurrentDeviceudid
실행하여 DeviceID (및 모든 시뮬레이터)를 찾을 수 있습니다. xcrun simctl list
콘솔에서 명령. 이와 같은 목록을 생성합니다. 장치 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
이 모든 것을 아는 명령.
또한 시뮬레이터에 대한 올바른 경로가 있는지 확인하십시오.
이와 같이 시뮬레이터를 실행하면 시뮬레이터가 제한되어있을 가능성이 있습니다. 그리고 제한된 이래로 이미 화면에있는 방해하지 않고 시작할 수 있습니다. 우리는이 답변에서 이것을 해결할 수 있습니다 여기 그가 당신에게 방법을 보여줍니다 create a new simulator and delete one.
그래서 모든 것을 감싸십시오. 여기에 당신이 그것을 시작하기 위해하는 일이 있습니다.
a) 먼저 시뮬레이터를 시작하기 전에 시뮬레이터를 만듭니다.
사용법 : simctl "이름" "장치 유형 ID" "런타임 ID"생성
xcrun simctl create "mynewsimulator" "iPhone 6" "com.apple.CoreSimulator.SimRuntime.iOS-8-3"
명령에서 런타임 ID를 찾을 수 있습니다 xcrun simctl list
명령 나는 위에서 달렸다. 위의 명령을 실행하면 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 파일에 배치 할 수 있습니다. 참고하십시오 wait
또는 sleep
이 모든 것을 sh 파일에 넣기로 결정한 경우 각 명령 후 명령.
편집 2017Xcode 9는 이제 여러 시뮬레이터를 지원할 것입니다. 그것이 어떻게 작동하는지 기다리고 있습니다.
Mac OS X 서버 라이센스가있는 경우 또 다른 옵션 (아마도 과잉)은 Mac OS X 서버의 인스턴스를 가상화하고 VM에서 두 번째 시뮬레이터를 실행하는 것입니다.
흠 ... 나는 당신이 여기서 아무것도 놓치고 있다고 생각하지 않습니다. 내가 아는 한 SDK 내에 여러 장치를 모방 할 수있는 기술이 없지만 유용한 기능이 될 것입니다. 유일한 옵션은 두 번째 iPhone OS 장치를 얻거나 iPhone OS 장치가있는 친구에게 테스트에 사용할 수있는 친구를 얻는 것입니다.
Xcode 4에서는 디버그 모드에있는 동안 여러 인스턴스를 실행할 수 있습니다.
내가 한 일은 내 목표의 복제본을 만들고 원본과 복제본을 모두 실행하는 것이 었습니다. 출력 창을 사용하는 경우보고있는 출력을 전환 할 수 있습니다.
다음 단계를 따라 앱을 테스트하십시오.
먼저 전체 프로세스를 위해 한 가지 작업을 수행해야합니다. 프로젝트로 이동 -> 프로젝트 설정 편집 -> 옵션의 진드기 - 독립 대상을 병렬로 빌드하십시오.
- 시뮬레이터에서 앱을 생성하는 디버그 코드는 예를 들어 앱 이름입니다.
- 시뮬레이터를 닫습니다
- Go to Project->New Target -> Instance2 Add "Bundle display name : Instance2" in Instance2.info.plist file Set Executable Name : Instance2 Select Instance2 Target -> Go to Project -> Set Active Target -> Instance2 Build with Instance2
참고 : 모든 것을 신중하게 수행하십시오. 그렇지 않으면 시뮬레이터를 재설정하려면 시뮬레이터 재설정 -> 실행 시뮬레이터 -> iPhone 시뮬레이터 -> 컨텐츠 및 설정을 재설정해야합니다 ...
이제 시뮬레이터에 두 개의 앱이 있으며 모든 인스턴스에서 앱을 테스트 할 수 있습니다.
그것이 당신을 도울 수 있기를 바랍니다 :)
Xcode 9 on에서 지원됩니다.
(출처 : WWDC 2017)
예, 이제 가능하고 매우 쉽습니다. 당신이 필요로하는 유일한 것은입니다 xctool
, Facebook과 Ruby Gem의 빌드 도구. Ruby Gem은 테스트 중에 필요한 시뮬레이터를 생성/파괴하는 데 도움이됩니다.
이 링크에서 전체 문서를 읽을 수 있습니다.
https://github.com/plu/parallel_ios_tests
이 접근법을 사용하고 있으며 동시에 4 개의 iOS 시뮬레이터에서 테스트를 실행합니다.