Estoy desarrollando una aplicación móvil multiplataforma usando Cordova, centrándome principalmente en iOS en la etapa de desarrollo.
Para mi proceso de desarrollo, sería ideal si pudiera iniciar mi aplicación Cordova directamente desde la línea de comandos y cargarla en un emulador específico. Puedo hacer esto ejecutando lo siguiente desde el directorio raíz del proyecto:
$cordova run --debug --emulator iOS
Esto funciona bien y da como resultado un simulador de iOS que ejecuta mi aplicación en un iPhone 4 Retina simulado con iOS 7.0.3
Además de este dispositivo simulado, también me gustaría probar (por ejemplo) en un iPad. Tengo estas imágenes de emulación instaladas y puedo iniciar mi aplicación en ellas manualmente en Xcode. Además, el comando list-emulator-images
(ubicado en project_dir/platforms/ios/cordova/lib
) da el siguiente resultado:
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
Sin embargo, la cosa es: parece que no puedo entender cómo iniciar el emulador en otra cosa que no sea la predeterminada (que parece ser la iPhone Retina (4-inch)
imagen de emulación). El resultado relevante de cordova help
proporciona la siguiente información:
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
He probado cosas como las siguientes:
cordova run --debug --emulator=iPad iOS
Y muchas variaciones del mismo, pero sin suerte. Cada vez que se inicia en el mismo emulador.
La documentación de la herramienta de línea de comandos no ofrece ninguna información al respecto, y una búsqueda exhaustiva en Google tampoco encontró nada. ¿Me estoy perdiendo algo trivial? ¿O estoy intentando hacer algo raro? Realmente espero que alguien aquí tenga experiencia con esto y pueda proporcionar algunas respuestas.
¡Muchas gracias de antemano!
editar: olvidé mencionar explícitamente; Estoy haciendo todo esto en una Mac. Como se mencionó anteriormente, ejecutar la aplicación en diferentes emuladores / simuladores en Xcode funciona bien.
"Error: Cannot read property 'name' of undefined"
al especificar el objetivo con comillas, solo podría hacer que funcione ejecutándolo de esta maneracordova run ios --target=iPhone-6
. ¡Espero que esto le ahorre problemas a alguien más!Como dice csantanapr , puede usar:
pero, en este caso, el proyecto cordova (o PhoneGap u otro) se lanzará en el simulador de iPhone 4s con iOS versión 7.0.3 .
¿Si desea lanzar el proyecto en el mismo simulador, pero con otra versión de iOS (7.1 u 8.0, si existen versiones en su sistema)?
Por supuesto, puedes hacer como decir cobberboy :
Pero puedes mejorar la
--target
opción delrun
comando cordova .Al principio, debe asegurarse de qué versión de iOS de destino está disponible en su sistema.
Para ello use la respuesta de cobberboy :
Luego, debe abrir el archivo
your_project_dir/platforms/ios/cordova/lib/run.js
y encontrar líneas de código como a continuación:Para usar
iPhone-4s, 7.1
(o algún otro), simplemente agréguelo a la matrizvalidTargets
.Y en
tu
--target="iPhone-4s, 7.1"
será válido.Y función
deployToSim
derun.js
:convertir
iPhone-4s, 7.1
en argumento válidocom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
paraios-sim
.fuente
ionic run ios --target='iPhone-6, 9.0'
cuando uso Ionic Framework.validTargets
y yo era capaz de especificar la plataforma completa, por ejemplo:"--target="iPhone-6, 8.4""
. Sería realmente bueno si Cordova delegara la validación de destino aios-sim
.TL; DR
Puede iniciar un emulador específico y elegir su versión de ios directamente usando ios-sim.
Detalles
Cuando ejecuté esto:
y miré los procesos en ejecución, vi esto (en una sola línea):
Investigando más en ios-sim , parece que hay algunas opciones más específicas, en particular:
Así que hice lo que sugirió y ejecuté ios-sim con un argumento "showdevicetypes" y obtuve esto:
fuente
No incluya el número de versión
fuente
A partir de Xcode 8.3.2 ...
Viejo hilo, lo sé, pero parece, quizás, que la respuesta ha cambiado ligeramente. Las sugerencias de publicaciones anteriores en este hilo ayudaron, pero también lo hizo leer la documentación incluida en el código,
<cordova-project>/platforms/ios/cordova/lib/run.js
Ejecutar
./platforms/ios/cordova/lib/list-emulator-images
para enumerar las imágenes de emulador disponibles. No incluya el número de versión al final cuando realice la llamada a cordova para que se ejecute en el emulador deseado.Ver más
fuente
cordova run ios --target=iPhone-6
No puedo comentar sobre la respuesta anterior debido a mi baja reputación, pero la lista de objetivos está disponible en:
debajo
Habiendo dicho eso, no puedo hacer que el emulador de retina de ipad funcione ...
fuente
salida más rápida de la lista de dispositivos:
$ instruments -s devices
Simplemente use el nombre del dispositivo sin la versión.
fuente
Ejecuta el simulador de iOS con solicitud web basada en la compilación ya generada para la aplicación cordova. Ejecutar esta solicitud desde el navegador abre el simulador en mac con iPhone 8Plus versión: http: // nombre de host: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
fuente
Diferentes simuladores de iphone y ipad
cordova ejecutar ios --list
cordova emular ios --target "iPhone-7"
fuente
La respuesta de @ Birja está funcionando en este momento, pero el comando de ejecución que usó finalmente sigue siendo incorrecto, así que aquí la respuesta correcta:
Para enumerar todos los dispositivos disponibles en el simulador
cordova run ios --list
Dará como resultado algo como esto:
cordova run ios --target "iPad-Pro, 12.2"
Utilice cualquier objetivo de los anteriores. Para ejecutar en simulador.fuente