Я разрабатываю кроссплатформенное мобильное приложение с помощью 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 также ничего не нашел. Я упустил что-то тривиальное? Или я пытаюсь сделать что-то странное? Я действительно надеюсь, что у кого-то из присутствующих есть опыт в этом вопросе, и он может дать некоторые ответы.
Большое спасибо заранее!
изменить: забыл упомянуть явно; Я все это делаю на Mac. Как упоминалось ранее, запуск приложения в разных эмуляторах / симуляторах в Xcode работает нормально.
"Error: Cannot read property 'name' of undefined"
при указании цели в кавычках, я мог заставить его работать, только запустив его вот такcordova run ios --target=iPhone-6
. Надеюсь, это избавит кого-то от неприятностей!Как говорят csantanapr, вы можете использовать:
но в этом случае проект cordova (или PhoneGap, или другой) будет запущен на симуляторе iPhone 4s с версией iOS 7.0.3 .
Если вы хотите запустить проект на том же симуляторе, но с другой версией iOS (7.1 или 8.0, если эти версии существуют в вашей системе)?
Конечно, вы можете сказать, как коббербой :
Но вы можете улучшить
--target
вариант команды cordovarun
.Сначала вы должны убедиться, какая целевая версия iOS доступна в вашей системе.
Для этого воспользуйтесь ответом cobberboy :
Затем вам нужно открыть файл
your_project_dir/platforms/ios/cordova/lib/run.js
и найти строки кода, как показано ниже:Для использования
iPhone-4s, 7.1
(или другого) просто добавьте его в массивvalidTargets
.И в
ваша
--target="iPhone-4s, 7.1"
будет действительна.А функция
deployToSim
изrun.js
:преобразовать
iPhone-4s, 7.1
в допустимый аргументcom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
дляios-sim
.источник
ionic run ios --target='iPhone-6, 9.0'
Ionic Framework.validTargets
и я был в состоянии указать полные платформы, пример:"--target="iPhone-6, 8.4""
. Было бы здорово, если бы Кордова делегировала проверку целиios-sim
.TL; DR
Вы можете запустить конкретный эмулятор и выбрать свою версию ios напрямую с помощью ios-sim.
подробности
Когда я запустил это:
и посмотрел на запущенные процессы, увидел это (в одной строке):
При дальнейшем изучении ios-sim , похоже, есть несколько более конкретных вариантов, в частности:
Итак, я сделал, как было предложено, и запустил ios-sim с аргументом showdevicetypes и получил следующее:
источник
Не указывайте номер версии
источник
Начиная с Xcode 8.3.2 ...
Старая ветка, я знаю, но кажется, возможно, ответ немного изменился. Подсказки из более ранних сообщений в этой теме помогли, но также помогло чтение документации, включенной в код,
<cordova-project>/platforms/ios/cordova/lib/run.js
Выполнить,
./platforms/ios/cordova/lib/list-emulator-images
чтобы вывести список доступных образов эмулятора. Не включайте номер версии в конце при вызове cordova для запуска в нужном эмуляторе.Узнать больше
источник
cordova run ios --target=iPhone-6
Я не могу комментировать ответ выше из-за моей низкой репутации, но список целей доступен по адресу:
под
Сказав это, я не могу заставить работать эмулятор ipad retina ...
источник
самый быстрый вывод списка устройств:
$ instruments -s devices
Просто используйте имя устройства без версии.
источник
Запускает симулятор iOS с веб-запросом на основе уже созданной сборки для приложения Cordova. Выполните этот запрос из браузера, чтобы открыть симулятор на Mac с версией iPhone 8Plus: http: // hostname: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
источник
Другой симулятор iphone и ipad
Кордова запустить ios --list
cordova emulate ios --target "iPhone-7"
источник
Ответ @Birja работает прямо сейчас, но команда запуска, которую он использовал, наконец, все еще неверна, поэтому вот правильный ответ:
Чтобы перечислить все устройства, доступные в симуляторе
cordova run ios --list
В результате получится что-то вроде этого:
cordova run ios --target "iPad-Pro, 12.2"
Используйте любую цель из вышеперечисленного. Бежать в симуляторе.источник