Exécuter une application native react sur un appareil iOS directement à partir de la ligne de commande?


104

Est-il possible d'exécuter une application native react-native sur un appareil iOS directement à partir de la ligne de commande comme nous le faisons sur un simulateur avec react-native run ios --simulator "iPhone 5s"?

Réponses:


229

Ce qui suit a fonctionné pour moi (testé sur react native 0.38et 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 vous essayez d'exécuter run-ios, vous verrez que le script recommande de le faire npm install -g ios-deploylorsqu'il atteint l'étape d'installation après la construction.

Bien que la documentation sur les différentes commandes proposées par react-native soit un peu sommaire, il vaut la peine d'aller sur react-native / local-cli . Là, vous pouvez voir toutes les commandes disponibles et le code qu'elles exécutent - vous pouvez ainsi déterminer quels commutateurs sont disponibles pour les commandes non documentées.


2
Si vous voyez quelque chose comme ios deploy does not support the following options: idmoi, votre iPhone exécute peut-être la version bêta d'iOS et vous devrez utiliser une version bêta de Xcode. Essayez sudo xcode-select -s /Applications/Xcode-beta.app(en supposant que vous avez installé la bonne application bêta Xcode).
paulvs

50
Pour moi, je viens de react-native run-ios --devicetravailler et la commande ci-dessus n'a pas fonctionné
narek

11
Si vous obtenez une erreur après l'exécution npm install -g ios-deploy, essayez d'exécuter sudo npm install -g ios-deploy --unsafe-perm=true --allow-root
Eric Wiener

5
Notez que vous pouvez exécuter l'application mobile en configuration de relase sur un appareil iOS avec l'UDID de l'appareil (vous pouvez obtenir une erreur avec l'option --device pour les noms d'appareils contenant des caractères non anglais:react-native run-ios --udid XXXX --configuration Release
Gürol Canbek

7
obtenir ** INSTALLATION SUCCEEDED **mais rien ne se passe sur l'appareil ... il est 100% connecté correctement et reconnu par Xcode. J'ai essayé à la fois la réponse principale et les commentaires: react-native run-ios --deviceavec le même résultat
Blue Bot

32

Installez d'abord la bibliothèque requise globalement sur votre ordinateur:

npm install -g ios-deploy

Accédez à vos paramètres sur votre iPhone pour trouver le nom de l'appareil.

Ensuite, fournissez-le ci-dessous comme:

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

Parfois, cela échouera et affichera un message comme celui-ci:

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

Cet udid est utilisé comme ceci:

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

Vous pouvez éventuellement utiliser:

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

comment obtenir l'identifiant de l'appareil?
santialur

1
ios-deploy -c # lorsque votre appareil est branché
jasonleonhard

1
pour moi a sudo npm install -g ios-deploy --unsafe-perm=truetravaillé.
Jay Mayu

périphérique d'entrée vers usb-> Xcode-> Window-> Devices and Simulators-> Identifier this is uuid (udid)
Giang

@jasonleonhard Comment ça ios-deploy -cmarche, ce n'est pas un outil en ligne de commande? est-ce censé être yarn/npm ios-deploy -cou quelque chose, parce que cela n'a pas fonctionné non plus
Sam

12

Exécutez cette commande dans le répertoire racine du projet.

1>. Liste des appareils iPhone pour trouver les appareils réels connectés et le simulateur. identique à la commande adb devices pour Android.

xcrun instruments -s devices

2>. Sélectionnez l'appareil à l'aide de cette commande sur lequel vous souhaitez exécuter votre application

Utilisation du nom de l'appareil

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

Utilisation de l'UDID

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

attendez et regardez pour exécuter votre application sur des appareils spécifiques - K00L;)


1
en utilisant la méthode UDID, j'obtiens l'erreur: "erreur Les options deviceet udidsont mutuellement exclusives"
syumaK

7

Si vous obtenez cette erreur en ios-deploy@x.x.x preinstall: ./src/scripts/check_reqs.js && xcodebuild ...utilisantnpm install -g ios-deploy

Essaye ça. Ça marche pour moi:

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

4

Je voulais juste ajouter quelque chose à la réponse de Kamil

Après avoir suivi les étapes, j'ai toujours une erreur,

erreur Impossible de trouver le périphérique avec le nom: "....'s Xr"

Après avoir supprimé les caractères spéciaux du nom de l'appareil (Allez dans Paramètres -> Général -> À propos -> Nom )

Par exemple: '

Ça a marché !

J'espère que cela aidera quelqu'un qui a fait face à un problème similaire.

Testé avec - react-native-cli: 2.0.1 | natif de réaction: 0,59,8 | VSCode 1.32 | Xcode 10.2.1 | iOS 12.3


J'ai eu un problème similaire parce que l'apostrophe était en fait un guillemet simple droit Unicode. Après avoir copié-collé le nom de l'appareil à partir de la liste des appareils, cela a fonctionné.
Toma

1

J'ai le mien avec

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

Et notez que le nom de votre iphone, l'apostrophe peut être différent. Le mien utilise ça '


0

En fait, pour la première version, veuillez le faire avec Xcode, puis procédez de la manière suivante:

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

La deuxième commande exécutera l'application sur le premier appareil connecté.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.