programing

Cordova: 특정 iOS 에뮬레이터 이미지 시작

lovejava 2023. 6. 3. 07:51

Cordova: 특정 iOS 에뮬레이터 이미지 시작

저는 개발 단계에서 iOS를 중심으로 코르도바를 활용한 크로스 플랫폼 모바일 앱을 개발하고 있습니다.

개발 프로세스의 경우 명령줄에서 직접 코르도바 앱을 시작하여 지정된 에뮬레이터에 로드할 수 있으면 이상적입니다.프로젝트 루트 디렉터리에서 다음을 실행하여 이 작업을 수행할 수 있습니다.

$cordova run --debug --emulator iOS

이것은 잘 작동하고 iOS 7.0.3이 설치된 모의 아이폰 4 레티나에서 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

그리고 그것들의 많은 변형들, 하지만 운이 없습니다.동일한 에뮬레이터에서 시작할 때마다

명령줄 도구에 대한 설명서는 이와 관련된 정보를 제공하지 않으며, 광범위한 구글 검색도 아무것도 찾지 못했습니다.제가 뭔가 사소한 것을 놓치고 있나요?아니면 제가 이상한 짓을 하려는 건가요?저는 정말로 여기 있는 누군가가 이것에 대한 경험이 있고, 몇 가지 답을 제공할 수 있기를 바랍니다.

잘 부탁드립니다!

편집: 명시적으로 언급하는 것을 잊었습니다. 저는 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인치 iPhone에서 4인치 iPhone으로 전환하려면 메뉴를 통해 iOS 시뮬레이터를 종료해야 할 수도 있습니다.

list는 있다니수습사에서 확인할 수 .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)를 사용하려면 어떻게 해야 합니까?

물론 코버보이처럼 할 수 있습니다.

특정 에뮬레이터를 시작하고 직접 ios-sim을 사용하여 ios 버전을 선택합니다.

하지만 당신은 발전할 수 있습니다.--target코르도바 옵션run지휘권

먼저 시스템에서 사용할 수 있는 대상 iOS 버전을 확인해야 합니다.

그것은 코버보이의 대답을 사용합니다.

$ 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(또는 기타) 어레이에 간단히 추가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"유효합니다.

그리고 함수deployToSimrun.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"

그래서 저는 그것이 제안한 대로 했고 "show device types" 인수를 사용하여 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 run ios --emulator --target="iPad-Air"

더 보기

저의 평판이 낮아서 위의 답변에 대해 언급할 수 없지만, 대상 목록은 다음에서 확인할 수 있습니다.

start-emulator 

아래

your platform/ios/cordova/lib/

그렇다고는 해도, ipad retina emulator를 작동시킬 수는 없습니다...

장치 목록의 가장 빠른 출력:$ instruments -s devices

버전 없이 장치 이름만 사용합니다.

지금은:

cordova run ios --list
Available ios devices:
Available ios virtual devices:
Apple-TV-1080p, tvOS 14.3
Apple-TV-4K-4K, tvOS 14.3
Apple-TV-4K-1080p, tvOS 14.3
Apple-Watch-Series-5-40mm, watchOS 7.2
Apple-Watch-Series-5-44mm, watchOS 7.2
Apple-Watch-Series-6-40mm, watchOS 7.2
Apple-Watch-Series-6-44mm, watchOS 7.2
iPhone-8, 14.3
iPhone-8-Plus, 14.3
iPhone-11, 14.3
iPhone-11-Pro, 14.3
iPhone-11-Pro-Max, 14.3
iPhone-SE--2nd-generation-, 14.3
iPhone-12-mini, 14.3
iPhone-12, 14.3
iPhone-12-Pro, 14.3
iPhone-12-Pro-Max, 14.3
iPod-touch--7th-generation-, 14.3
iPad-Pro--9-7-inch-, 14.3
iPad-Pro--11-inch---2nd-generation-, 14.3
iPad-Pro--12-9-inch---4th-generation-, 14.3
iPad--8th-generation-, 14.3
iPad-Air--4th-generation-, 14.3

그리고:

cordova run ios --target="iPad-Pro--12-9-inch---4th-generation-, 14.3"

코르도바 10.0.0에서

다른 iphone 및 ipad 시뮬레이터

  1. cordova runios --list

  2. cordova 에뮬레이션 ios -- 타겟 "iPhone-7"

코르도바 애플리케이션을 위해 이미 생성된 빌드를 기반으로 웹 요청으로 iOS 시뮬레이터를 실행합니다.iPhone 8Plus 버전이 설치된 Mac에서 브라우저 열기 시뮬레이터에서 이 요청을 실행합니다. http://hostname:3000/cordova/build/[xxxxx-build number]/emulate?target=iPhone-8-Plus

@Birja의 대답은 지금 당장은 효과가 있지만 그가 마지막으로 사용한 실행 명령은 여전히 틀리기 때문에 여기에 정답이 있습니다.

시뮬레이터에서 사용할 수 있는 모든 장치를 나열하려면 다음과 같이 하십시오.cordova run ios --list

이는 다음과 같은 결과를 초래할 것입니다.

Available ios devices:
Available ios virtual devices:
Apple-TV-1080p, tvOS 12.2
Apple-Watch-Series-2-38mm, watchOS 5.2
iPhone-5s, 12.2
iPhone-6, 12.2
iPad-Air-2, 12.2
iPad--5th-generation-, 12.2
iPad-Pro--9-7-inch-, 12.2
iPad-Pro, 12.2
iPad-Pro--12-9-inch---2nd-generation-, 12.2
iPad-Pro--10-5-inch-, 12.2
iPad--6th-generation-, 12.2
iPad-Pro--11-inch-, 12.2
iPad-Pro--12-9-inch---3rd-generation-, 12.2

cordova run ios --target "iPad-Pro, 12.2"위의 대상을 사용합니다.시뮬레이터에서 실행합니다.

언급URL : https://stackoverflow.com/questions/22310526/cordova-start-specific-ios-emulator-image