web-dev-qa-db-fra.com

[react-native] n'a pas pu se connecter au serveur de développement sous Android

Lorsque je lance "react-native run-Android", cela me donne l'erreur suivante: "Impossible de se connecter au serveur de développement ...".

  • Le serveur de package est en cours d'exécution et je peux y accéder directement à partir du navigateur. Sur un appareil mobile.
  • Le débogage est activé sur mon appareil Android connecté à l'ordinateur et vérifié à l'aide de la commande adb devices.
  • Ma version Android est 4.4.4, donc je ne peux pas utiliser la commande inversée adb.
  • J'ai défini l'adresse IP et le port dans les paramètres de développement.
  • Le débogage USB est activé.
  • OS est Windows7.

Alors, comment résoudre le problème d'écran d'erreur rouge? Toute suggestion est appréciée!

entrez la description de l'image ici

16
cityvoice

D'après les documents: http://facebook.github.io/react-native/docs/running-on-device.html#method-2-connect-via-wi-fi

Méthode 2: connexion via Wi-Fi 

Vous pouvez également vous connecter au serveur de développement via Wi-Fi. Vous allez
Il faut d’abord installer l’application sur votre appareil à l’aide d’un câble USB, mais
Une fois cela fait, vous pouvez déboguer sans fil en suivant ces instructions.
instructions. Vous aurez besoin de l'IP actuelle de votre machine de développement
adresse avant de procéder.

Ouvrez un terminal et tapez/sbin/ifconfig pour trouver l'adresse IP de votre ordinateur adresse.

  1. Assurez-vous que votre ordinateur portable et votre téléphone sont sur le même réseau Wi-Fi. 
  2. Ouvrez votre application React Native sur votre appareil. 
  3. Vous verrez un écran rouge avec une erreur. C'est acceptable. Les étapes suivantes vont résoudre ce problème. 
  4. Ouvrez le menu Développeur intégré à l'application. 
  5. Sélectionnez Paramètres du développeur → Hôte du serveur de débogage pour le périphérique. 
  6. Tapez l'adresse IP de votre ordinateur et le port du serveur de développement local (par exemple 10.0.1.1:8081).
  7. Retournez au menu Developer et sélectionnez Reload JS.
29
goldylucks

Dans mon cas, le problème était lié aux politiques de sécurité d'Android. Selon la documentation :

À partir d'Android 9.0 (API niveau 28), la prise en charge de cleartext est désactivée par défaut.

Mais l'application tente d'accéder à Metro Bundler via HTTP, n'est-ce pas? Et c'est pourquoi ça ne peut pas. Pour activer le trafic en clair, ouvrez votre AndroidManifest.xml et ajoutez Android:usesCleartextTraffic="true" au nœud <application>.

Par exemple:

<application
    Android:name="com.example.app"
    Android:allowBackup="false"
    Android:icon="@mipmap/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme"
    Android:usesCleartextTraffic="true">

Vous pouvez trouver plus de solutions dans cet OS: https://stackoverflow.com/a/50834600/1673320 Le problème de l'OP est différent, mais similaire.

21
itachi

Exécutez ceci et cela a fonctionné pour moi

adb reverse tcp:8081 tcp:8081
5
Yoosaf Abdulla

** Ubuntu Essayez d’exécuter ces commandes dans votre dossier racine uniquement:

  1. Sudo npm start --- Cela se mettra automatiquement en pause après avoir dit - Loading Graphs, done (quelque chose comme ça); quand ceci est fait - ouvre un autre terminal

  2. react-native run-Android


Si le problème persiste, supprimez votre dossier de construction sous Android/ios Exécutez cette commande, puis exécutez les commandes susmentionnées dans le même ordre.

react-native bundle --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res && react-native run-Android**
3
Shubham Kakkar

si vous essayez de déboguer une application de votre appareil Android physique via wifi en utilisant une machine Windows, il est possible que l'appareil ne puisse pas accéder au port de votre ordinateur ou de votre ordinateur portable. Vous devez rendre le port accessible. cela implique deux étapes:

1. Créez d’abord une règle dans le pare-feu. pour ce faire, suivez les étapes suivantes:

ouvrir la boîte de dialogue d'exécution - tapez wf.msc - cliquez sur les règles entrantes - cliquez sur la nouvelle règle à droite - sélectionnez le port dans le menu contextuel, puis cliquez sur suivant - sélectionnez le port tcp et des ports locaux spécifiques et entrez le numéro de port tel que 8081 (par défaut) - autoriser la connexion - tout sélectionner dans la section profil - donner un nom et une description appropriés - cliquer finition

  1. vous devez rendre votre ordinateur accessible de l’extérieur. Pour ce faire, suivez les étapes suivantes: - réseau ouvert et centre de partage à partir du panneau de commande - modification des paramètres de l’adaptateur - sélection de votre réseau wifi - droite cliquez sur, propriétés - cliquez sur l'onglet de partage - cochez toutes les cases

Vous êtes prêt à partir, essayez maintenant de lancer react-native run-Android.

1
vinay gosain

dans mon cas avec Android 4.4.2, il a fallu effectuer quelques étapes supplémentaires: installé et exécuter les commandes suivantes à partir du dossier racine)

1_ create dir mkdir Android/app/src/main/assets
2_ create file index.Android.js which is a clone of index.js cp index.js index.Android.js
3_ react-native link
4_ curl "http://localhost:8081/index.Android.bundle?platform=Android" -o "Android/app/src/main/assets/index.Android.bundle"
5_ react-native run-Android
0
Royal.O

J'ai eu le même problème et le résoudre en supprimant le paquet "module de noeud" et ensuite à nouveau installer le fil Tout simplement sur certains changements, nous devons effacer notre 

0
Gagan Saini

J'ai rencontré cette question aussi en mode natif et réactif natif, ma solution était: tcp: 8081 tcp: 8081 " 4 lorsque vous devez recharger la page, entrez simplement:" adb Shell input keyevent 82 "

il suffit de le garder en ordre. P.S. si vous avez exécuté un projet en échec, lancez simplement "adb kill-server"

0
Michael Tangs

Pour ajouter à la réponse de goldylucks, vous pouvez utiliser IP 192.168.0.10 s'il s'agit de l'adresse IP de votre PC exécutant le conditionneur natif de React.

Vous devrez peut-être également ouvrir votre pare-feu.

Dans Ubuntu 18.04, vous pouvez obtenir votre IP par:

ip -c addr show

Vous y verrez votre adresse IP, quelque chose comme: inet 192.168.0.10/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s25 (remarquez le 192.168.0.10 dans mon exemple).

Ensuite, vous pouvez ouvrir le port 8081 de votre pare-feu, par exemple:

Sudo ufw allow 8081

Il utilisera TCP, alors assurez-vous que TCP est ouvert sur le port 8081.

Ensuite, vous pouvez suivre la réponse de goldylucks et aller à Dev settings et entrer 192.168.0.10:8081 ou l’adresse IP dont vous avez besoin.

Vous pouvez le tester depuis le navigateur de votre appareil. Lorsque le conditionneur est en cours d’exécution à partir de votre PC, accédez à http://192.168.0.10:8081 à partir de votre appareil mobile et assurez-vous que cela fonctionne. Il montrera quelque chose comme "Packager en cours d'exécution". Cela fonctionnera clairement ou échouera.

La réponse de Goldylock me passionne car elle résout très bien le problème si vous rencontrez des problèmes avec ces messages d'erreur. Il est nul de devoir reconstruire l'application tout le temps ou pire encore, supprimez l'APK de votre appareil, puis reconstruisez-le.

En tant que tel, vous devriez probablement utiliser le wifi dans le cadre de votre stratégie de développement.

0
agm1984

et tout d’abord, je vous remercie d’avoir posté votre doute… .. C'est principalement parce que votre expo ou l'application dans laquelle vous exécutez votre projet natif réagit peut-être ne pas se trouver dans le même réseau local ou wifi connecté… .. Il y a une chance qu'il y ait des perturbations dans votre connexion fréquemment en raison desquelles il perd sa connectivité.

Moi aussi, je suis confronté à ce problème et, personnellement, j'efface le cache, puis je le redémarre à nouveau et le redémarre à la perfection… .. J'espère que cela fonctionne pour vous aussi!

0
Rishav Kumar

Dans mon cas, mon émulateur a un paramètre de proxy. Après l'avoir éteint, tout fonctionne correctement.

0
Mahdi Farhani

Ceci est très probablement un problème de pare-feu. Si quelqu'un qui utilise Ubuntu est confronté à ce problème, vous pouvez utiliser 

Sudo service iptables stop

désactiver le pare-feu pour que le port soit accessible

0
Mayank Chaurasia