BITTE LÖSCHEN SIE DIESE VORLAGE NICHT, BEVOR SIE DEN ERSTEN ABSCHNITT GELESEN HABEN.
Es ist ein Problem, mit dem ich konfrontiert bin, während ich das normale Awesome Project auf meinem System ausführe
Wenn Sie mit "Ja" geantwortet haben: Wir gehen davon aus, dass Sie etwa 30 Minuten benötigen, um einen qualitativ hochwertigen Fehlerbericht zu erstellen. Auch wenn dies nach viel erscheinen mag, hilft es uns, Probleme schneller zu beheben, wenn wir uns um sie kümmern. Für Fehlerberichte ist es ERFORDERLICH, den Rest dieser Vorlage auszufüllen, oder das Problem wird geschlossen. Wenn Sie mit „Nein“ geantwortet haben: Wir verwenden GitHub Issues ausschließlich zum Verfolgen von Fehlern in React Native. Wenn Sie Hilfe suchen, finden Sie auf der Community-Seite unter http://facebook.github.io/react-native/support.html verschiedene Ressourcen, die Ihnen beim Einstieg helfen sollten. Jetzt nach unten scrollen!ja
react-native -v
: 0.47.1node -v
:8.2.1npm -v
:4.1.2yarn --version
:Geben Sie dann Folgendes an:
(Schreiben Sie Ihre Schritte hier auf:)
1.Öffnen Sie die Eingabeaufforderung im Administratormodus
2.Befehl ausführen: cd
3.Run-Befehl: React-native init
4.Befehl ausführen: cd
5.Run-Befehl: Reagieren-natives Run-Android
Dadurch wird der Paketserver automatisch auf Port 8081 ausgeführt. Ich kann jedoch nicht über den Browser auf dem Computer und dem Mobiltelefon auf den Paketserver zugreifen.
Ich habe versucht, http://
http://localhost :port
http://127.0.0.1 :port
=> Ich habe sowohl auf dem Handy als auch auf dem Emulator den roten Bildschirm mit der folgenden Meldung erhalten:
Ich habe versucht, das Projekt auf einem echten Gerät und einem Emulator auszuführen. Auf beiden habe ich die Fehlermeldung erhalten: „Das Skript aus den Assets ‚index.android.bundle‘ kann nicht geladen werden.
Beim erneuten Laden erhalte ich die Fehlermeldung: "Verbindung zum Entwicklungsserver konnte nicht hergestellt werden."
Dann habe ich die Host- und Portnummer auf beiden Entwicklungseinstellungen eingestellt und die Fehlermeldung "Verbindung zum Entwicklungsserver konnte nicht hergestellt werden" erhalten.
Es wird erwartet, dass das Projekt auf Emulator und Telefon ohne Fehler ausgeführt wird.
Aber stattdessen habe ich den Fehler bekommen und ich habe es viele Male versucht und ich bekomme den gleichen Fehler wiederholt und im gleichen Muster.
(Fügen Sie den Link zu einem Beispielprojekt und genaue Anweisungen ein, um das Problem zu reproduzieren.)
Immer noch ein Problem mit:
reagieren 16.0.0-alpha.6
RN 0.44.3
Knoten 8.2.1
npm 5.3.0
XCode 8.3.3
iOS 10.3-Simulator
Muss ich also an früheren Versionen davon arbeiten?
Ich treffe das und kann damit nicht umgehen....
etwas falsch mit der neuesten Version?
Läuft der Packager? Sie sollten es sehen, wenn Sie react-native run-android
ausführen. Sie können es auch selbst mit react-native start
starten. Ich würde gerne herausfinden, ob das Problem hier darin besteht, dass der Packager überhaupt nicht startet.
Ja, der Packager läuft. Wenn ich den Befehl „react-native run-android“ ausführe, wird das Fenster „node js“ geöffnet, das besagt, dass der Packager auf 8081 ausgeführt wird, und „Loading Dependency Graph. Done“
Aber wenn ich „ localhost:8081/index.android.js “ im Systembrowser versuche, sehe ich den Fehler „Diese Seite kann nicht erreicht werden“.
Aber wenn ich eine normale Nodejs-API erstelle und sie im Browser teste, wird sie erfolgreich geöffnet.
Ich habe das gleiche Problem. iOS-Simulator funktioniert gut, übrigens
Immer wenn ich versuche, ein neues Projekt in RN zu erstellen, ist es, als ob ich jedes Mal auf eine Wand aus neuen Fehlern stoße.
Nächsten Monat nochmal versuchen, schätze ich...
gleicher Fehler. jemand löst es?
Versuchen Sie zu laufen:
adb reverse tcp:8081 tcp:8081
an Ihrer Eingabeaufforderung und führen Sie Ihr Projekt danach erneut aus.
@ashafizullah : Das habe ich auch versucht; aber immer noch kein Glück.
Tritt bei meinem Gerät auch auf.
Ich habe USB angeschlossen, ADB umgekehrt und Packager läuft.
Wenn Sie den folgenden Link im Browser des Geräts öffnen, wird das Bundle erfolgreich geladen:
http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false
Ich vermute also, dass im Java-Code selbst etwas nicht stimmt.
gibt es dazu eine lösung? Auch ich stecke hier fest. Auf IOS-Projekt funktioniert perfekt
Ich habe das gleiche Problem gesehen, und das alles, weil die Android-App diese Berechtigung nicht hat:
<uses-permission android:name="android.permission.INTERNET" />
Stellen Sie also sicher, dass Ihr Android-Code von Ihrer App aus auf die Remote-URL zugreifen kann.
Ich habe das gleiche Problem kann das niemand lösen?
Ich stehe auch vor dem gleichen Problem, wenn jemand die Lösung findet, bitte posten. Danke.
Ich habe das gleiche Problem, ich mache adb reserviert tcp:8081 tcp:8081 und stelle dann sicher, dass der gleiche Netzwerkcomputer und das gleiche Handy vorhanden sind, und ich mache die Entwicklungseinstellungen IP:8081, konnte aber keine Verbindung zum Entwicklungsserver herstellen, der dieses Problem gelöst hat, sehr danke Sie
Hallo Leute. Ich habe console.dir() in React-Native verwendet und bekomme dieses Verhalten. Und ich denke, dass es normal ist, weil console.dir() eine browser.window-Funktion ist und kein Browser in React-native ist. Nach dem Entfernen von console.dir() hat meine App funktioniert.
Ich habe das gleiche Problem auf einem Mac, gibt es Neuigkeiten?
Ich habe das gleiche Problem beim Gerätetest.
Android 4.1.2
Hallo. Leute, die eine Android-Version unter 5.0 haben, haben Sie versucht, eine WLAN-Verbindung anstelle von USB zu verwenden? Meine App startet normal auf Android 4.3 (Huawei Mediapad T1 8.0), nachdem sie über WLAN verbunden wurde
hatte dieses Problem, für mich stellte sich heraus, dass es sich um Port 8081 handelte, der von postgresSQL verwendet wurde
Ich habe heute das gleiche Problem.
Android 4.4.2 und 6.
Auch hier das gleiche Problem. Passiert jedes Mal, wenn ich meinen Mac nach einer kurzen Ruhezeit wieder öffne. Hat das jemand gelöst?
adb reverse tcp:8081 tcp:8081
- das scheint bei mir nicht zu funktionieren
Mein Fehler wurde behoben, indem ich die Inotify-Limits geändert habe.
Dieser Link half https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
das gleiche Problem, hilf mir
Ich habe auch das gleiche Problem beim Versuch, es von localhost auszuführen. Es funktioniert im Browser und auf dem Emulator, aber nicht auf dem physischen Gerät
Dasselbe Problem hier für Android, sowohl vom Gerät als auch vom Emulator. Scheinbar kann keine Verbindung zum Packager hergestellt werden. Doing the "adb reverse ..." für physisches Gerät. Wird auch auf einem benutzerdefinierten Port ausgeführt, indem Sie "react-native start --port 8088" ausführen und dann die IP- Adresse: 8088 in der Entwicklereinstellung in der App festlegen.
FRAGE: Gibt es eine Möglichkeit, die Verbindung zwischen der App (auf meinem Android-Gerät) und dem Packager, der auf einem Windows-PC ausgeführt wird, zu finden?
UPDATE: Das Ausführen von "adb reverse --list" zeigte, dass ich zwei umgekehrte Einträge hatte. Es scheint, nachdem ich diese Dinge korrigiert habe, hat es funktioniert. Ich habe immer noch nur eine "weiße Seite", aber ich denke, das ist ein anderes Problem.
Gleiches Problem mit Android, iOS funktioniert...
wie kann das passieren
Ich bin auch auf das gleiche Problem gestoßen,
aber vorher funktioniert bei mir alles einwandfrei
Dann bekomme ich eine Endlosschleife, die meinen Desktop ziemlich verzögert macht
Also habe ich beschlossen, den Emulator und den Metro-Bundler, den ich von React-Native Start bekomme, zu schließen
Ich habe diesen Code unten ausprobiert, aber überhaupt kein Glück
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
Stand vor dem gleichen Problem und verschwendete ein paar Tage dahinter. Es stellte sich heraus, dass der Standardport 8081 auf meinem Computer blockiert war. Den Port gemäß den Anweisungen hier geändert https://github.com/facebook/react-native/issues/10715 und jetzt funktioniert es.
Können Sie versuchen, diese URL im Webbrowser des Geräts zu öffnen?
http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false
@kevinresol , wenn der Paketmanager sagt, dass er auf Port 8081 gestartet wurde und Sie nicht über den Browser darauf zugreifen können, wird der Port höchstwahrscheinlich von Ihrer Firewall blockiert. Versuchen Sie einfach, den Standardport zu ändern, oder sehen Sie, ob Sie den Port öffnen können.
Wie in meinem vorherigen Beitrag erwähnt, kann ich über den Gerätebrowser auf das Bundle zugreifen.
Ich habe genau das gleiche Problem wie @kevinresol. Ich kann das Bundle im Browser sehen, aber der Fehler bleibt bestehen. Ich bin auf einem Emulator, aber ich habe immer noch adb reverse versucht, aber kein Glück.
@bruno02100 Wenn Sie Windows verwenden und über WLAN zugreifen, versuchen Sie, Ihre Firewall zu deaktivieren. Sehen Sie, ob das das Problem löst.
@jerrykurian Ich bin auf einem Mac, auf dem der Android-Emulator läuft. Meine Firewall ist bereits ausgeschaltet. Es ist wirklich seltsam.
Nach der Konfiguration Debug server host & port for device
bis 192.168.x.x:8081
in Dev Settings
(Sharing des Telefons, es öffnet sich das Menü)
Es ist Arbeit für mich
PS: Es muss KEIN Bundle manuell erstellt werden, es wird automatisch erstellt, wenn die Verbindung erfolgreich hergestellt wurde
Ich denke, dass jedes WLAN-Problem oder jede WLAN-Lösung kein Thema ist. OP sprach über die Verbindung zu localhost
über USB mit adb reverse
Mir ist aufgefallen, dass dieser Fehler erst auftritt, wenn der Emulator einige Zeit läuft. Jedes Mal, wenn dieser Fehler auftritt, starte ich einfach meinen Emulator neu und führe React-Native Run-Android aus. Es ist wirklich ärgerlich, aber ich habe nicht viel Zeit, mich darum zu kümmern, also muss es reichen.
Ich kann mich nach dem Build über Android Studios mit dem Entwicklungsserver verbinden, aber wenn ich den Code aktualisiere, wenn ich den Code bearbeite, kann mein Gerät oder Emulator keine Verbindung zum Server herstellen.
Meine Abhängigkeiten
"reagieren": "16.0.0",
"react-native": "0.50.4",
Ich kann bestätigen, dass die Lösung von @xlebenny zum manuellen Festlegen von Debug-Server-Host und -Port auf dem Gerät bei einem frisch ausgeworfenen CRNA-Projekt für mich funktioniert hat.
Schritt für Schritt zum Auswerfen und Ausführen einer CRNA auf Android
Im Terminal:
create-react-native-app myApp
cd myApp
yarn run eject
(Ich habe die Standardoptionen "reguläres React Native-Projekt" verwendet)react-native run-android
(Jetzt sollte die App kompiliert und auf dem Telefon installiert werden)
Am Telefon:
index.js
" im Metro Bundler sehen (die beim Ausführen react-native run-android
geöffnet wurde).Live Reload (wenn sich Quelldateien ändern) ist weiterhin möglich – schütteln Sie einfach das Telefon und tippen Sie auf „Live Reload aktivieren“.
@ashafizullah könnten Sie erklären, wie dieser Befehl das Problem gelöst hat. Danke
@plong0 hat es für mich gelöst!
Wie von @bruno02100 gezeigt , scheint dieser Fehler aufzutreten, wenn das Gerät über einen längeren Zeitraum geöffnet wird. Das Deaktivieren des Schnellstarts in der Emulatoreinstellung hat es für mich gelöst 👍
Geben Sie adb shell ein und sehen Sie, ob es auf Ihrem lokalen Server lauscht? Richten Sie die IP und den Port des Servers in den Entwicklereinstellungen ein. Das sollte behoben werden.
@plong0 danke für die Hilfe, aber es hat mir nicht geholfen.
Ich kann meine App nicht auf einem Android-Gerät mit MAC ausführen.
@ramintagizade - wie überprüfe ich, ob die App auf meinem lokalen Server lauscht? wie lautet der befehl:
adb shell [command]
?
Ja, ADB-Shell und Netstat.
basierend auf diesem http://facebook.github.io/react-native/docs/running-on-device.html
Greifen Sie von Ihrem Browser aus auf Ihre lokale IP-Adresse (z. B. http://192.168.43.188:8081/) zu und vergewissern Sie sich, dass sie angezeigt wird
React Native Packager läuft.
Dokumentation besuchen
Greifen Sie dann auf die Entwicklereinstellungen in Ihrem Emulator zu:
Für Mac-Benutzer können Sie die folgenden Schritte ausführen:
Schritt 1: Führen Sie „adb reverse tcp:8081 tcp:8081 “ aus
Schritt 2: Drücken Sie "Befehl m"
Schritt 3: Drücken Sie auf „Dev Settings“
Schritt 4: Drücken Sie „Debug server host & port for device“
Schritt 5: Geben Sie im Popup-Fenster „10.0.2.2:${port_id}“ im Abschnitt „port_id“ ein und verwenden Sie den Port, auf dem Sie Ihre Anwendung ausführen.
Schritt 6: Führen Sie nun „react-native run-android“ aus
Wenn Sie versuchen, die App auf Ihrem physischen Android-Gerät über WLAN mit einem Windows-Computer zu debuggen, kann das Gerät möglicherweise nicht auf den Port Ihres PCs oder Laptops zugreifen.
Sie müssen den Port zugänglich machen. Dies umfasst zwei Schritte:
1. Erstellen Sie zuerst eine Regel in der Firewall. Befolgen Sie dazu die folgenden Schritte:
```
Ausführen-Dialog öffnen
-geben Sie wf.msc ein
-Klicken Sie auf eingehende Regeln
-Klicken Sie auf der rechten Seite auf neue Regel
-Wählen Sie den Port aus dem Popup-Menü und klicken Sie auf „Weiter“.
- TCP-Port und bestimmte lokale Ports auswählen und die Portnummer wie 8081 (Standard) eingeben
- Erlaube die Verbindung
-Wählen Sie alle im Profilbereich aus
-Geben Sie einen geeigneten Namen und eine Beschreibung
-Klicken Sie auf Fertig
Sie können loslegen, versuchen Sie jetzt, React-Native Run-Android auszuführen.
Hatte ein ähnliches Problem, obwohl ich später feststellte, dass mein emuliertes Gerät (Android) überhaupt keine Internet- (oder Netzwerk-) Verbindung hatte. Es hatte überhaupt kein WiFi- oder LTE-Symbol. Ein Neustart des Emulators löste das Problem nicht, aber das Versetzen in den Flugzeugmodus und das erneute Ausschalten des Flugzeugmodus löste es. Könnte in meinem Fall ein allgemeiner Android-Fehler sein, der die Netzwerkverbindung verliert.
Wir sind auf dieses Problem gestoßen. Um dies zu beheben, ist die Lösung unten einfach.
Grundsätzlich weist dieser Fehler darauf hin, dass Ihr aktueller Build aus Gründen wie Codeproblem oder Abhängigkeitsproblem fehlgeschlagen ist.
Ich bin mir nicht sicher, was mein Problem mit Android-Emulatoren unter macOS verursacht hat. Vielleicht neue Android AVDs einrichten oder verschiedene Android Studio-Updates installieren?
Dieser Befehl hing:
watchman watch-del-all
Das hat das Problem bei mir behoben:
````
brauen Watchman deinstallieren
Wächter brauen installieren
Wächter Watch-del-all
````
Ich konnte dieses Problem lösen, indem ich den Emulator endlich neu startete.
Endlich habe ich mein Problem gefunden.
In meinem Fall war es für meine Emulator-Proxy-Einstellung.
Gehen Sie einfach zu den Emulatoreinstellungen und stellen Sie keinen Proxy ein.
Hoffe es kann helfen
Hallo zusammen,
Ich habe das gleiche Problem festgestellt, als ich in der Windows-Umgebung ausgeführt und mit dem Android-Simulator simuliert habe.
Nach einigem Versuch und Irrtum habe ich die Lösung wie folgt gefunden:
1>> Ändern Sie den Standardport in "node_modules\react-native\local-cliserverserver.js":
process.env.RCT_METRO_PORT || 8081
zu
Standard: process.env.RCT_METRO_PORT || 9088
wenn der Port blockiert oder an eine andere Anwendung vergeben wurde.
Hinweis : Sie können eine beliebige Portnummer wählen, ich habe 9088 gewählt
2>> Führen Sie den Befehl „react-native run-android --port 9088“ aus (geben Sie hier Ihre Portnummer ein). Dieser Port wird an das laufende adb gesendet, sodass sowohl Server als auch adb denselben Port haben.
3>> Drücken Sie jetzt im Android Studio-Simulator Strg+m, um zu „ Dev Setting “ zu gehen, wählen Sie dann Debug Server Port & Host für Device , stellen Sie „ localhost:9088 “ ein.
4>> Öffnen Sie die Entwicklerkonsole in Chrome mit der URL http://localhost :9088/debugger-ui/
Jetzt beginnt es mit dem Laden der Änderungen, die Sie in Ihrer Anwendung vornehmen.
Viel Spaß beim Programmieren :)
Danke, dass du das gepostet hast! Anscheinend verwenden Sie nicht die neueste Version von React Native, v0.53.0, die im Januar 2018 veröffentlicht wurde. Können Sie sicherstellen, dass dieses Problem in der neuesten Version noch reproduziert werden kann?
Ich werde dies schließen, aber bitte zögern Sie nicht, ein neues Problem zu eröffnen, wenn Sie bestätigen können, dass dies immer noch ein Problem in v0.53.0 oder neuer ist.
Wie Sie beitragen können • Was Sie von Betreuern erwarten können
Ja, ich verwende "react-native": "0.53.0".
Dieses Problem trat jedoch auf, als ich den internen Unternehmensproxy verwendete. Möglicherweise sind einige Ports blockiert oder werden von Unternehmen verwendet. Also habe ich diesen Weg zur Lösung verwendet. Und hier gepostet, damit andere dieses Problem lösen können.
Dasselbe Problem auf einem echten Android-Gerät. Version 5.1.1
Öffnen Sie einfach die Eingabeaufforderung und gehen Sie zum Projektverzeichnis, geben Sie einfach „Garn“ ein und drücken Sie die Eingabetaste. Alles wird in Ordnung sein
@ashafizullah seine Lösung funktioniert!!!!
Ob es sich um einen Simulator oder ein echtes Gerät handelt, für Android gehen Sie einfach wie folgt vor:
@Alijaaan dasselbe Problem, das ich anscheinend hatte. Danke!
Die einzige Lösung, die ich gefunden habe, besteht darin, von Android Studio AVD Manager aus Ihren aktuellen Emulator zu entfernen und einen neuen hinzuzufügen. Alle beginnen wieder zu arbeiten.
Vielen Dank @Alijaaan
Es wurde die Proxy-Einstellung von Android Studio verwendet.
Ich habe das Häkchen bei "Android Studio-Proxy-Einstellung verwenden" entfernt und dann "Kein Proxy" ausgewählt. Alles ist jetzt ok.
Der Kommentar von @esutton hat mein Problem gelöst.
BTW Watchman ist meine Lieblingssoftware. Ich war immer froh, meinen Tag für ein paar Stunden zu unterbrechen, um zufällige RN-Probleme aufzuspüren und zu erkennen, dass ich nur watchman watch-del-all
ausführen muss. Jetzt hängt sogar dieser Befehl und wir müssen ihn gelegentlich neu installieren, ich bin ein noch glücklicherer Entwickler.
React-native run-android --port 9088 hat bei mir funktioniert. Danke @Louies89
Ich finde Lösung
1. Schalten Sie mein Antivirenprogramm aus
2Schließen Sie meine Firewall
Ich denke, es ist ein Problem mit den letzten Änderungen im Code, insbesondere wenn Sie eine Bibliothek eines Drittanbieters wie native-base verwenden. Was ich getan habe, ging ein paar Schritte zurück Strg + z , deinstalliere die App aus dem Emulator und starte sie neu. dann React-Native Run-Android , und alles funktioniert! Vielleicht hat es etwas mit dem Caching des Emulators zu tun
@pinchez254 stimme dir zu. Erster Lauf immer ok.
Bitte starten Sie den npm-Server mit dem Befehl npm start
Hallo, ich habe meine PC-IP-Adresse in die Dev-Einstellung (192.168.1.103:8081) eingegeben und eine eingehende Regel in der Firewall für den Zugriff auf den 8081-TCP-Port erstellt, bekomme aber diesen Fehler:
"could not connect to development serve"
AUCH
Wenn Sie im Browser "http://localhost:8081/index.delta?platform=android&dev=true&minify=false"
, wurde der Build gestartet und erfolgreich abgeschlossen!
Bei mir läuft:
adb reverse tcp:8081 tcp:8081
react-native start --reset-cache
react-native run-android
hat es geschafft
Ich musste zwei Terminals öffnen.
Erster Lauf
sudo npm start
Nach Lauf
react-native run-ios
react-native run-android
, react-native start --port=8088
ausreact-native run-android --port=8081
:)
Die einzige Möglichkeit, die ich lösen konnte, war - alle Verweise auf Port 8081 zu durchsuchen und in 9088 (nicht verwendet) zu ändern und mit -- Port 9088 zu beginnen. Außerdem die Dev-Einstellung auf Port 9088 geändert. Es gab nur wenige Verweise auf Port 8081 als Standard in node_module/react-native dir. Port 8081 wurde in meiner Umgebung vom Virenwächter verwendet.
Bei mir wurden keine Android Platform-Tools installiert. Also habe ich mit dem folgenden Befehl installiert.
Fass brauen Android-Plattform-Tools installieren
Danach funktionierte das Ausführen aus Android Studio oder der Kommandozeile mit *react-native run android *
Das Neustarten meines Mac hat es für mich gelöst, keine Ahnung warum
Erstens hilft mir diese Lösung, nachdem Sie sichergestellt haben, dass Sie sich in Ihrer Projektdatei befinden:
react-native start
höchstwahrscheinlich erhalten Sie einen Fehler mit dem Code ENOSPC
Verwenden Sie in diesem Fall diesen Code:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Danach führen Sie erneut react-native start
aus, und Sie sollten höchstwahrscheinlich Ihren ENOSPC-Fehler behoben haben.
Als nächstes führen Sie einfach react-native run-android
aus
Los geht's, es funktioniert für mich unter Linux mit Android-Emulator von Android Studio
Ich hatte diesen Fehler,
Ich habe damit eine Lösung gefunden.
Zuerst habe ich alle Knotenmodule gelöscht.
sudo rm -rf node_modules/
dann habe ich npm-Pakete erneut installiert
npm install
dann führe ich diesen Befehl aus, um zu überprüfen, ob die Reaktionspakete in Ordnung sind.
react-native start
Es zeigt mir, dass die Pakete in Ordnung sind, und dann führe ich den Android mit Root aus
react-native run-android --root
dann fand ich das funktioniert.
Beachten Sie auch, dass ab Android 9 Klartext-HTTP-Übertragungen (Nicht-HTTPS) standardmäßig verboten sind. Um die Verbindung zum Entwicklungsserver von einem Gerät aus zu ermöglichen, auf dem Ihre App ausgeführt wird, fügen Sie dieses Attribut zum Element application
in der Datei _AndroidManifest.xml_ hinzu:
android:usesCleartextTraffic="true"
Weitere Informationen zu diesem Stackoverflow-Problem
Sie können testen, ob Ihr Gerät auf Ihren Entwicklungsserver zugreifen kann, indem Sie URLs in den nativen Webbrowser eingeben.
Leider schlucken die nativen React-Entwicklungstools den Grund für den Fehler, aber es zeigt sich, wenn Sie versuchen, Ihre eigene HTTP-Verbindung innerhalb der Ziel-App herzustellen, wo Sie einen hilfreichen Stack-Trace erhalten.
@delj Das ist bedauerlich, dass die reagierenden nativen Entwicklungstools den Grund für den Fehler verschlucken.
Tipp: Verwenden Sie manifestPlaceholders , um eine Veröffentlichung mit Android zu verhindern:usesCleartextTraffic= "true"
AndroidManifest.xml
````
android:usesCleartextTraffic="${isDebug}"
>
````
android/app/build.gradle
buildTypes { debuggen { manifestPlaceholders = [isDebug:true] } Freisetzung { manifestPlaceholders = [isDebug:false]minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release } }
Ich hatte das gleiche Problem und was für mich unter Windows 10 funktioniert hat, ist buchstäblich nur das Öffnen der CMD als Administrator.
Ich habe immer noch dieses Problem. Können wir das wieder öffnen. Das ist absolut lächerlich, wie ist es ein "Erste Schritte"-Tutorial, wenn Sie die Schritte buchstabengetreu befolgen und es nicht startet. Ich habe buchstäblich Stunden mit diesem Fehler verbracht. Dem muss Facebook entgegenwirken. Entweder ist ihr Tutorial einfach nur REIN FALSCH oder bekannte Fehlerbehebungsfälle, auf die sie verlinken können.
Hier sind meine Schritte:
Habe dieses Problem immer noch. Ich habe auch versucht, den Portwert hinzuzufügen, wenn ich Schritt 3 mache, aber das hat auch nicht funktioniert. Kann jemand bitte helfen.
Ich kann voll und ganz mitfühlen - wir haben gerade eine Stunde damit verbracht, dies auch zu beheben.
Hier gibt es ein paar Probleme, von denen das wichtigste die Klartexteinstellung ist. Bevor Sie irgendetwas tun, aktualisieren Sie Ihre App auf das neueste Android SDK oder diese Einstellungen funktionieren nicht. Um zu testen, ob Sie dieses Problem haben, fügen Sie diesen Code in eine Ihrer obersten Renderfunktionen ein. ZB <App
fetch('http://jofarnold.com')
.then(res => res.text())
.then(d => alert('ok'))
.catch(e => {
console.error(String(e));
});
Beachten Sie die http
und nicht die https
. Ja, meine Website ist nicht http. Aber im Moment bereue ich nichts!
Versuchen Sie es jetzt
fetch('https://httpbin.org')
.then(res => res.text())
.then(d => alert('ok'))
.catch(e => {
console.error(String(e));
});
Beachten Sie die http s .
Welcher schlägt fehl? Wenn beide fehlschlagen, haben Sie andere Probleme und ich kann Ihnen nicht helfen - aber versuchen Sie zu sehen, ob diese URLs in Chrome in Ihrem Simulator funktionieren, um auszuschließen, dass das Netzwerk nicht funktioniert. Wenn das erste fehlschlägt (es wird eine native Redbox geben), aber das zweite erfolgreich ist (es wird mit ok
gewarnt), dann haben Sie die Android-Sicherheitseinstellungen nicht richtig eingerichtet. Also lass uns das tun.
Geben Sie zunächst Folgendes in android/.../AndroidManifest.xml im Abschnitt <application
ein
<manifest
....
<application
... other settings
android:usesCleartextTraffic="true" <---------- this
android:networkSecurityConfig="@xml/network_security_config" <------- and this
>
... etc
Erstellen Sie dann eine Datei unter android/...res/xml/network_security_config.xml (möglicherweise müssen Sie das xml-Verzeichnis hinzufügen: Der Dateiname ist nichts Besonderes - er muss nur mit der obigen Referenz identisch sein) wie folgt :
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">jofarnold.com</domain>
</domain-config>
</network-security-config>
Kompilieren Sie neu und stellen Sie sicher, dass Sie in einem Terminal react-native start --reset-cache
(beachten Sie den Reset-Cache) und in einem anderen react-native run-android
ausführen.
Wenn Sie jetzt die App laden, erhalten Sie ein OK-Popup. Gutes Zeug! Sie haben es geschafft, auf meine unsichere Website fetch
zuzugreifen.
Jetzt müssen wir reagieren native aussortieren. Bei mir ist der Server auf 10.0.2.2 und der Debugger auf localhost oder so ähnlich (ich erinnere mich nicht; ich schreibe das teilweise aus dem Gedächtnis). So oder so sind sie unterschiedlich und so funktioniert es nicht.
Ändern Sie dazu jofarnold.com
oben in localhost
und gehen Sie dann in das Einstellungsmenü in der App (cmd-M auf dem Mac) > Dev Settings. Deaktivieren Sie "Use JS Deltas" (es funktioniert nicht gut) und setzen Sie unter Debugging den Serverhost und den Port auf localhost:8081
Ihre Sicherheitskonfigurationsdatei sollte folgendermaßen aussehen:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
Neu kompilieren, react-native start --reset-cache
neu starten und Sie erhalten den grünen Balken oben in der App mit dem loading...
oder was auch immer es ist. Im Terminal sollten Sie sehen, dass es mit Delta, Map und so weiter gebündelt ist.
Ich denke, Sie müssen das adb reverse
-Zeug nicht machen. Es ist sowieso Teil der RN-Skripte.
Viel Glück!
Mein Problem war, dass mein Android-Emulator von WLAN und Daten getrennt war. Ich habe sie gerade eingeschaltet und sie läuft. Hoffe, es hilft, wenn jemand vor dem gleichen Problem steht.
Mein Problem war, dass mein Android-Emulator von WLAN und Daten getrennt war. Ich habe sie gerade eingeschaltet und sie läuft. Hoffe, es hilft, wenn jemand vor dem gleichen Problem steht.
Eine wichtige Sache, die ich zu Mateos Kommentar hinzufügen sollte; Wenn Sie Ihr MacBook schließen und in einem anderen WLAN-Netzwerk fortfahren, kann dies dazu führen, dass das „WLAN“ des Simulators fehlschlägt. Sie sollten den Simulator neu starten. Ich weiß, dass dies kein spezielles Problem für den Simulator ist, aber er hat eine gute SEO für dieses Thema, also hilft es hoffentlich jemand anderem, diesen Kommentar hier zu hinterlassen.
gelöst mit Android 5.0 oder höher, Fehler in Android 4..4
gelöst mit Android 5.0 oder höher, Fehler in Android 4..4
Ich stimme zu
Wenn Sie einen Android 9-Emulator ausführen, müssen Sie, wie von @delj angegeben, android:usesCleartextTraffic="true"
in Ihrem Application-Tag in manifest.xml hinzufügen
Läuft der Packager? Sie sollten es sehen, wenn Sie
react-native run-android
ausführen. Sie können es auch selbst mitreact-native start
starten. Ich würde gerne herausfinden, ob das Problem hier darin besteht, dass der Packager überhaupt nicht startet.
Warum tritt dieses Problem auf?? Ich habe einen Mac mit OS 10.13.6 und davor startet der Server automatisch
Danke @JofBigHealth, ich habe es so gemacht, wie Sie es vorgeschlagen haben, und es funktioniert auf dem Emulator und dem Connect Real Device.
Aber ich habe Probleme mit der App, wenn ich sie aus dem Alphakanal herunterlade. hast du vorschläge zum debuggen?
@sheva007 Ich bin mir nicht sicher, was du mit "Alphakanal" meinst. Können Sie erläutern und auch genauer erläutern, welche Probleme Sie speziell haben?
@JofBigHealth Entschuldigung für die fehlenden Informationen.
UPDATE: jetzt klappt es, ich musste nur noch etwas warten, bis Google Play die aktualisierte Arbeitsversion für die Tester bereitstellt. Vielen Dank :)
Mein ursprüngliches Problem war, dass die App gut funktioniert < Android 9, aber es wird keinen Netzwerkanruf mit Android 9 tätigen. Wenn ich Ihre Lösung verwendet habe, funktioniert die App einschließlich Netzwerkanrufen wie erwartet.
aber als ich es bei Google Play Alpha Channel eingereicht habe. es führt keine Netzanrufe durch.
Das Umkehren der Ports hat bei mir funktioniert
wie von @ashafizullah vorgeschlagen
Das Schließen von Android Studio, das ich geöffnet hatte, löste das Problem für mich seltsamerweise. Unklar warum...
UPDATE: Für den Simulator ab dem Upgrade auf 0.57.7 habe ich es nicht für notwendig befunden, den adb
Reverse-Proxy-Fix durchzuführen oder den Port im Entwicklermenü zu ändern. Es ist standardmäßig so etwas wie 10.0.1.1:8080 (schätze aus dem Gedächtnis) und Just Works. Ich führe react-native start
oder react-native start --reset-cache
(falls erforderlich) aus und baue von Android Studio aus und es funktioniert einwandfrei. Wenn Sie es auf Debugging eingestellt haben, muss ein Debugger ausgeführt werden, und Sie müssen möglicherweise erneut von Android Studio aus bauen, da es manchmal nicht beim ersten Mal verbunden wird (aufgrund dessen, was ich für eine Race-Bedingung halte), aber ansonsten in Ordnung. Denken Sie nur daran, die Sicherheitseinstellungen im App-Manifest korrekt festzulegen
Gerät ist eine andere Sache.
Habe das gleiche Problem, wenn versucht wird, auf dem Gerät zu starten. Gibt es eine Lösung für das Gerät?
Ich habe das gleiche Problem. Bitte hilf mir.
Sie sollten einen Pfad zu Ihren Umgebungsvariablen hinzufügen ... "adb"-Pfad, den Sie unter C:Users\user\AppData\Local\Android\Sdk/platformtools finden
Dies hat bei mir unter Windows 10 funktioniert: (Nach dem Einrichten des Debug-Server-Hosts und -Ports..)
Ich habe meine Firewall-Einstellungen überprüft (Windows-Firewall>Eine App oder Funktion durch die Windows-Firewall zulassen) und festgestellt, dass es ZWEI Node.js-Apps gibt, aber eine davon nicht durch die Firewall zugelassen wird! Häkchen gesetzt und gespeichert, dann funktionierte alles wie es sollte!
diese gute frage .. und ihre arbeit.!
Wenn Sie einen Android 9-Emulator ausführen, müssen Sie, wie von @delj angegeben,
android:usesCleartextTraffic="true"
in Ihrem Application-Tag in manifest.xml hinzufügen
Empfohlen
Gleicher Fehler.
windows7+android studio3.3.2.
Der Node-Server ist aktiv und ich kann 127.0.0.1 vom Simulator-Chrome aufrufen, aber die Awesome-App kann keine Verbindung zum Node-Server herstellen.
Ich habe auch android:usesCleartextTraffic="true"
zur AndroidManisfesto.xml hinzugefügt, habe aber immer noch den Fehler erhalten
@aflext Hast du den Befehl adb reverse tcp:8081 tcp:8081
im roten Feld ausgeführt? Das funktioniert normalerweise.
@JofBigHealth Durch Ändern der URL von 127.0.0.1:8081
in localhost:8081
wurde es gelöst.
In meinem Fall war die Lösung „Debug JS Remotely“ deaktivieren/aktivieren.
@ashafizullah : Das habe ich auch versucht; aber immer noch kein Glück.
@ashafizullah ja, nein, es funktioniert auch bei mir.
kann es möglich sein, dieses Projekt über Windows auszuführen????
Mein Fehler wurde behoben, indem ich die Inotify-Limits geändert habe.
Dieser Link half https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
DAS FUNKTIONIERT!! DANKE VIELMALS!!
Mein Fehler wurde behoben, indem ich die Inotify-Limits geändert habe.
Dieser Link half https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
Das hat bei mir funktioniert. Danke, Mann.
Ich habe android:usesCleartextTraffic="true"
zu AndroidManifest.xml
am Tag <application ...
hinzugefügt und die App neu erstellt. Danach wurde es normal vom Dev-Server geladen.
Das ist mir passiert, weil ich den Debugger ausgeführt und mit einem anderen Gerät verbunden hatte. Der mit dem Debugger verbundene iOS-Simulator blockierte also die Verbindung des Android-Geräts mit dem Packager. Wenn Sie das Remote-Debugging auf dem iOS-Simulator stoppen, konnte das Android-Gerät eine Verbindung herstellen, oder Sie können auch auf dem Android-Gerät remote mit dem Debuggen beginnen.
Dies hat bei mir unter Windows 10 funktioniert: (Nach dem Einrichten des Debug-Server-Hosts und -Ports..)
Ich habe meine Firewall-Einstellungen überprüft (Windows-Firewall>Eine App oder Funktion durch die Windows-Firewall zulassen) und festgestellt, dass es ZWEI Node.js-Apps gibt, aber eine davon nicht durch die Firewall zugelassen wird! Häkchen gesetzt und gespeichert, dann funktionierte alles wie es sollte!
Das war auch mein Problem, danke!
https://www.youtube.com/watch?v=XhiE0HEiYd4
aber .... wenn ich die App im Emulator neu lade, stürzt sie erneut ab und zeigt die Meldung:
VERBINDUNG ZUM ENTWICKLUNGSSERVER KONNTE NICHT VERBUNDEN WERDEN
Also habe ich versucht, node.js und genymotion player.exe in der Firewall hinzuzufügen und alles neu zu starten (geny, reagieren), und es funktioniert wieder ...
Strg + Win cmd Befehlszeile ipconfig, um die IPV4-Adresse zu finden, meine ist 192.168.0.111, danach habe ich 192.168.0.111:8081 eingegeben
Erfolgreich gelöst!
Ich habe
android:usesCleartextTraffic="true"
zuAndroidManifest.xml
am Tag<application ...
hinzugefügt und die App neu erstellt. Danach wurde es normal vom Dev-Server geladen.
Dies hat es behoben. Danke vielmals.
Habe das gleiche Problem nur auf einem echten Android-Gerät.
Lösung:
1) Datei android/app/src/main/res/xml/network_security_config.xml hinzufügen
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
2) Fügen Sie eine Zeile zu android/app/src/main/AndroidManifest.xml hinzu
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
>
Finden Sie das Heilmittel.
Dieses Problem hat mir geholfen, das Problem in den folgenden Schritten zu lösen.
Dies gilt gemäß der Netzwerksicherheitskonfiguration für Android 9.0+.
Nun, nachdem ich alle möglichen Lösungen ausprobiert hatte, die ich im Internet gefunden hatte, entschied ich mich, den nativen Android-Logcat manuell zu untersuchen. Selbst nachdem ich android:usesCleartextTraffic="true"
hinzugefügt hatte, fand ich dies im Logcat:
06-25 02:32:34.561 32001 32001 E unknown:ReactNative: Caused by: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.29.96 not permitted by network security policy
Also habe ich versucht, die Quelle meiner React-Native-App zu untersuchen. Ich habe festgestellt, dass es in der debug
-Variante bereits eine Netzwerksicherheitskonfiguration gibt, die von React-Native-Jungs definiert wird und mit der main
-Variante in Konflikt steht.
Dafür gibt es eine einfache Lösung.
Gehen Sie zu <app-src>/android/app/src/debug/res/xml/react_native_config.xml
Fügen Sie in der eine neue Zeile mit Ihrer eigenen IP-Adresse hinzu
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
<domain includeSubdomains="false">10.0.3.2</domain>
***<domain includeSubdomains="false">192.168.29.96</domain>***
</domain-config>
</network-security-config>
Da die lokale IP meines Computers (siehe ifconfig
für Linux) 192.168.29.96 ist, habe ich die obige Zeile in * hinzugefügt
Dann müssen Sie für Android bereinigen und neu erstellen!
cd <app-src>/android
./gradlew clean
cd <app-src>
react-native run-android
Ich hoffe, das funktioniert für Sie.
Was ich getan habe: (Arbeite am Emulator Android Pie 9)
Debug server host & port for device
ein, indem Sie im Emulator auf Ctrl+M
und Dev Setting
klicken. Stellen Sie sicher, dass Sie den Host und Port mit Host und Port von Bundler festlegen (Standard: localhost:8081
) und stellen Sie sicher, dass Ihr Port nicht durch andere Prozesse blockiert wirdadb reverse tcp:8081 tcp:8081
im Home-Projektverzeichnis ausandroid:usesCleartextTraffic="true"
zum Knoten <application>
in AndroidManifest.xml
@Eyesonly88 das hat das Problem für mich gelöst - danke.
Für Sie, die speziell mit diesem Problem konfrontiert sind, wenn Sie Ihre targetSdkVersion auf API 28 setzen.
Alles, was Sie tun müssen, ist, für Ihre Datei network_security_config die folgenden Zeilen unten hinzuzufügen:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
PS: In meinem Fall habe ich mehrere network_security_config-Dateien für jeden Flavor, da dies ein Debugging-Problem ist, reichte das Hinzufügen dieser Zeilen zur network_security_config -Datei im Debug-Flavor.
=============================================== =======================
Weitere Informationen zum Fehler unten:
Wenn wir zu https://developer.android.com/training/articles/security-config.html gehen, werden wir sehen, dass diese obigen Codezeilen die Standardsicherheitskonfiguration für Android API 24 bis API 27 sind. (Android 7.0 bis Android 8.1).
Dies bedeutet, dass für Android 9, API 28, bei dem ich mit dem Fehler konfrontiert war, die Standardkonfiguration geändert wurde.
Genauer gesagt ist die Standardkonfiguration für Android API 28:
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
.
Aus diesem Grund hat die Verwendung der Standardkonfiguration für alte APIs für mich funktioniert.
Eine andere Sache, die am Anfang auch für mich funktioniert hat, war, targetSdkVersion auf API 27 zu setzen. Wenn Sie nicht auf API 28 laufen möchten, könnte dies auch für Sie funktionieren.
Wenn Sie einen Android 9-Emulator ausführen, müssen Sie, wie von @delj angegeben,
android:usesCleartextTraffic="true"
in Ihrem Application-Tag in manifest.xml hinzufügenEmpfohlen
Du hast meine Zeit gespart. Danke vielmals.
Leute, ich öffne das WLAN im Emulator und es hat bei mir funktioniert
Was mein Problem gelöst hat, war die Verwendung sudo yarn start
anstelle von yarn start
Ich habe ein Skript in meiner package.json mit
{
...
"scripts":{
"start":"react-native start"
}
....
}
Wenn Sie einen Emulator wie xCode oder Android Studio verwenden, müssen Sie die Dev-Server-Adresse in den Einstellungen nicht mit Ihrer IP festlegen. Es wird automatisch eingestellt. Entfernen Sie es einfach und führen Sie die App erneut aus. Für mich geht das.
Wenn Sie einen Android 9-Emulator ausführen, müssen Sie, wie von @delj angegeben,
android:usesCleartextTraffic="true"
in Ihrem Application-Tag in manifest.xml hinzufügenEmpfohlen
Du hast meinen Tag gerettet
Was ich getan habe: (Arbeite am Emulator Android Pie 9)
- Stellen Sie IP und Port auf
Debug server host & port for device
ein, indem Sie im Emulator aufCtrl+M
undDev Setting
klicken. Stellen Sie sicher, dass Sie den Host und Port mit Host und Port von Bundler festlegen (Standard:localhost:8081
) und stellen Sie sicher, dass Ihr Port nicht durch andere Prozesse blockiert wird- Führen Sie
adb reverse tcp:8081 tcp:8081
im Home-Projektverzeichnis aus- Fügen Sie
android:usesCleartextTraffic="true"
zum Knoten<application>
inAndroidManifest.xml
- Nachdem Sie die drei oben genannten Punkte ausgeführt haben, starten Sie Ihr Projekt neu
Ich kann bestätigen, dass die Lösung von @rafidamr die richtige ist. Aber ich war in einer Unternehmensumgebung, in der ich Port 8081 nicht verwenden konnte, also habe ich Metro Bundler einfach auf einen anderen Port umgestellt:
adb reverse tcp:8088 tcp:8088
react-native run-android --port 8088
Und natürlich auf den neuen Port in den Dev-Einstellungen des Emulators verwiesen.
Danke @camposbrunocampos 👏🏼 , ich habe target: Android 9.0
mit API level 28
verwendet.
network_security_config.xml
aktualisiert und jetzt funktioniert der Emulator einwandfrei.
Ich hatte Probleme, es sowohl auf iOS als auch auf Android zu starten (versucht auf Android Studio, ohne Android Studio, mit Xcode und ohne Xcode). Ich habe alle oben genannten ausprobiert.
Also was NICHT geholfen hat war:
Das einzige, was ich tun musste, ist Folgendes zu tun: sudo npm start aus dem nativen Projektverzeichnis reagieren. Scheint ein Berechtigungsproblem zu sein. (mit Mac)
@inspiraluna Das ist ein grundlegendes npm-Installationsproblem, Sie sollten Ihr Systemverzeichnis ändern.
fügen Sie android:usesCleartextTraffic= "true" zu Ihrer Anwendung im Manifest hinzu
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">
Für mich geht das.
Ich habe
android:usesCleartextTraffic="true"
zuAndroidManifest.xml
am Tag<application ...
hinzugefügt und die App neu erstellt. Danach wurde es normal vom Dev-Server geladen.
Dies hat das Problem auch für mich behoben, aber ich werde dem vorangehen, indem ich sage, dass ich diesen Fix anfänglich ausprobiert habe und er nicht funktioniert hat. Ich musste mit neuen Emulatoren neu anfangen, abd mehrmals beenden und neu starten, Android Studio neu installieren, Gradle aktualisieren usw.
@ Eyesonly88 Danke.. Es funktioniert für mich
Ich habe hinzugefügt
android:usesCleartextTraffic= „true“ zu AndroidManifest.xml
So habe ich das Problem behoben, dass keine Entwicklertools im Emulator vorhanden waren:
Diese SO-Antwort schlägt vor, Ihre MainApplication.java
-Datei zu überprüfen und BuildConfig.Debug
aus der Methode getUseDeveloperSupport
zu entfernen, also sieht es so aus:
<strong i="11">@Override</strong>
public boolean getUseDeveloperSupport() {
// Return true to load JS from the packager.
// If BuildConfig.DEBUG is false, assets will be loaded from assets folder.
return true; // BuildConfig.DEBUG;
}
Hilfreichster Kommentar
Versuchen Sie zu laufen:
adb reverse tcp:8081 tcp:8081
an Ihrer Eingabeaufforderung und führen Sie Ihr Projekt danach erneut aus.