Android échec du chargement de JS bundle
Je suis en train de lancer AwesomeProject sur mon Nexus5 (android 5.1.1).
Je suis en mesure de construire le projet et l'installer sur l'appareil. Mais quand je le lance, j'ai un écran rouge disant
Impossible de télécharger JS bundle. Vous avez oublié de démarrer le serveur de développement ou de connecter votre appareil?
À réagir natif iOS, je peux choisir de charger jsbundle en mode hors connexion. Comment puis-je faire la même chose pour Android? (Ou au moins, où puis-je configurer l'adresse du serveur?)
Mise à jour
À exécuter avec le serveur local, exécutez les commandes suivantes en vertu de votre réagissent-native répertoire racine du projet
react-native start > /dev/null 2>&1 &
adb reverse tcp:8081 tcp:8081
veuillez jeter un oeil à dsissitka la réponse pour plus de détails.
À s'exécuter sans un serveur, regrouper les jsfile dans l'apk par:
- créer un dossier des actifs sous
android/app/src/main
curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
veuillez jeter un oeil à kzzzf la réponse pour plus de détails.
- Stll n'ai pas compris la question encore. Mais en attendant, vous pouvez l'essayer sur votre simulateur. Il fonctionne parfaitement bien sur mon genymotion.
- quand j'essaie de taper les deux commandes à exécuter avec le serveur local j'obtiens l'erreur dans powershell en disant: "L'esperluette (&) caractère n'est pas autorisé". Je suppose que je devrais être dans la racine de mon application-dir lors de l'exécution de la commande?
- Est-ce à dire que le débogage USB sous Android 4.1 est impossible puisque
adb reverse
n'est pas pris en charge? - Je tiens à mentionner que, pour être en mesure d'exécuter
adb reverse tcp:8081 tcp:8081
vous avez besoin de la BAD 1.0.32 version,reverse
option n'est pas dans 1.0.31 - stackoverflow.com/questions/52564252/...
Vous devez vous connecter pour publier un commentaire.
De regrouper fichier JS dans votre apk tout en ayant votre serveur en cours d'exécution (
react-native start
) télécharger le bundle actifs dans le répertoire de votre application:Avec la prochaine version (0.12) nous allons corriger
react-native bundle
commande fonctionne avec android projets comme prévu.setBundleAssetName
habituellement dans l'activité principale (voir le modèle: github.com/facebook/react-native/blob/master/local-cli/...)La suite fait le travail pour moi sur Ubuntu 14.04:
Mise À Jour: Voir
Mise à jour 2: @scgough Nous avons reçu ce message, car Réagir Natif (RN) a été impossible de récupérer JavaScript sur le serveur de dev en cours d'exécution sur nos postes de travail. Vous pouvez voir pourquoi ce qui se passe ici:
https://github.com/facebook/react-native/blob/42eb5464fd8a65ed84b799de5d4dc225349449be/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java#L116-L137
Si votre RN application détecte que vous êtes à l'aide de Genymotion ou de l'émulateur, il essaie de récupérer le code JavaScript à partir de GENYMOTION_LOCALHOST (10.0.3.2) ou EMULATOR_LOCALHOST (10.0.2.2).
Sinon, il est supposé que vous êtes à l'aide d'un appareil et il tente d'extraire le code JavaScript de DEVICE_LOCALHOST (localhost).
Le problème est que le serveur de dev s'exécute sur votre poste de travail est localhost, pas de l'appareil, afin de le faire fonctionner, vous devez soit:
adb reverse tcp:8081 tcp:8081
dans mon application dossier racine? leadb
n'est pas reconnu ici, je dois courir dans android sdk de la plate-forme de dossier de l'outilOk, je crois que j'ai compris ce que le problème est ici. Il a à voir avec la version de
watchman
j'ai été en cours d'exécution.Dans un nouveau shell, exécutez
brew update
alors:
brew unlink watchman
alors:
brew install watchman
maintenant, vous pouvez exécuter
react-native start
de votre dossier de projetJe laisse cette coque ouvrir, créer une nouvelle fenêtre de shell et de l'exécution:
react-native run-android
de mon dossier de projet. Tout est bon avec le monde.ps. J'ai été à l'origine sur la version 3.2 de veilleur. Cette nouvelle m'3.7.
pps. Je suis nouveau sur ce donc qui pourrait ne pas être le plus rapide de l'itinéraire de la solution, mais cela a fonctionné pour moi.
* PLUS D'INFOS POUR L'EXÉCUTION/DÉBOGAGE SUR UN PÉRIPHÉRIQUE *
Vous trouverez peut-être que si vous déployez votre application sur votre appareil Android plutôt qu'un emulater, vous obtenez un écran rouge de la mort avec un message d'erreur indiquant
Unable to load JS Bundle
. Vous devez définir le débogage du serveur pour votre appareil à votre ordinateur exécutant réagir...son nom OU son adresse IP.Menu
boutonDev Settings
Debug server host for device
192.168.1.10:8081
Plus d'infos: http://facebook.github.io/react-native/docs/running-on-device-android.html
brew uninstall watchman
avant d'installer la version la plus récente pour moi.Dev Settings
.À partir de votre répertoire de projet, exécutez
Il affiche ce qui suit:
react-native run-android
partir du dossier du projet. Il s'appuie sur OK dans le terminal, mais dès que l'application s'ouvre sur mon appareil je reçois rouge projeté en disantUnable to download JS bundle
Une solution simple qui fonctionne pour moi avec Ubuntu 14.04.
L'émulateur (déjà lancé) sera de retour: Impossible de télécharger JS Bundle; recommencer le serveur JS:
Appuyez sur Recharger JS sur l'émulateur.
Il a travaillé pour moi. J'espère que ça aidera
Dans l'application sur android, j'ai ouvert le Menu (Commande + M dans Genymotion) -> Dev Paramètres -> Debug serveur hôte & port pour périphérique
définir la valeur: localhost:8081
Il a travaillé pour moi.
Après avoir essayé une combinaison des réponses ici, c'est ce qui est de travailler pour moi.
Je suis en utilisant Genymotion que mon émulateur.
1 Démarrez l'émulateur Genymotion.
2 à Partir d'un terminal
3 Recharger à partir de l'émulateur.
Il des charges!
Je peux maintenant commencer à développer.
Supprimer l'Application de votre téléphone! J'ai essayé plusieurs étapes, mais que fait-il finalement.
$ react-native run-android
Dev Settings
puis àDebug server host & port for device
. Là, entrez votre IP du serveur (adresse IP de votre ordinateur) et l'hôte8081
, par exemple192.168.50.35:8081
. Sur un mac, vous pouvez trouver l'adresse IP de votre ordinateur àSystem Preferences -> Network -> Advanced... -> TCP/IP -> IPv4 Address
.Reload JS
.Apparemment bad inverse a été introduit dans Android 5.0
Obtiens le message "erreur: fermé" deux fois sur "bad inverse"
Je suppose que nous devons aller de l'avant avec kzzzf la réponse de
Je n'ai pas assez de réputation pour le commentaire, mais c'est en se référant à dsissitka de réponse.
Il fonctionne sur Windows 10 ainsi.
Pour rappel, les commandes sont les suivantes:
Voici les étapes simples à exécuter votre application sur android(version):
1. Aller à la racine de votre application.
2. L'exécution de cette commande.
Tous vos fichiers sont copiés.
3. Créer signé APK.
Ouvrir android studio.
Build > Générer Signé APK > [Remplir les détails requis, de frappe doit être généré avant cette étape]
Votre APK devra être produite sans aucune erreur. Installez sur votre appareil et cela devrait fonctionner sans aucun problème.
Vous pouvez également connecter votre appareil et directement touché Exécuter icône sur android studio pour les tests.
La Génération De Frappe:
Goto C:\Program Files\Java\jdkx.x.x_x\bin
Exécuter
Il va probablement vous demander de remplir quelques détails. Le faire et vous avez votre frappe fichier(my_private_key.fichier de clés) qui peut être utilisé pour signer votre apk.
Je recevais ce sur Linux après l'arrêt de la baisse de la
react-native run-android
processus. Semble que le nœud serveur est toujours en cours donc, la prochaine fois que vous l'exécutez, il ne fonctionnera pas correctement et que votre application ne peut pas se connecter.Le correctif ici est de tuer le nœud processus qui est en cours d'exécution dans un Xterm qui vous pouvez tuer par
ctrl-c
compte que la fenêtre (plus facile) ou vous pouvez le trouver à l'aide delsof -n -i4TCP:8081
puiskill -9 PID
.Puis exécutez
react-native run-android
de nouveau.Vérifier votre connexion wifi.
Une autre possibilité pourrait être que vous êtes pas connecté au wifi, connecté au mauvais réseau ou l'adresse ip est incorrecte dans votre dev paramètres. Pour une raison quelconque, mon android déconnecté du wifi et j'ai commencé à avoir cette erreur, sans le savoir.
En cours d'exécution sur l'appareil
J'ai trouvé une autre réponse.
Une mise à jour
Maintenant sur windows pas besoin de courir réagir indigènes commencer. L'emballeur sera exécuté automatiquement.
Une chose importante à vérifier que personne n'a parlé jusqu'à présent:
Vérifier votre pare-feu, assurez-vous qu'il est ÉTEINT.
Voir ma réponse ici:
https://stackoverflow.com/a/41400708/1459275
J'utilise Ubuntu et Android, et j'ai été incapable de le remettre en marche. J'ai trouvé un vraiment de solution simple qui consiste à mettre à jour votre paquet.fichier json, la modification de ces lignes:
à
Et puis vous exécutez le serveur en tapant
Cela garantit de l'appareil android, recherche le nœud de serveur sur votre ordinateur plutôt que localement sur le téléphone.
La la question initiale était sur le rechargement de l'application dans un phyisical appareil.
Lorsque vous êtes débogage de l'application dans un dispositif physique (c'est à dire via adb), vous pouvez recharger le JS bundle en cliquant en haut à gauche "action" bouton de votre appareil. Cela permettra d'ouvrir le menu des options (Reload, Debug JS à distance...).
Espère que cette aide.
Cette erreur peut être facilement résolus en suivant les étapes:
adb reverse tcp:8081 tcp:8081
dans mon application dossier racine?Vous pouvez suivre les instructions mentionnées sur le page officielle pour résoudre ce problème. Ce problème se produit sur périphérique réel parce que le JS bundle est situé sur votre système de développement et de l'application à l'intérieur de votre périphérique réel n'est pas conscient de son emplacement.
À nouveau Réagir Natif (pour assurer 0.59) debug config est à l'intérieur de
android/app/src/debug/res/xml/react_native_config.xml
Commencer les deux terminaux sur le même et le 1er terminal exécuter réagir natif de début et de deuxième terminal réagir indigènes de l'exécution android de ce problème, résoudre de façon simple. Et le meilleur de la chance
De course mnp commencer de réagir-annuaire natif fonctionné pour moi.