it-swarm.com.de

fehler "BatchedBridge konnte nicht abgerufen werden, vergewissern Sie sich, dass das Bundle ordnungsgemäß verpackt ist" beim Start der App

Beim Versuch, ein reaktives Projekt unter Android 4.4.2 zu erstellen, wird dieser Fehlerbildschirm angezeigt

 said error

und konnte keinen Weg finden, um es zu lösen. Ich habe versucht, den Packager neu zu starten, das Gerät erneut zu verbinden, ReaMate native erneut zu installieren und ein neues Projekt zu starten. Auf 6.0.0 und späteren Versionen funktioniert es einwandfrei.

154
Zygro

Eine mögliche Lösung dafür ist, dass Sie Ihre Anwendung wahrscheinlich nicht zuerst bündeln. Führen Sie die folgenden Schritte aus und stellen Sie dann die app-debug.apk auf Ihrem Gerät bereit

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

(Wenn der Ordner assets nicht existiert, erstellen Sie ihn.)

Führen Sie dann das Projektstammverzeichnis aus

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

installieren Sie die erstellte apk auf Ihrem Gerät von Standort: Android/app/build/outputs/apk/app-debug.apk

lassen Sie mich wissen, wenn das Ihr Problem behebt

EDIT:

Sie können es einfach als paket.json in ein Script packen, um es zu automatisieren. Ich glaube, es wird in den kommenden Releases von reag-native behoben und wird vor dem Zusammenstellen des endgültigen APKs ausgeführt auch)

stellen :

"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/"
  },

oder, wie erwähnt, das Curl-Äquivalent, aber in den meisten Fällen ist das Obige robuster

141
tbo

Ich bin auch auf dieses Problem gestoßen. Was ich getan habe, war, die App auf meinem Gerät mit Gewalt zu beenden, dann öffnete ich eine weitere Konsole und rannte los

react-native start

und dann öffnete ich die App erneut von meinem Gerät und es begann wieder zu funktionieren.

BEARBEITEN: Wenn Sie ein Android-Gerät über USB verwenden und es vom Computer getrennt haben oder der Computer in den Ruhezustand versetzt wurde, müssen Sie möglicherweise zuerst starten

adb reverse tcp:8081 tcp:8081
106
Felipe

Ich habe gerade diesen Fehler erhalten. Folgendes habe ich zu beheben: Ich habe Dismiss ausgewählt, bin in das Entwicklermenü gegangen, dann Dev Settings, Wählen Sie Debug server Host & port for device aus. Ich fügte die IP-Adresse und den Port meines Computers hinzu: 192.168.0.xx:8xxx in Ihrem WLAN-Netzwerk. Der Port ist normalerweise :8081

Nachdem ich das getan hatte, lief alles gut. Wenn Sie sich im dev-Menü befinden, denken Sie daran, Enable Live Reload und Debug JS Remotely auszuwählen. Dies erleichtert Ihnen das Debuggen erheblich.

27
cube

Das hat bei mir funktioniert (nachdem ich jede andere Lösung ausprobiert hatte ...):

adb reverse tcp:8081 tcp:8081 innerhalb von \Android\sdk\platform-tools ausführen

22
Chaim Salzer

Ich bekam das auch, als ich zum ersten Mal mit React Native mit einem physischen Gerät anfing. Wenn dies der Fall ist, müssen Sie einige zusätzliche Schritte unternehmen, bevor Sie loslegen können. In den "Dev-Einstellungen" von React Native müssen Sie einige Informationen zu Ihrem Entwicklungscomputer eingeben. 

Wenn Sie den Fehler sehen, schütteln Sie Ihr Gerät. Ein Dialogfeld wird angezeigt. Die letzte Option lautet 'Dev Settings'. Wählen Sie 'Debug Server Hot & Port for Device' und geben Sie Ihre lokale IP-Adresse und den verwendeten Port ein (normalerweise 8081).

Siehe den letzten Absatz von https://facebook.github.io/react-native/docs/running-on-device-Android.html

16
Richh94

Wenn keine der Lösungen für Sie funktioniert, versuchen Sie Folgendes: 

Ich fand heraus, dass mein <root>/Android/app/build/intermediates/assets/debug-Ordner leer war, und durch die Ausführung von cd Android && ./gradlew assembleDebug wurden nicht die erforderlichen Dateien erstellt, die später vom Javascript-Thread in unseren reaktiven nativen Apps verwendet werden.

Ich habe den folgenden Befehl manuell ausgeführt, den der Befehl debug build idealerweise erstellt haben sollte.

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

Nachdem ich diese Befehle ausgeführt habe, habe ich zwei Bundle-Dateien in diesem Verzeichnis gefunden <root>/Android/app/build/intermediates/assets/debug

Und dann lief ich wieder cd Android && ./gradlew installDebug meine App funktionierte wieder.

Werde mehr debuggen und würde das aktualisieren, was eigentlich scheitert.

7
Sumit Kushwaha

Verbinden Sie Ihr Gerät in einem separaten - Terminal mit dem Computer und führen Sie die folgenden Befehle aus:

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

Anwendung terminal:

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

Es ist wenig zu spät, aber das funktioniert wirklich für mich.

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

Mit dem ersten Befehl wird apk für Android erstellt und auf Ihrem Gerät bereitgestellt, sofern eine Verbindung besteht. Wenn Sie die App öffnen, wird ein roter Bildschirm mit Fehlern angezeigt. Führen Sie dann den zweiten Befehl aus, der Packager ausführt und ein App-Bundle für Sie erstellt.

5
Shamsher
  1. starten Sie die Genymotion erneut
  2. react-native run-Android ausführen 
  3. das Problem wurde gelöst
5
Yang

Versuchen Sie diesen Befehl im Terminal und laden Sie ihn erneut. Es hat für mich funktioniert

adb reverse tcp: 8081 tcp: 8081

5
Praneeth

siehe issue :

1.reaktiver Start

2.Klicken Sie auf Reload(R,R) auf Ihrem Gerät.

5
XYz Amos

Ich hatte dieselbe Ausnahme auf dem Gerät Z3 Compact D5803 - 6.0.1

Ich habe die .buckconfig-Datei geöffnet und die Zeile geändert:

target = Google Inc.:Google APIs:23

zu

target = Google Inc.:Google APIs:24

Weil ich in SDK Manager gesehen habe, dass Android 6.X API-Level 24 hat.

4
laszl0

Für mich ist es, weil adb nicht in der PATH war. Es befindet sich /Users/man/Library/Android/sdk/platform-tools für mich, es könnte für Sie irgendwo anders sein, aber suchen Sie es trotzdem und fügen Sie es Ihrem Pfad hinzu, um zu sehen, ob das hilft.

3
h--n

Da Sie Android <5.0 verwenden, können Sie nicht die Standardmethode adb reverse verwenden. Facebook hat jedoch offizielle Dokumentation hinzugefügt, um eine Verbindung zum Entwicklungsserver über Wi-Fi herzustellen , die Ihre Version unterstützt. Zitieren der Anweisungen für MacOS, aber sie haben auch für Linux und Windows:

Methode 2: Verbindung über WLAN 

Sie können auch über Wi-Fi eine Verbindung zum Entwicklungsserver herstellen. Sie müssen die App zunächst mithilfe eines USB-Kabels auf Ihrem Gerät installieren. Sobald dies geschehen ist, können Sie mithilfe der folgenden Anweisungen drahtlos debuggen. Sie benötigen die aktuelle IP-Adresse Ihres Entwicklungscomputers, bevor Sie fortfahren.

Sie finden die IP-Adresse in den Systemeinstellungen → Netzwerk.

Stellen Sie sicher, dass sich Ihr Laptop und Ihr Telefon im selben Wi-Fi-Netzwerk befinden. Öffnen Sie Ihre React Native-App auf Ihrem Gerät . Sie sehen einen roten Bildschirm mit einem Fehler. Das ist in Ordnung. Die folgenden Schritte beheben das . Öffnen Sie das In-App-Entwicklermenü . Gehen Sie zu Dev-Einstellungen → Debug-Server-Host für Gerät . Geben Sie die IP-Adresse Ihres Computers und den Port des lokalen Dev-Servers ein (z. B. 10.0.1.1:8081). Gehen Sie zurück zum Entwicklermenü und wählen Sie JS neu laden.

3
Jesús Carrera

Es hatte dieses Problem "zufällig" und es dauerte einige Zeit, bis ich wusste, was in meinem Szenario falsch war.

Nachdem ich auf React-native-cli 2.0.1 aktualisiert habe, gab es eine Meldungsausgabe an das Protokoll, die mir dabei half, die Ursache zu finden:

JS-Server wird nicht erkannt, der Build wird fortgesetzt ...

Nachdem ich einige Links recherchiert hatte, fand ich diese:

JS-Server kann nicht erkannt werden

Da ich unter Windows bin, habe ich netstat ausgeführt und herausgefunden, dass mein VLC-Player auch auf Port 8081 ausgeführt wurde, wodurch das Problem verursacht wurde. Wenn ich also den vlc-Server vor dem reaktionsseitigen Server gestartet habe, würde es in meinem Fall nicht funktionieren.

Die gleiche Protokollnachricht wurde in früheren Versionen des React-native-cli nicht ausgegeben, sodass sie im Hintergrund fehlschlägt.

TL, DR: Überprüfen Sie, ob auf dem gleichen Port wie der Paketmanager etwas ausgeführt wird (standardmäßig 8081).

Mein Problem war, dass ich meine AndroidManifest.xml-Datei durchging und die Zeile entfernt hatte

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

weil meine app kein internet braucht. Die native Debugging-App von rea benötigt jedoch einen Internetzugang (um auf den Packager zuzugreifen) Whoops. :)

2
SpencerL

Die meisten von uns stehen zum ersten Mal vor diesem Problem, wenn wir anfangen, das native Projekt # 1 zu reagieren.

Einige einfache Schritte haben mein Problem gelöst: 

Ich habe ein Beispielprojekt mit folgendem Befehl erstellt: Reag-native init ReactProject1

Lösung

Die Lösung besteht darin, local-cli\runAndroid\adb.js dabei zu unterstützen, adb.exe auf dieselbe Weise wie local-cli\runAndroid\runAndroid.js zu finden:

suchen Sie die Ersetzen-Anweisung unter Projektname (was auch immer Sie angegeben haben)\node_modules\reag-native\local-cli\runAndroid

Ersetzen Sie:

const devicesResult = child_process.execSync ('adb devices');

Durch:

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

nach dem Austausch führen Sie einfach reaktives run-Android in Ihrem cmd aus, es wird apk bündeln und zunächst versuchen, das js-bündel lokal auf Ihrem Gerät zu installieren. (Erfolg gehabt)

1
DeepakPanwar

Am Ende musste ich den Port öffnen, den ich verwendete (standardmäßig 8081). Unter Linux können Sie Folgendes tun

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

Sie können testen, ob Sie dies tatsächlich tun müssen. Navigieren Sie auf Ihrem Android-Gerät einfach zu Ihrem Dev-Server in Chrome. Wenn es nicht antwortet, ist dies möglicherweise das, was Sie brauchen. Wenn es antwortet, hilft Ihnen das nicht weiter.

1
Anthony Naddeo

Bitte überprüfen Sie, ob Sie beim Ausführen von react-native run-Android: adb server version (XX) doesn't match this client (XX); killing... folgenden Fehler haben

Stellen Sie in diesem Fall sicher, dass /usr/local/opt/Android-sdk/platform-tools/adb und /usr/local/bin/adb auf die gleiche adb zeigen.

In meinem Fall wurde einer auf /Users/sd/Library/Android/sdk/platform-tools/adb (Android SDK) hingewiesen, ein anderer wurde auf /usr/local/Caskroom/Android-platform-tools/26.0.2/platform-tools/adb (Homebrew) hingewiesen.

Und das Problem wurde behoben, nachdem beide auf /Users/sd/Library/Android/sdk/platform-tools/adb (Android SDK) hingewiesen hatten.

1

Bei mir war Side-Sync aktiviert und aktiv. Durch das Schließen wurde das Problem sofort behoben. Es kann sich lohnen, diese oder jede andere Kommunikation zwischen PC und Gerät zu schließen

1
lee_dabiker

Ich hatte das gleiche Problem. Wann habe ich ein reaktives Projekt über erstellt awesomeProject erstellen-reagieren-native-app In der Expo-App am Telefon hat es gut funktioniert. Danach wollte ich dieses Schnellstartprojekt für die Entwicklung meines Projekts verwenden und erhielt den gleichen Fehler wie Sie. 

Nach einigen Recherchen finde ich heraus, dass es besser ist, ein neues Projekt mit zu beginnen reaktiver init AwesomeProject (mit allen Einstellungen in reaktiven Dokumenten) Führen Sie dann den folgenden Befehl aus:

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/

Das sollte das Ding mit Bundle beheben (--dev false zeigt keine Warnungen an)

Alles was Sie tun müssen, damit die App auf Ihrem virtuellen/realen Gerät ausgeführt werden kann, ist: 

react-native run-Android

Und es sollte gut funktionieren. Zumindest hat es bei mir funktioniert.

1

Ich habe auch diesen Fehler bekommen, wirklich verwirrt. cuz alle Antworten funktionieren nicht . Direkt nach add adb to path.

1
Bruce Lee

Für mich war das Problem, dass "adb" nicht erkannt wurde - check this answer.

Um dies zu beheben, fügen Sie C:\Users\USERNAME\AppData\Local\Android\sdk\platform-tools zu den Umgebungsvariablen hinzu

1
niceman

Mein Weg ist:

react-native start

Danach in Ihrem Gerät mit:

click to Reload.

Siehe in der Konsole Reaktiv-native, es werden Js-Bundle-Daten abgerufen.

1
ThienSuBS

Starten Sie einfach Ihr System oder Ihr komplettes Bundle neu und das Problem ist möglicherweise behoben.

0
Vinayak Gupta

Versuchen Sie, den Cache zu leeren

reaktiver Start --reset-cache

0
Hitesh Sahu

Ich fand, dass ich auch ein hinzufügen musste 

reaktives Upgrade

um die Anwendung korrekt auszuführen.

0
M. Solle

Ich habe viele der Vorschläge oben/unten ausprobiert, aber letztendlich war das Problem, mit dem ich konfrontiert war, ein Berechtigungsproblem mit Watchman, das zuvor mit Homebrew installiert wurde. Wenn Sie sich beim Versuch, den Emulator zu verwenden, die Terminalmeldungen anzeigen lassen und beim Watchman die Fehlermeldung "Permission denied" mit dieser Meldung "BatchedBridge konnte nicht erhalten" auf Ihrem Emulator angezeigt werden, gehen Sie wie folgt vor:

Wechseln Sie in Ihr /Users/<username>/Library/LaunchAgents-Verzeichnis und ändern Sie die Berechtigungseinstellungen, damit Ihr Benutzer Lesen und Schreiben kann. Dies ist unabhängig davon, ob Sie tatsächlich eine com.github.facebook.watchman.plist-Datei dort haben.

0
alexfigtree

Einfachster Weg!  

  • Stoppen Sie den Server und beenden Sie den Projektaufbau. 
  • Öffnen Sie ein Terminal "Node.js" .
    • Navigieren Sie zu einem Ordner mit 'reaktionsnahem' Projekt.
    • Geben Sie 'reaktiver Start' ein - Starten Sie den reaktiven systemeigenen Server manuell.
  • Gehen Sie zu Ihrem Code Editor-Terminal und geben Sie "Reactative-Lauf-Android" ein.

Du bist gut zu gehen!

0
Jason

Ich habe das gleiche Problem bekommen, aber es war ein dummer Fehler von mir ... 

Von Android Studio habe ich installDebug/installRelease gradle script von app projet anstelle von root projet gestartet.

0
Martin Choraine