Beim Versuch, ein reaktives Projekt unter Android 4.4.2 zu erstellen, wird dieser Fehlerbildschirm angezeigt
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.
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
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
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.
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
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
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.
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
Es ist wenig zu spät, aber das funktioniert wirklich für mich.
react-native run-Android
.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.
react-native run-Android
ausführen Versuchen Sie diesen Befehl im Terminal und laden Sie ihn erneut. Es hat für mich funktioniert
adb reverse tcp: 8081 tcp: 8081
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.
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.
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.
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. :)
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)
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.
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.
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
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.
Ich habe auch diesen Fehler bekommen, wirklich verwirrt. cuz alle Antworten funktionieren nicht . Direkt nach add adb to path.
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
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.
Starten Sie einfach Ihr System oder Ihr komplettes Bundle neu und das Problem ist möglicherweise behoben.
Versuchen Sie, den Cache zu leeren
reaktiver Start --reset-cache
Ich fand, dass ich auch ein hinzufügen musste
reaktives Upgrade
um die Anwendung korrekt auszuführen.
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.
Einfachster Weg!
Du bist gut zu gehen!
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.