Ich versuche, AwesomeProject auf meinem Nexus5 (Android 5.1.1) auszuführen.
Ich kann das Projekt erstellen und auf dem Gerät installieren. Aber wenn ich es starte, wird auf einem roten Bildschirm angezeigt
JS-Bundle kann nicht heruntergeladen werden. Haben Sie vergessen, den Entwicklungsserver zu starten oder Ihr Gerät anzuschließen?
In reaktivem nativem iOS kann ich jsbundle offline laden. Wie kann ich dasselbe für Android tun? (Oder zumindest, wo kann ich die Serveradresse konfigurieren?)
Aktualisieren
Führen Sie zum Ausführen mit einem lokalen Server die folgenden Befehle in Ihrem reaktionsnativen Projektstammverzeichnis aus
react-native start > /dev/null 2>&1 &
adb reverse tcp:8081 tcp:8081
Bitte werfen Sie einen Blick auf die Antwort von dsissitka, um weitere Einzelheiten zu erfahren.
Um ohne Server zu laufen, bündeln Sie die jsfile in der apk, indem Sie Folgendes ausführen:
- Erstellen Sie einen Assets-Ordner unter
android/app/src/main
curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
Bitte werfen Sie einen Blick auf die Antwort von kzzzf für weitere Details.
android
react-native
Matthew
quelle
quelle
adb reverse
es nicht unterstützt wird?adb reverse tcp:8081 tcp:8081
Sie ADB 1.0.32 Version benötigen, um ausführen zu können ,reverse
Option ist nicht in 1.0.31Antworten:
So bündeln Sie die JS-Datei in Ihre apk, während auf Ihrem Server (
react-native start
) das Bundle im Assets-Verzeichnis Ihrer App ausgeführt wird:Mit der nächsten Version (0.12) werden wir den
react-native bundle
Befehl korrigieren, mit Android-Projekten wie erwartet zu arbeiten.quelle
Folgendes hat es für mich unter Ubuntu 14.04 funktioniert:
Update : Siehe
Update 2 : @scgough Wir haben diesen Fehler erhalten, weil React Native (RN) kein JavaScript vom Entwickler-Server abrufen konnte, der auf unseren Workstations ausgeführt wird. Sie können hier sehen, warum dies passiert:
https://github.com/facebook/react-native/blob/42eb5464fd8a65ed84b799de5d4dc225349449be/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java#L116-
Wenn Ihre RN-App erkennt, dass Sie Genymotion oder den Emulator verwenden, versucht sie, das JavaScript von GENYMOTION_LOCALHOST (10.0.3.2) oder EMULATOR_LOCALHOST (10.0.2.2) abzurufen. Andernfalls wird davon ausgegangen, dass Sie ein Gerät verwenden, und es wird versucht, das JavaScript von DEVICE_LOCALHOST (localhost) abzurufen. Das Problem ist, dass der Entwicklungsserver auf dem lokalen Host Ihrer Workstation und nicht auf dem Gerät ausgeführt wird. Damit es funktioniert, müssen Sie entweder:
quelle
Ok, ich glaube, ich habe herausgefunden, worum es hier geht. Es hatte mit der Version von zu tun, die
watchman
ich lief.Führen Sie in einer neuen Shell Folgendes aus
brew update
:brew unlink watchman
dann:brew install watchman
Jetzt können Sie
react-native start
von Ihrem Projektordner aus ausführenIch lasse diese Shell geöffnet, erstelle ein neues Shell-Fenster und starte:
react-native run-android
aus meinem Projektordner. Mit der Welt ist alles in Ordnung.ps. Ich war ursprünglich auf Version 3.2 von Watchman. Dies hat mich auf 3.7 aktualisiert.
pps. Ich bin neu in diesem Bereich, daher ist dies möglicherweise nicht der schnellste Weg zur Lösung, aber es hat bei mir funktioniert.
* MEHR INFO FÜR DAS LAUFEN / DEBUGGEN EINES GERÄTS *
Wenn Sie Ihre App auf Ihrem Android-Gerät anstatt auf einem Emulater bereitstellen, wird möglicherweise ein roter Todesbildschirm mit einem Fehler angezeigt
Unable to load JS Bundle
. Sie müssen den Debug-Server für Ihr Gerät so einstellen, dass Ihr Computer reagiert ... entweder seinen Namen oder seine IP-Adresse.Menu
GerätetasteDev Settings
Debug server host for device
oderChange Bundle Location
192.168.1.10:8081
Weitere Informationen: http://facebook.github.io/react-native/docs/running-on-device-android.html
quelle
brew uninstall watchman
bevor es die neueste Version für mich installieren würde.Führen Sie in Ihrem Projektverzeichnis aus
Es gibt Folgendes aus:
quelle
react-native run-android
aus dem Projektordner aus. Es baut OK im Terminal, aber sobald die App auf meinem Gerät geöffnet wird, werde ich rotUnable to download JS bundle
Eine einfache Lösung, die für mich mit Ubuntu 14.04 funktioniert.
Der Emulator (bereits gestartet) gibt Folgendes zurück: JS-Bundle kann nicht heruntergeladen werden; Starten Sie den JS-Server erneut:
Klicken Sie im Emulator auf JS neu laden. Es hat bei mir funktioniert. Hoffe es wird helfen
quelle
In der App auf Android habe ich Menü (Befehl + M in Genymotion) -> Dev Settings -> Debug Server Host & Port für Gerät geöffnet
Setzen Sie den Wert auf: localhost: 8081
Es hat bei mir funktioniert.
quelle
Nachdem ich hier eine Kombination der Antworten ausprobiert habe, funktioniert dies für mich.
Ich benutze Genymotion als meinen Emulator.
1 Starten Sie den Genymotion-Emulator.
2 Von einem Terminal
3 Laden Sie vom Emulator neu.
Es lädt!
Ich kann jetzt anfangen mich zu entwickeln.
quelle
Löschen Sie die App von Ihrem Handy! Ich habe mehrere Schritte versucht, aber das hat es schließlich geschafft.
$ react-native run-android
Dev Settings
und dann zuDebug server host & port for device
. Geben Sie dort Ihre Server-IP (IP Ihres Computers) und Ihren Host ein8081
, z192.168.50.35:8081
. Auf einem Mac finden Sie die IP Ihres Computers unterSystem Preferences -> Network -> Advanced... -> TCP/IP -> IPv4 Address
.Reload JS
.quelle
Anscheinend wurde adb reverse in Android 5.0 eingeführt.
Immer "Fehler: geschlossen" bei "adb reverse"
Ich denke, wir müssen mit der Antwort von kzzzf weitermachen
quelle
Ich habe nicht genug Ruf, um einen Kommentar abzugeben, aber dies bezieht sich auf die Antwort von dsissitka. Es funktioniert auch unter Windows 10.
Um es noch einmal zu wiederholen, sind die Befehle:
quelle
Hier sind die einfachen Schritte, um Ihre App auf Android (Release) auszuführen:
1. Wechseln Sie zu Ihrem Anwendungsstamm.
2. Führen Sie diesen Befehl aus.
Alle Ihre Dateien werden kopiert.
3. Erstellen Sie eine signierte APK.
Öffnen Sie Android Studio.
Erstellen> Signierte APK generieren> [Erforderliche Details eingeben, Tastendruck muss vor diesem Schritt generiert werden]
Ihre APK sollte fehlerfrei generiert werden. Installieren Sie auf Ihrem Gerät und dies sollte ohne Probleme funktionieren.
Sie können auch Ihr Gerät anschließen und direkt auf das Run-Symbol in Android Studio klicken, um es zu testen.
Tastenanschlag erzeugen:
Gehen Sie zu C: \ Programme \ Java \ jdkx.x.x_x \ bin
Lauf
Sie werden wahrscheinlich aufgefordert, einige Details einzugeben. Tun Sie es und Sie haben Ihre Keystroke-Datei ( my_private_key.keystore ), mit der Sie Ihre apk signieren können.
quelle
react-native bundle
ich Fehler bekommen habe: Doppelte RessourcenIch habe dies unter Linux erhalten, nachdem ich den
react-native run-android
Prozess abgebrochen hatte . Der Knotenserver wird anscheinend noch ausgeführt. Wenn Sie ihn das nächste Mal ausführen, wird er nicht ordnungsgemäß ausgeführt und Ihre App kann keine Verbindung herstellen.Die Lösung hier besteht darin, den Knotenprozess zu beenden, der in einem Xterm ausgeführt wird, den Sie beenden können, indem
ctrl-c
Sie dieses Fenster öffnen (einfacher), oder Sie können ihnlsof -n -i4TCP:8081
dann verwendenkill -9 PID
.Dann
react-native run-android
wieder laufen .quelle
Überprüfen Sie Ihre WLAN-Verbindung.
Eine andere Möglichkeit könnte sein, dass Sie entweder nicht mit WLAN verbunden sind, mit dem falschen Netzwerk verbunden sind oder die IP-Adresse in Ihren Entwicklungseinstellungen falsch ist. Aus irgendeinem Grund trennte sich mein Android vom WLAN und ich bekam diesen Fehler unwissentlich.
quelle
Läuft auf dem Gerät
Ich habe eine andere Antwort gefunden.
quelle
Ein Update
Jetzt unter Windows muss kein reaktionsnativer Start mehr ausgeführt werden. Der Packager wird automatisch ausgeführt.
quelle
Eine wichtige Sache, um zu überprüfen, ob bisher niemand etwas erwähnt hat: Überprüfen Sie Ihre lokale Firewall und stellen Sie sicher, dass sie ausgeschaltet ist .
Siehe meine Antwort hier: https://stackoverflow.com/a/41400708/1459275
quelle
Ich verwende nur Ubuntu und Android und konnte es nicht zum Laufen bringen. Ich habe eine wirklich einfache Lösung gefunden, die darin besteht, Ihre Datei package.json zu aktualisieren und diese Zeilen zu ändern:
zu
Und dann führen Sie den Server durch Eingabe aus
Dadurch wird sichergestellt, dass das Android-Gerät auf Ihrem Computer nach dem Knotenserver sucht und nicht lokal auf dem Telefon.
quelle
Die erste Frage betraf das erneute Laden der Anwendung in ein physisches Gerät.
Wenn Sie die Anwendung auf einem physischen Gerät (dh über adb) debuggen, können Sie das JS-Bundle neu laden, indem Sie oben links auf die Schaltfläche "Aktion" Ihres Geräts klicken. Dies öffnet das Optionsmenü (Reload, JS aus der Ferne debuggen ...).
Hoffe das hilft.
quelle
Dieser Fehler kann leicht durch die folgenden Schritte behoben werden:
quelle
adb reverse tcp:8081 tcp:8081
im Stammordner meiner App ausgeführt werden?Sie können den Anweisungen auf der offiziellen Seite folgen , um dieses Problem zu beheben. Dieses Problem tritt auf einem realen Gerät auf, da sich das JS-Bundle auf Ihrem Entwicklungssystem befindet und die App auf Ihrem realen Gerät den Standort nicht kennt.
quelle
In der neuen React Native (mit Sicherheit 0.59) befindet sich die Debug-Konfiguration
android/app/src/debug/res/xml/react_native_config.xml
quelle
Starten Sie die beiden Terminals auf dem gleichen und 1. Terminal Run React-Native Start und Second Terminal React-Native Run-Android Dieses Problem wird auf einfache Weise gelöst. Und viel Glück
quelle
Hey, ich hatte dieses Problem mit meinem reaktionsnativen Bare-Projekt. Der IOS-Simulator funktioniert einwandfrei, aber Android hat mir diesen Fehler immer wieder gegeben. Hier ist eine mögliche Lösung, die für mich funktioniert hat.
Überprüfen Sie in Schritt 1, ob das ADB-Gerät autorisiert ist, indem Sie es in Ihrem Terminal ausführen: ADB-Geräte
Wenn es nicht autorisiert ist, führen Sie die folgenden Befehle aus
Schritt 2, Sudo AdB Kill-Server Schritt 3, Sudo Adb Start-Server
Überprüfen Sie dann, ob der Befehl adb Geräte eine Liste der an das Emulator-5554-Gerät angeschlossenen Geräte anzeigt
statt nicht autorisiert, wenn es sich um ein Gerät handelt, anstatt nicht autorisiert
Schritt 4: Führen Sie npx react-native run-android aus
Dies hat in meinem Fall funktioniert. Ich hoffe, dies löst Ihr Problem.
quelle
Ich fand das komisch, aber ich habe eine Lösung gefunden. Ich bemerkte, dass mein Projektordner von Zeit zu Zeit schreibgeschützt war und ich ihn nicht von VS speichern konnte. Also habe ich einen Vorschlag gelesen, NPM vom lokalen Benutzer PATH auf die systemweite globale Variable PATH zu übertragen, und es hat wie ein Zauber funktioniert.
quelle
Das Ausführen von npm start aus dem reaktionsnativen Verzeichnis hat für mich funktioniert.
quelle