web-dev-qa-db-fra.com

erreur "Impossible d'obtenir BatchedBridge, assurez-vous que votre paquet est emballé correctement" au démarrage de l'application

Essayer de créer un projet natif de réaction sur Android 4.4.2 Je reçois cet écran d'erreur

 said error

et ne pouvait trouver aucun moyen de le résoudre. J'ai essayé de redémarrer le conditionneur, de reconnecter le périphérique, voire de le réinstaller, puis de démarrer un nouveau projet. Sur les versions 6.0.0 et supérieures, cela fonctionne très bien.

154
Zygro

Une solution possible à cela est que vous n'associez probablement pas votre application en premier lieu, procédez comme suit, puis déployez votre application-debug.apk sur votre appareil.

$ cd myproject  
$ react-native start > /dev/null 2>&1 &  
$ curl "http://localhost:8081/index.Android.bundle?platform=Android" -o "Android/app/src/main/assets/index.Android.bundle"

(si le dossier assets n'existe pas, créez-le)

Puis lancez depuis la racine du projet

$> (cd Android/ && ./gradlew assembleDebug)

installez l'apk créé sur votre appareil, à partir de l'emplacement: Android/app/build/outputs/apk/app-debug.apk

laissez-moi savoir si cela résout votre problème

MODIFIER:

Vous pouvez simplement le mettre dans votre package.json sous forme de script pour l’automatiser. Je pense que cela sera corrigé dans les prochaines versions de react-native et sera exécuté avant l’assemblage du fichier APK final. ainsi que)

mettre:

"scripts": {
    "build": "(cd Android/ && ./gradlew assembleDebug)",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle-Android": "react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --sourcemap-output Android/app/src/main/assets/index.Android.map --assets-dest Android/app/src/main/res/"
  },

ou comme mentionné l'équivalent curl, mais pour la plupart des cas ci-dessus est plus robuste

141
tbo

Je suis tombé sur ce problème aussi. Ce que j’ai fait est de forcer l’application sur mon appareil, puis j'ai ouvert une autre console et lancé

react-native start

et puis j'ai rouvert l'application depuis mon appareil et ça a recommencé à fonctionner.

EDIT: Si vous utilisez un périphérique Android via USB et que vous l’avez débranché ou si votre ordinateur est allé dormir, vous devrez peut-être tout d’abord

adb reverse tcp:8081 tcp:8081
106
Felipe

Je viens d'avoir cette erreur. Voici ce que j'ai fait pour corriger: J'ai sélectionné Dismiss, est entré dans le menu du développeur, puis Dev Settings, Choisissez Debug server Host & port for device, j'ai ajouté l'adresse IP de mon ordinateur et le port: 192.168.0.xx:8xxx, utilisez l'adresse IP attribuée à votre ordinateur par le développeur. sur votre réseau wifi. Le port est généralement :8081

Une fois que j'ai fait cela, tout s'est bien passé. De plus, pendant que vous êtes dans le menu dev, n'oubliez pas de sélectionner Enable Live Reload et Debug JS Remotely, cela vous facilitera grandement la vie lors du débogage.

27
cube

C'est ce qui a fonctionné pour moi (après avoir essayé toutes les solutions que j'ai trouvées ...):

Exécutez adb reverse tcp:8081 tcp:8081 dans \Android\sdk\platform-tools

22
Chaim Salzer

Je l'ai également eu lorsque j'ai commencé pour la première fois avec React Native, en utilisant un périphérique physique. Si tel est le cas, vous devez faire des choses supplémentaires avant de pouvoir commencer. Vous devez entrer des informations sur votre machine de développement dans les "Paramètres de développement" de React Native. 

Lorsque vous voyez l'erreur, secouez votre périphérique. Une boîte de dialogue apparaîtra, la dernière option sera "Paramètres de développement". Sélectionnez "Serveur de débogage chaud et port pour périphérique" et entrez votre IP locale et le port utilisé (généralement 8081).

Voir le dernier paragraphe de https://facebook.github.io/react-native/docs/running-on-device-Android.html

16
Richh94

Si aucune des solutions ne fonctionne pour vous, essayez ceci: 

J'ai trouvé que mon dossier <root>/Android/app/build/intermediates/assets/debug était vide et qu'en exécutant cd Android && ./gradlew assembleDebug, il ne créait pas les fichiers nécessaires, qui sont ensuite utilisés par le fil javascript dans nos applications natives réactives.

J'ai exécuté manuellement la commande suivante que la commande de construction de débogage aurait dû créer idéalement.

node node_modules/react-native/local-cli/cli.js bundle --platform Android --dev true --reset-cache --entry-file index.Android.js --bundle-output /<path to dir>/Android/app/build/intermediates/assets/debug/index.Android.bundle --assets-dest /<path to dir>/Android/app/build/intermediates/res/merged/debug

Après avoir exécuté ces commandes, j'ai trouvé deux fichiers de paquet dans ce répertoire <root>/Android/app/build/intermediates/assets/debug

Et puis j'ai recommencé cd Android && ./gradlew installDebug, mon application a recommencé à fonctionner.

Déboguer plus et mettre à jour ce qui échoue réellement.

7
Sumit Kushwaha

Dans un terminal séparé , connectez votre appareil à l'ordinateur et exécutez les commandes suivantes:

react-native start 
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081

Application terminal:

react-native run-Android 
install apk on your device from this location Android/app/build/outputs/apk/app-debug.apk
7
Brijmohan Karadia

C'est un peu trop tard mais ça marche vraiment pour moi.

  1. react-native run-Android.
  2. react-native start.

La première commande va construire apk pour Android et le déployer sur votre appareil s'il est connecté. Lorsque vous ouvrez l'application, l'écran rouge s'affiche avec une erreur. Ensuite, exécutez la deuxième commande qui va exécuter le conditionneur et construire un bundle d'applications pour vous.

5
Shamsher
  1. redémarrer le genymotion
  2. exécuter react-native run-Android 
  3. le problème a été résolu
5
Yang

Essayez cette commande dans le terminal, puis rechargez. Ça a fonctionné pour moi

annonce inverse tcp: 8081 tcp: 8081

5
Praneeth

voir issue :

1.réaction native

2. Cliquez sur Reload(R,R) sur votre appareil.

5
XYz Amos

J'avais la même exception sur le périphérique Z3 Compact D5803 - 6.0.1

Je suis allé ouvrir le fichier .buckconfig et j'ai changé la ligne:

target = Google Inc.:Google APIs:23

à

target = Google Inc.:Google APIs:24

Parce que j'ai vu dans SDK Manager qu'Android 6.X a un niveau d'api 24.

4
laszl0

Pour moi, c'est parce que adb n'était pas dans la PATH. Il se trouve /Users/man/Library/Android/sdk/platform-tools pour moi, ce peut être un autre endroit pour vous, mais quand même, trouvez-le et ajoutez-le à votre chemin pour voir si cela vous aide.

3
h--n

Puisque vous utilisez Android <5.0, vous ne pouvez pas utiliser la méthode adb reverse par défaut, mais Facebook a ajouté documentation officielle permettant de se connecter au serveur de développement via Wi-Fi }, qui prend en charge votre version. En citant les instructions pour MacOS, mais ils les ont également pour Linux et Windows:

Méthode 2: Connexion via Wi-Fi 

Vous pouvez également vous connecter au serveur de développement via Wi-Fi. Vous devrez d’abord installer l’application sur votre appareil à l’aide d’un câble USB, mais vous pourrez ensuite déboguer sans fil en procédant comme suit: Vous aurez besoin de l'adresse IP actuelle de votre ordinateur de développement avant de continuer.

Vous pouvez trouver l'adresse IP dans Préférences Système → Réseau.

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

3
Jesús Carrera

Il avait ce problème "au hasard" et m'a pris un certain temps pour réaliser ce qui n'allait pas dans mon scénario.

Après la mise à jour de React-native-cli 2.0.1, un message était transmis au journal, ce qui m'a aidé à creuser et à trouver la cause:

Le serveur JS n'est pas reconnu, continue avec la construction ...

Après avoir recherché des liens, j'ai trouvé celui-ci:

Impossible de reconnaître le serveur JS

Depuis que je suis sous Windows, j'ai exécuté netstat et découvert que mon lecteur VLC fonctionnait également sur le port 8081, ce qui était à l'origine du problème. Donc, dans mon cas, si j’avais démarré le serveur vlc avant le serveur natif de réaction, cela ne fonctionnerait pas.

Ce même message de log n’a pas été publié sur les versions précédentes de react-native-cli, ce qui l’a fait échouer en silence.

TL, DR: vérifie si quelque chose tourne sur le même port que le gestionnaire de paquets (8081 par défaut)

Mon problème était que j'ai parcouru mon fichier AndroidManifest.xml et que j'avais supprimé la ligne

<uses-permission Android:name="Android.permission.INTERNET" />

parce que mon application n'aura pas besoin d'internet. Cependant, l'application de débogage native native a besoin d'un accès Internet (pour accéder au conditionneur). :)

2
SpencerL

La plupart d'entre nous sont confrontés à ce problème pour la première fois, lorsque nous commençons à réagir au projet natif n ° 1.

Quelques étapes simples ont résolu mon problème: 

J'ai créé un exemple de projet à l'aide de la commande: React-native init ReactProject1

Solution

Le correctif consiste à aider local-cli\runAndroid\adb.js à trouver adb.exe, de la même manière que local-cli\runAndroid\runAndroid.js:

recherche une instruction de remplacement sous nom du projet (tout ce que vous avez indiqué)\node_modules\react-native\local-cli\runAndroid

Remplacer:

const devicesResult = child_process.execSync ('périphériques adb');

Par:

const devicesResult = child_process.execSync ((process.env.Android_HOME? process.env.Android_HOME + '/ platform-tools /': '') + 'périphériques adb');

après avoir effectué le remplacement ci-dessus, il suffit de lancer react-native run-Android dans votre cmd, il regroupera apk et, dans un premier temps, tentera d'installer js bundle localement sur votre appareil. (Obtenu le succès)

1
DeepakPanwar

J'ai fini par devoir ouvrir le port que j'utilisais (8081 par défaut). Sous Linux, vous pouvez faire ce qui suit

Sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Vous pouvez tester pour voir si vous avez réellement besoin de le faire. Il suffit de naviguer sur votre serveur dev dans Chrome sur votre appareil Android. Si cela ne répond pas, c'est peut-être ce dont vous avez besoin. Si cela répond, cela ne vous aidera pas.

1
Anthony Naddeo

S'il vous plaît vérifier si vous avez une erreur suivante lorsque vous exécutez react-native run-Android: adb server version (XX) doesn't match this client (XX); killing...

Dans ce cas, assurez-vous que /usr/local/opt/Android-sdk/platform-tools/adb et /usr/local/bin/adb ont la même adb

Dans mon cas, on a indiqué /Users/sd/Library/Android/sdk/platform-tools/adb (SDK Android), un autre /usr/local/Caskroom/Android-platform-tools/26.0.2/platform-tools/adb (Homebrew).

Et le problème a été corrigé après que les deux ont indiqué /Users/sd/Library/Android/sdk/platform-tools/adb (SDK Android)

1
Serhey Dolgushev

Pour moi, la synchronisation latérale était activée et activée. La fermer immédiatement a fait disparaître le problème. Cela peut valoir la peine de fermer cette communication ou toute autre communication entre le PC et le périphérique

1
lee_dabiker

J'ai eu le même problème. Quand j’ai créé un projet natif de réaction via créer-réagir-natif-application AwesomeProject cela a bien fonctionné dans l'application Expo sur téléphone. Après cela, j'ai voulu utiliser ce projet quickstart pour développer mon projet et j'ai eu la même erreur que vous. 

Après quelques recherches, je découvre qu'il est préférable de commencer un nouveau projet avec réactif-natif init AwesomeProject (avec tous les paramètres dans les documents natifs de réaction) Ensuite, exécutez cette commande:

react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/

Cela devrait résoudre le problème avec bundle (--dev false ne montre pas les avertissements)

Tout ce que vous devez faire pour que l'application s'exécute sur votre appareil virtuel/réel est: 

react-native run-Android

Et cela devrait fonctionner très bien. Au moins cela a fonctionné pour moi.

1

J'ai aussi cette erreur, vraiment confuse. Parce que toutes les réponses ne fonctionnent pas . Juste après, ajoutez adb au chemin.

1
Bruce Lee

Pour moi, le problème était que "adb" n'était pas reconnu - vérifiez ceci réponse.

Pour résoudre ce problème, ajoutez C:\Utilisateurs\NOMUTILISATEUR\AppData\Local\Android\sdk\platform-tools aux variables d'environnement.

1
niceman

Mon chemin sont:

react-native start

Après cela dans votre appareil en utilisant:

click to Reload.

Voir dans la console react-native, ce sera fetch js bundle data.

1
ThienSuBS

Redémarrez simplement votre système ou votre bundle complet et le problème peut être résolu.

0
Vinayak Gupta

Essayez de nettoyer le cache

react-native start --reset-cache

0
Hitesh Sahu

J'ai trouvé que je devais aussi ajouter un 

mise à niveau native

pour que l'application s'exécute correctement.

0
M. Solle

J'ai essayé beaucoup de suggestions ci-dessus/ci-dessous, mais au final, le problème auquel je faisais face était une autorisation avec watchman, qui avait été installée auparavant avec homebrew. Si vous examinez les messages de votre terminal tout en essayant d'utiliser l'émulateur et que vous rencontrez des erreurs 'Autorisation refusée' concernant Watchman avec le message 'Impossible d'obtenir BatchedBridge "sur votre émulateur, procédez comme suit:

Accédez à votre répertoire /Users/<username>/Library/LaunchAgents et modifiez les paramètres d'autorisations pour que votre utilisateur puisse lire et écrire. Ceci indépendamment du fait que vous ayez ou non un fichier com.github.facebook.watchman.plist dedans.

0
alexfigtree

Le moyen le plus simple!  

  • Arrêtez le serveur et terminez la construction du projet. 
  • Ouvrez un terminal 'Node.js' .
    • Accédez au dossier avec le projet 'react-native'.
    • Tapez 'react-native start' - Démarrez le serveur natif réagi manuellement.
  • Allez dans votre éditeur de code Terminal et tapez 'react-native run-Android.

Vous êtes prêt à partir!

0
Jason

J'ai eu le même problème mais c'était une erreur stupide de ma part ... 

Depuis Android studio , je lançais le script installDebug/installRelease gradle de app projet au lieu de root projet.

0
Martin Choraine