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"?

Aakash Sigdel
la source

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.

Kamil Sarna
la source
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
Jasonleonhard
la source
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;)

kuldip bhalodiya
la source
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 [email protected] 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
Cedriga
la source
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

Damitha Raveendra
la source
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 '

Js Yau
la source
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é.

AmerllicA
la source