¿Ejecutar la aplicación nativa de reacción en el dispositivo iOS directamente desde la línea de comandos?

104

¿Es posible ejecutar una aplicación nativa de reacción en un dispositivo iOS directamente desde la línea de comandos como lo hacemos en el simulador react-native run ios --simulator "iPhone 5s"?

Aakash Sigdel
fuente

Respuestas:

229

Lo siguiente funcionó para mí (probado en react native 0.38y 0.40):

npm install -g ios-deploy
# Run on a connected device, e.g. Max's iPhone:
react-native run-ios --device "Max's iPhone"

Si intenta ejecutar run-ios, verá que el script recomienda hacerlo npm install -g ios-deploycuando llegue al paso de instalación después de la construcción.

Si bien la documentación sobre los diversos comandos que ofrece react-native es un poco incompleta, vale la pena ir a react-native / local-cli . Allí, puede ver todos los comandos disponibles y el código que ejecutan; por lo tanto, puede averiguar qué conmutadores están disponibles para los comandos no documentados.

Kamil Sarna
fuente
2
Si ves algo como ios deploy does not support the following options: id, tal vez como yo, tu iPhone está ejecutando la versión beta de iOS y tendrás que usar una versión beta de Xcode. Prueba sudo xcode-select -s /Applications/Xcode-beta.app(asumiendo que tienes instalada la aplicación beta de Xcode correcta).
Paulvs
50
Para mí simplemente react-native run-ios --devicefuncionó y el comando anterior no lo hizo
narek
11
Si obtiene un error después de ejecutar npm install -g ios-deploy, intente ejecutar sudo npm install -g ios-deploy --unsafe-perm=true --allow-root
Eric Wiener
5
Tenga en cuenta que puede ejecutar la aplicación móvil en configuración relase en un dispositivo iOS con el UDID del dispositivo (puede obtener un error con la opción --device para los nombres de dispositivos que tienen caracteres no ingleses:react-native run-ios --udid XXXX --configuration Release
Gürol Canbek
7
obteniendo ** INSTALLATION SUCCEEDED **pero no pasa nada en el dispositivo ... está 100% conectado correctamente y reconocido por Xcode. Probé tanto la respuesta principal como los comentarios: react-native run-ios --devicecon el mismo resultado
Blue Bot
32

Primero instale la biblioteca requerida globalmente en su computadora:

npm install -g ios-deploy

Vaya a su configuración en su iPhone para encontrar el nombre del dispositivo.

Luego proporcione eso a continuación como:

react-native run-ios --device "______\'s iPhone"

A veces, esto fallará y generará un mensaje como este:

Found Xcode project ________.xcodeproj
Could not find device with the name: "_______'s iPhone".
Choose one of the following:
______s iPhone Udid: _________

Ese udid se usa así:

react-native run-ios --device --udid 0412e2c230a14e23451699

Opcionalmente puede utilizar:

react-native run-ios --device --udid 0412e2c230a14e23451699 -- configuration Release
Jasonleonhard
fuente
¿Cómo se obtiene la identificación del dispositivo?
santialur
1
ios-deploy -c # cuando su dispositivo está enchufado
jasonleonhard
1
para mí sudo npm install -g ios-deploy --unsafe-perm=truefuncionó.
Jay Mayu
dispositivo de entrada a usb-> Xcode-> Window-> Devices and Simulators-> Identifier this is uuid (udid)
Giang
@jasonleonhard ¿Cómo ios-deploy -cfunciona, no es una herramienta de línea de comandos? se supone que debe ser yarn/npm ios-deploy -co algo así, porque eso tampoco funcionó
Sam
12

Ejecute este comando en el directorio raíz del proyecto.

1>. Lista de dispositivos iPhone para los dispositivos reales y el simulador encontrados. Igual que el comando adb devices para Android.

xcrun instruments -s devices

2>. Seleccione el dispositivo con este comando que desea ejecutar su aplicación

Usando el nombre del dispositivo

react-native run-ios --device "Kool's iPhone"

Usando UDID

react-native run-ios --device --udid 0412e2c2******51699

espere y observe para ejecutar su aplicación en dispositivos específicos - K00L;)

kuldip bhalodiya
fuente
1
usando el método UDID, aparece el error: "error Las opciones devicey udidson mutuamente excluyentes"
syumaK
7

Si recibe este error [email protected] preinstall: ./src/scripts/check_reqs.js && xcodebuild ... usandonpm install -g ios-deploy

Prueba esto. Esto funciona para mi:

  1. sudo npm uninstall -g ios-deploy
  2. brew install ios-deploy
Cedriga
fuente
4

Solo quería agregar algo a la respuesta de Kamil.

Después de seguir los pasos, sigo recibiendo un error,

error No se pudo encontrar el dispositivo con el nombre: ".... 's Xr"

Después de eliminar caracteres especiales del nombre del dispositivo (vaya a Configuración -> General -> Acerca de -> Nombre )

Por ejemplo: '

Funcionó !

Espero que esto ayude a alguien que se enfrentó a un problema similar.

Probado con - react-native-cli: 2.0.1 | react-native: 0,59,8 | VSCode 1.32 | Xcode 10.2.1 | iOS 12.3

Damitha Raveendra
fuente
Tuve un problema similar porque el apóstrofe era en realidad una comilla simple derecha Unicode. Después de copiar y pegar el nombre del dispositivo de la lista de dispositivos, funcionó.
Toma
1

Tengo el mío trabajando con

react-native run-ios --device="My’s iPhone"

Y observe que el nombre de su iphone, el apóstrofe s 'puede ser diferente. El mío está usando esto '

Js Yau
fuente
0

En realidad, para la primera compilación, hágalo con Xcode y luego haga lo siguiente:

  1. brew install ios-deploy
  2. npx react-native run-ios --device

El segundo comando ejecutará la aplicación en el primer dispositivo conectado.

AmerllicA
fuente