Кордова: запустите конкретное изображение эмулятора iOS
Я разрабатываю кросс-платформенное мобильное приложение с использованием Cordova, фокусируясь в основном на iOS на стадии разработки.
Для моего процесса разработки было бы идеально, если бы я мог запустить приложение Cordova непосредственно из командной строки и загрузить его в указанный эмулятор. Я могу сделать это, запустив в корневой каталог проекта следующее:
$cordova run --debug --emulator iOS
Это отлично работает, и в результате iOS-симулятор запускает мое приложение в моделированной iPhone 4 Retina с iOS 7.0.3
Помимо этого симулированного устройства, я также хотел бы протестировать (например) 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 также не смог что-то активировать. Я пропустил что-то тривиальное? Или я пытаюсь сделать что-то странное? Я действительно надеюсь, что у кого-то есть опыт с этим и может дать некоторые ответы.
Большое спасибо заранее!
edit: забыл указать явно; Я делаю все это на Mac. Как упоминалось ранее, запуск приложения в разных эмуляторах/симуляторах в Xcode отлично работает.
Ответы
Ответ 1
Чтобы узнать, какие изображения симулятора доступны, вы можете их перечислить
$ 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
)
Учтите, что вам может потребоваться выйти из iOS-симулятора через меню, чтобы переключиться с iPhone на 3,5 дюйма на 4 дюйма.
динамический список доступен в platforms/ios/cordova/lib/list-emulator-images
Ответ 2
Как говорят csantanapr, вы можете использовать:
cordova emulate ios --target="iPhone-4s"
но в этом случае проект cordova (или PhoneGap или другой) будет запущен на симулете iPhone 4s с iOS версии 7.0.3.
Если вы хотите запустить проект на том же симуляторе, но с другой версией iOS (7.1 или 8.0, если она существует в вашей системе)?
Из корса вы можете сделать, например, cobberboy:
запустите специальный эмулятор и выберите версию ios, используя ios-sim.
Но вы можете улучшить опцию --target
команды cordova 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
(или некоторых других) просто добавьте его в массив 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 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
.
Ответ 3
TL; DR
Вы можете запустить специальный эмулятор и выбрать свою версию ios, используя ios-sim.
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"
Итак, я сделал так, как он предложил, и запустил ios-sim с аргументом "showdevicetypes" и получил следующее:
$ 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
Ответ 4
Не включать номер версии
cordova run ios --target="iPhone-6s"
Ответ 5
Начиная с 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"
Подробнее
Ответ 6
Я не могу прокомментировать ответ выше из-за моей низкой репутации, но список целей доступен из:
start-emulator
под
your platform/ios/cordova/lib/
Сказав это, я не могу заставить эмулятор сетчатки ipad работать...
Ответ 7
Самый быстрый вывод списка устройств:
$ instruments -s devices
Просто используйте имя устройства без версии.
Ответ 8
Запускает симулятор iOS с веб-запросом на основе уже созданной сборки для приложения Cordova. Выполнить этот запрос из браузера открывает симулятор на Mac с iPhone 8Plus версия: http://hostname: 3000/cordova/build/[xxxx-buildnumber]/emulate? Target = iPhone-8-Plus
Ответ 9
Отличный симулятор iphone и ipad
-
Cordova Run IOS --list
-
Cordova подражать IOS --target "iPhone-7"
Ответ 10
Ответ @Birja работает прямо сейчас, но команда run, которую он использовал, наконец, все еще не верна, поэтому здесь правильный ответ:
Чтобы перечислить все устройства, доступные в симуляторе 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"
Используйте любую цель из вышеперечисленного. Бежать в симуляторе.