저는 개발 단계에서 주로 iOS에 초점을 맞춘 Cordova를 사용하여 크로스 플랫폼 모바일 앱을 개발하고 있습니다.
내 개발 프로세스의 경우 명령 줄에서 직접 Cordova 앱을 시작하고 지정된 에뮬레이터로로드 할 수 있다면 이상적입니다. 프로젝트 루트 디렉터리에서 다음을 실행하여이를 수행 할 수 있습니다.
$cordova run --debug --emulator iOS
이것은 잘 작동하며 iOS 7.0.3을 사용하는 시뮬레이션 된 iPhone 4 Retina에서 내 앱을 실행하는 iOS 시뮬레이터가됩니다.
이 시뮬레이션 된 장치 외에도 iPad (예 :)에서 테스트하고 싶습니다. 이 에뮬레이션 이미지가 설치되어 있으며 Xcode에서 수동으로 앱을 시작할 수 있습니다. 또한 명령 list-emulator-images
(에 있음 project_dir/platforms/ios/cordova/lib
)은 다음 출력을 제공합니다.
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
그러나 문제는 기본 ( iPhone Retina (4-inch)
에뮬레이션 이미지로 보이는) 이외의 다른 항목에서 에뮬레이터를 시작하는 방법을 알아낼 수 없다는 것 입니다. 의 관련 출력은 cordova help
다음 정보 를 제공합니다.
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
나는 다음과 같은 것을 시도했습니다.
cordova run --debug --emulator=iPad iOS
그리고 많은 변형이 있지만 운이 없습니다. 동일한 에뮬레이터에서 시작할 때마다.
명령 줄 도구에 대한 문서 는 이와 관련하여 어떠한 정보도 제공하지 않으며 광범위한 Google 검색에서도 아무것도 찾지 못했습니다. 나는 사소한 것을 놓치고 있습니까? 아니면 뭔가 이상한 일을하려는 건가요? 여기 누군가가 이것에 대한 경험이 있고 몇 가지 답변을 제공 할 수 있기를 바랍니다.
미리 감사드립니다!
편집 : 명시 적으로 언급하는 것을 잊었습니다. 저는이 모든 것을 Mac에서하고 있습니다. 앞서 언급했듯이 Xcode의 다른 에뮬레이터 / 시뮬레이터에서 앱을 실행하면 정상적으로 작동합니다.
답변
사용 가능한 시뮬레이터 이미지가 무엇인지 알아 보려면 목록에 사용할 수 있습니다.
$ cordova emulate ios --list
Available iOS Virtual Devices:
iPhone-4s, 9.3
iPhone-5, 9.3
iPhone-5s, 9.3
iPhone-6, 9.3
iPhone-6-Plus, 9.3
iPhone-6s, 9.3
iPhone-6s-Plus, 9.3
iPad-2, 9.3
iPad-Retina, 9.3
iPad-Air, 9.3
iPad-Air-2, 9.3
iPad-Pro, 9.3
그런 다음 –target 매개 변수에서 시뮬레이터 이름 중 하나를 사용합니다.
cordova emulate ios --target="iPhone-4s, 9.3"
cordova emulate ios --target="iPad-Air-2, 9.3"
cordova emulate ios --target="iPhone-6s, 9.3"
cordova emulate ios --target="iPhone-6-Plus, 9.3"
중요 다른 대상 시뮬레이터를 시작하기 전에 시뮬레이터를 종료하십시오 (메뉴 모음에서를 선택하십시오 Simulator->Quit
).
3.5에서 4 인치 iPhone으로 전환하려면 메뉴를 통해 iOS 시뮬레이터를 종료해야 할 수도 있습니다.
동적 목록은 platforms/ios/cordova/lib/list-emulator-images
답변
csantanapr 이라고 말하면 다음을 사용할 수 있습니다.
cordova emulate ios --target="iPhone-4s"
그러나이 경우에는 cordova (또는 PhoneGap 또는 기타) 프로젝트가 iOS 버전 7.0.3을 사용 하는 iPhone 4s 시뮬레이터 에서 시작됩니다 .
동일한 시뮬레이터에서 다른 버전의 iOS (시스템에 버전이있는 경우 7.1 또는 8.0)로 프로젝트를 시작하려면?
corse의 경우 cobberboy 라고 말하면 됩니다 .
특정 에뮬레이터를 시작하고 ios-sim을 직접 사용하여 iOS 버전을 선택하십시오.
그러나 당신 --target
은 코르도바 run
명령의 옵션을 향상시킬 수 있습니다 .
먼저 시스템에서 사용할 수있는 대상 iOS 버전을 확인해야합니다.
이를 위해 cobberboy의 답변을 사용 하십시오 .
$ ios-sim showdevicetypes
그런 다음 파일을 열고 your_project_dir/platforms/ios/cordova/lib/run.js
아래와 같은 코드 줄을 찾아야합니다.
// validate target device for ios-sim
// Valid values for "--target" (case sensitive):
var validTargets = ['iPhone-4s', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];
사용하기 위해 iPhone-4s, 7.1
(또는 다른) 간단하게 array에 추가하십시오 validTargets
.
var validTargets = ['iPhone-4s', 'iPhone-4s, 7.1', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];
그리고
cordova emulate ios --target="iPhone-4s, 7.1"
당신 --target="iPhone-4s, 7.1"
은 유효합니다.
그리고 기능 deployToSim
의 run.js
:
function deployToSim(appPath, target) {
// Select target device for emulator. Default is 'iPhone-6'
if (!target) {
target = 'iPhone-6';
console.log('No target specified for emulator. Deploying to ' + target + ' simulator');
}
var logPath = path.join(cordovaPath, 'console.log');
var simArgs = ['launch', appPath,
'--devicetypeid', 'com.apple.CoreSimulator.SimDeviceType.' + target,
// We need to redirect simulator output here to use cordova/log command
// TODO: Is there any other way to get emulator's output to use in log command?
'--stderr', logPath, '--stdout', logPath,
'--exit'];
return spawn('ios-sim', simArgs);
}
에 대한 iPhone-4s, 7.1
유효한 인수 로 변환하십시오 .com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
ios-sim
답변
TL; DR
특정 에뮬레이터를 시작하고 ios-sim을 직접 사용하여 iOS 버전을 선택할 수 있습니다.
export appname="./platforms/ios/build/emulator/Hello World.app"
ios-sim launch "$appname" --devicetypeid "com.apple.CoreSimulator.SimDeviceType.iPad-2, 8.0" --stderr ./platforms/ios/cordova/console.log --stdout ./platforms/ios/cordova/console.log
세부
내가 이것을 실행할 때 :
cordova emulate ios --target="iPad"
실행중인 프로세스를 살펴보면 다음과 같습니다 (한 줄로 표시).
ios-sim launch ./platforms/ios/build/emulator/HelloWorld.app
--stderr ./platforms/ios/cordova/console.log
--stdout ./platforms/ios/cordova/console.log
--family ipad
--exit
ios-sim을 자세히 조사 해보면 특히 다음과 같은 몇 가지 구체적인 옵션이있는 것 같습니다.
--devicetypeid <device type> The id of the device type that should be simulated (Xcode6+). Use 'showdevicetypes' to list devices.
e.g "com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone6, 8.0"
그래서 “showdevicetypes”인수로 ios-sim을 제안한대로 실행하여 다음을 얻었습니다.
$ ios-sim showdevicetypes
com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
com.apple.CoreSimulator.SimDeviceType.iPhone-5, 7.1
com.apple.CoreSimulator.SimDeviceType.iPhone-5s, 7.1
com.apple.CoreSimulator.SimDeviceType.iPad-2, 7.1
com.apple.CoreSimulator.SimDeviceType.iPad-Retina, 7.1
com.apple.CoreSimulator.SimDeviceType.iPad-Air, 7.1
com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-5, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-5s, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus, 8.0
com.apple.CoreSimulator.SimDeviceType.iPhone-6, 8.0
com.apple.CoreSimulator.SimDeviceType.iPad-2, 8.0
com.apple.CoreSimulator.SimDeviceType.iPad-Retina, 8.0
com.apple.CoreSimulator.SimDeviceType.iPad-Air, 8.0
com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone, 8.0
com.apple.CoreSimulator.SimDeviceType.Resizable-iPad, 8.0
답변
버전 번호를 포함하지 마십시오
cordova run ios --target="iPhone-6s"
답변
Xcode 8.3.2부터 …
이전 스레드는 알고 있지만 아마도 대답이 약간 변경된 것 같습니다. 이 스레드의 이전 게시물에서 얻은 힌트가 도움이되었지만 코드에 포함 된 문서를 읽는 것도 도움이되었습니다.<cordova-project>/platforms/ios/cordova/lib/run.js
실행 ./platforms/ios/cordova/lib/list-emulator-images
하여 사용 가능한 에뮬레이터 이미지를 나열합니다. 원하는 에뮬레이터에서 실행하기 위해 cordova 호출을 할 때 끝에 버전 번호를 포함하지 마십시오.
cordova run ios --emulator --target="iPad-Air"
답변
저의 평판이 낮기 때문에 위의 답변에 대해 언급 할 수 없지만 대상 목록은 다음에서 사용할 수 있습니다.
start-emulator
아래에
your platform/ios/cordova/lib/
그래도 ipad retina 에뮬레이터를 작동시킬 수는 없습니다 …
답변
장치 목록의 가장 빠른 출력 :
$ instruments -s devices
버전없이 장치 이름을 사용하십시오.