Skript aus Assets index.android.bundle kann unter Windows nicht geladen werden


357

Ich versuche, mein erstes React Native-Projekt zum ersten Mal auf meinem Gerät (Android 4.2.2) auszuführen.

Und ich bekomme:

Skript kann nicht aus Assets index.android.bundle geladen werden

Befehle, die ich verwendet habe:

  1. cd (project directory)
  2. react-native start
  3. react-native run-android

6
Bevor Sie Jerrys Antwort versuchen, überprüfen Sie zunächst ANDROID_HOME in der Umgebungsvariablen und im Pfadplattform-Tool.
Sagar Chavada

Es ist ein Fehler in der aktuellen Version. Sie müssen die vorherige Version verwenden, indem Sie den reaktionsnativen Init verwenden. ProjectName --version = 0.55.4 Das Problem sollte behoben sein.
Sulung Nugroho

Gleicher Fehler, gleicher Kontext, aber das Update ist einfach: Warten Sie, bis der Debug-Server von zu wechselt Loading dependency graph..., Loading dependency graph, doneund klicken Sie in der App auf Neu laden.
Nino Filiu

Die akzeptierte Antwort ist ein äußerst unpraktischer Hack, der den Erstellungsprozess und die Codebasis kompliziert. Hier gibt es bessere Antworten.
Andrew Koster

Verwendung mkdir ... /assets && react-native bundle --platform..KANN dieses Problem NICHT vollständig lösen , Überprüfen Sie dies: stackoverflow.com/a/55511803/10139109
Ian Zhong

Antworten:


947

Ich habe das gleiche Problem festgestellt, als ich dem React Native- Tutorial gefolgt bin (Entwicklung unter Linux und Ausrichtung auf Android).

Dieses Problem hat mir geholfen, das Problem in den folgenden Schritten zu beheben.

  1. (im Projektverzeichnis) mkdir android/app/src/main/assets
  2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
  3. react-native run-android

Sie können die obigen Schritte automatisieren, indem Sie sie in einen scriptsTeil davon package.jsonwie folgt einfügen :

"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"

Dann können Sie npm run android-linuxjedes Mal einfach über Ihre Befehlszeile ausführen .


15
Was ist, wenn wir die Datei ändern möchten index.android.js? Jedes Mal im Terminal müssen wir Befehl einfügenreact-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
Maulik

9
Es bleibt Loading dependency graph...jedes Mal hängen, wenn ich es vom Terminal aus erneut ausführe, und es dauert zu lange. Zu Ihrer Information Ich benutze Ubuntu 14.04
Maulik

12
Reagieren Sie auf neuere Versionen, die nicht index.android.js enthalten. Verwenden Sie daher bitte App.js mit dem Befehl. :) Danke
Chinthaka Dinadasa

11
@ChinthakaDinadasa in meinem Fall ist es index.jsnichtApp.js
Felix

11
Dieser Typ braucht eine Statue! Ich meine, es hat wirklich nicht nur unter Linux funktioniert, sondern auch unter Windows 10
Reborn

126

Wenn Sie Ihre Anwendung auf einem physischen Gerät ausführen und diesen Fehler erhalten

unable to load script from assets index.android.bundle

Versuchen Sie, den Befehl auszuführen:

adb reverse tcp:8081 tcp:8081

Es hat für mich funktioniert ...


Dies hat mein Problem behoben! Vielen Dank!
Pablo

7
Hat für mich gearbeitet. Für diejenigen, die die Android-Plattform-Tools in Windows nicht auf Ihrem Terminalpfad haben, befindet sich die ausführbare ADB-Datei in "C: \ Benutzer \ YourUser \ AppData \ Local \ Android \ SDK \ Plattform-Tools"
Mikepote

2
Ich denke, das sollte die richtige Antwort sein, die andere scheint ein Hack zu sein.
Cristian Gomez

2
Dies funktionierte nicht für mich (unter MacOS)
Szx

Dies hat das Problem für mich behoben (Windows, App auf einem physischen Gerät ausführen). Dies ist eine der vorgeschlagenen Korrekturen für das rote Fehlerfeld.
Tur1ng

101

Ich habe stundenlang versucht, dieses Problem herauszufinden. Mein Problem war nicht spezifisch für Windows, sondern spezifisch für Android.

Der Zugriff auf den Entwicklungsserver funktionierte lokal und im Browser des Emulators. Das einzige, was nicht funktionierte, war der Zugriff auf den Entwicklungsserver in der App.

Ab Android 9.0 (API-Level 28) ist die Klartextunterstützung standardmäßig deaktiviert.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

Weitere Informationen finden Sie unter: https://stackoverflow.com/a/50834600/1713216


11
Vielen Dank. Dies war mein Problem nach dem Upgrade targetSdkVersionauf 28.
Bencergazda

Dies ist die richtige Antwort. Es behebt tatsächlich das Netzwerkkommunikationsproblem.
Andrew Koster

Dies ist die in React Native v0.59.2 verwendete Lösung .
Tur1ng

Vielen Dank, dass Sie dies markiert haben. Es wurde vollständig verhindert, dass meine RN-App geladen wird. Enttäuschend, dass es keine bessere Fehlermeldung gab: /
greg7gkb

2
Funktioniert! Wenn ich dich persönlich sehe, würde ich dir eine Medaille geben (-:
Yaron Levi

61

Verwenden von npm Version 4.3.0 React-Native-Cli Version 2.01 React-Native Version 0.49.5

Im Projektverzeichnis

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

Der Dateiname wurde von index.android.js in index.js geändert


3
Ein bisschen traurig, dass FB eine neue Version veröffentlicht, und anstatt diesen Fehler zu beheben, der eindeutig Tonnen von Menschen trifft, brechen sie die akzeptierte Problemumgehung!
Tom

@IgorGanapolsky Stellen Sie sicher, dass Sie eine index.bundle-Datei in Ihrem Assets-Ordner haben
Darshan Pania

@DarshanPania Was macht diese Datei?
IgorGanapolsky

3
@IgorGanapolsky Diese JS-Datei ist ein Einstiegspunkt in Ihre App. Ab RN 0.49 gibt es nur noch eine Datei index.jsanstelle von index.android.jsoderindex.ios.js
Darshan Pania

1
für Linux:sudo react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
Taohidul Islam

42

Ich habe das gleiche Problem mit einem echten Android-Gerät konfrontiert.

Lösung: Basierend auf dieser Antwort von Niltoid

  1. Finden Sie Ihre lokale IP
  2. Öffnen Sie die App und schütteln Sie Ihr Android-Gerät
  3. Gehen Sie zu Dev Setting und> Debug Server ...
  4. Fügen Sie Ihre IP und Ihren Port ein. XXXX: 8088 "(wobei X Ihre lokale IP ist)

Für Mac-Benutzer: Öffnen Sie Ihre Netzwerkeinstellungen. Hier erhalten Sie Ihre lokale IP.


Arbeitet für mich (y)
MAhipal Singh

22

Wenn Sie Windows verwenden, führen Sie die Befehle folgendermaßen aus, oder wenn die Fehlermeldung "Eintragsdatei index.android.js kann nicht gefunden werden" angezeigt wird.

  1. mkdir android\app\src\main\assets
  2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  3. react-native run-android


19

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.


Ich hatte dieses Problem, als ich direkt von Android Studio aus lief. mit react-native run-androidFixed It
Yairsz

7
Ihr Link funktioniert nicht mehr. Sie sollten in Zukunft auf wichtige hilfreiche Teile verweisen, um Informationen nach dem Tod der Quelle am Leben zu erhalten.
Zac Grierson

Wie kann man das auf einem echten Gerät ausführen ?
IgorGanapolsky

1
@IgorGanapolsky Ich habe das gleiche Problem und habe es mit offizieller Dokumentation behoben. Sie können Ihre Umgebung ganz einfach überprüfen. Facebook.github.io/react-native/docs/running-on-device.html Ich kann porj nicht aus Android Studio laden (und Android-Ordner), aber ich könnte es mit Stammordner von Projekt und Terminal tun.
Ivan Titkov

15

Hatte das gleiche Problem in Mac, nachdem ich 2 Tage verbracht hatte, konnte ich endlich arbeiten.

Seitdem Emulator cellular data was turned offbekam ich die unable to load script from assets index.android.bundle make sure your bundle is running.

Stellen Sie sicher, dass Sie Emulator cellular data is turned onmit diesem Paket Server bündeln konnten index.android.js. Hoffe, es hilft für jemanden, der sich in der Entwicklungsphase befindet.


Was machst du Emulator cellular data is turned on? Wo ist das? Virtuelles Gerät? Echtes Gerät?
Grün

Emulator bedeutet virtuelles Gerät, das aus Android Studio stammt.
Srinivas

13

Ich habe jetzt seit einigen Monaten das gleiche Problem. Ich habe anfangs die Lösung von @ Jerry verwendet, dies war jedoch eine falsche Lösung, da das Problem dadurch nicht vollständig behoben wurde. Stattdessen wurde jeder Build als Produktions-Build verwendet, was bedeutet, dass jede geringfügige Änderung, die Sie an der App vorgenommen haben, bedeuten würde, dass die gesamte App neu erstellt werden muss.

Dies ist zwar eine zeitliche Lösung, funktioniert aber auf lange Sicht schrecklich, da Sie die erstaunlichen Entwicklungstools von React Native wie Hot-Reloading usw. nicht mehr nutzen können.

Eine richtige Lösung ist gezeigt:

MainApplication.javaErsetzen Sie in Ihrer Datei Folgendes:

@Override
public boolean getUseDeveloperSupport() {
    return BuildConfig.DEBUG;
}

mit

@Override
public boolean getUseDeveloperSupport() {
    return true;
}

Aus irgendeinem Grund wurde BuildConfig.DEBUGimmer false zurückgegeben und eine Bundle-Datei im Assets-Verzeichnis erstellt.

Wenn Sie dies manuell auf true setzen, zwingen Sie die App, den Packager zu verwenden. Dies funktioniert in der Produktion NICHT. Ändern Sie es daher unbedingt in false oder den Standardwert.

Vergiss nicht auch zu rennen

$ adb reverse tcp:8081 tcp:8081

1
Das ist die wirkliche Lösung. Vielen Dank!
Keyserfaty

1
Heilig, das ist die eigentliche Lösung. Die akzeptierte Antwort funktioniert nicht beim erneuten Laden im laufenden Betrieb und ist in keiner Weise eine legitime Lösung für das Problem.
Ganesh Datta

11

1 Wechseln Sie in Ihr Projektverzeichnis und prüfen Sie, ob dieser Ordner vorhanden ist android/app/src/main/assets

  1. Wenn es existiert, löschen Sie zwei Dateien, nämlich index.android.bundleundindex.android.bundle.meta
  2. Wenn die Ordner-Assets nicht vorhanden sind, erstellen Sie dort das Assets-Verzeichnis.

2. Aus Ihrem Stammprojektverzeichnis tun

cd android && ./gradlew clean

3. Navigieren Sie abschließend zurück zum Stammverzeichnis und prüfen Sie, ob eine einzelne Eintragsdatei aufgerufen wirdindex.js

  • Wenn es nur eine Datei gibt, dh index.js, führen Sie den folgenden Befehl aus react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  • Wenn zwei Dateien vorhanden sind, z. B. index.android.js und index.ios.js, führen Sie diese 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

    1. Jetzt renn react-native run-android

Nachdem ich fast alle diese Szenarien ausprobiert hatte, war dies die einzige Lösung, die für mich funktioniert hat. Vielen Dank!!!!
MizAkita

Dies funktionierte für mich, nachdem ich auf diesen Fehler gestoßen war, der der Anleitung für die ersten Schritte unter Ubuntu 18.04 folgte. Vielen Dank!
Rastating

Das ist Arbeit für mich in Mac os Catalina, danke
Hitesh

9

Betriebssystem: Windows

Eine andere Möglichkeit, dieses Problem zu beheben, nachdem Sie zwei der oben genannten Methoden ausprobiert haben
(da ich das SDK nicht in DEFAULT LOCATION wie C: \ users \ "user_name" \ appdata \ local \ sdk installiert habe ).

Wenn Sie bemerkt haben, dass die Befehlszeile angekündigt hat: "'adb' wird nicht als interner oder externer Befehl erkannt ..."

So
komme
ich zurecht : Beispiele: Ich habe SDK in D: \ Android \ sdk installiert. Also werde ich einen Pfad in Systemvariablen einfügen. 2 weitere Zeilen:

D:\Android\sdk\tools  
D:\Android\sdk\platform-tools  

(Wenn Sie nicht wissen, wie Sie Pfadsystemvariablen bearbeiten, finden Sie hier das Thema: /android/38321/what-do-i-type-in-path-variable-for-adb- Server-to-Start-from-cmd / 38324 )

Dann starte ich cmd erneut: react-native run-android

Es hat bei mir funktioniert.


obwohl es nicht wirklich verbunden ist - dies ist eines der häufigsten Probleme und es funktioniert wie von Thien beschrieben
Pixelartist

8

In meinem Fall habe ich die folgende Zeile aus MainApplication.java entfernt. (Was zuvor fälschlicherweise von mir hinzugefügt wurde.) : -

import com.facebook.react.BuildConfig;

Danach Projekt reinigen und Befehl drücken

React-Native Run-Android


Danke, es hilft mir auch.
Anil Ravsaheb Ghodake

6

Für IOS:

In einem Terminal:

cd ios

Entfernen Sie den Build-Ordner mit: rm -r build

Führe es nochmals aus: react-native run-ios

Alternativ können Sie den Finder öffnen, zu YOUR_PROJECT / ios navigieren und den Build löschen Ordner .

Dann nochmal laufen lassen: react-native run-ios

Für ANDROID:

In einem Terminal:

cd android/app

Entfernen Sie den Build-Ordner mit: rm -r build

Führe es nochmals aus: react-native run-android

Alternativ können Sie den Finder öffnen, zu YOUR_PROJECT / android / app navigieren und den Build- Ordner löschen .

Dann nochmal laufen lassen: react-native run-android


2
Funktioniert für Android! sauber und einfach!
llioor

Das Löschen von android/app/binOrdnern unter Windows funktionierte ebenfalls. Ich hatte das Projekt direkt aus Android Studio erstellt, anstatt es auszuführen react-native run-android, und es scheint etwas Falsches erstellt zu haben, das ich manuell löschen musste.
Lucas Bustamante

5

Für dieses Problem löse ich es einfach durch Ausführen von:

react-native start

dann

adb reverse tcp:8081 tcp:8081

auf der Kommandozeile. Und dann kann ich rennen:

react-native run-android

Also werde ich meine Zeit nicht verschwenden, um zu rennen:

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

jedes Mal.


5

Ich war auch mit diesem Problem konfrontiert, weil es beim Ausführen von Projekten auf dem Emulator einwandfrei funktioniert, aber auf einem realen Gerät diesen Fehler ausgibt. Also löse ich dieses Problem durch die folgende Lösung

1. Schritt: Öffnen Sie zunächst cmd und wechseln Sie in den Ordner SDK Manager Platform-tools

cd C:Development\Android\Sdk\Platform-tools

2. Schritt : Führen Sie nun diesen Befehl aus:

adb devices

Überprüfen Sie nach diesem Befehl Ihr Gerät, das in der Eingabeaufforderung aufgeführt ist

3. Schritt : Führen Sie dies jetzt aus

adb reverse tcp:8081 tcp:8081

Jetzt ist Ihr Setup abgeschlossen

4. Schritt : Gehen Sie in Ihr Projektverzeichnis und führen Sie diesen Befehl aus

react-native run-android

4

Ubuntu

Zum ersten Mal habe ich eine neue App mit erstellt react-native init project-name. Ich habe den gleichen Fehler bekommen. Also mache ich die folgenden Schritte, um dies in meinem Fall zu beheben.

  1. Zuerst laufen sudo chown user-name-of-pc /dev/kvm in meinem Fall.
  2. Wählen Sie beim Debuggen von Ihrem Android-Telefon aus Use USB to Transfer photos (PTP).

  3. Erstellen Sie einen Ordner assetsim Projektnamen / android / app / src / main

  4. index.jsStellen Sie sicher, dass Sie in Ihrem Projektverzeichnis verfügbar sind, root und führen Sie dann den folgenden Befehl von Konsole zu cd project-nameVerzeichnis aus.

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

oder dann für index.android.js

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

  1. Befehl ./studio.shim android-studio/binVerzeichnis ausführen . Es wird Android Studio geöffnet.

  2. Befehl ausführen react-native run-android.

Geben Sie hier die Bildbeschreibung ein


4

Stellen Sie sicher, dass der Metro Builder ausgeführt wird, damit Ihr physisches Gerät und Ihr Server synchronisiert werden

Führen Sie zuerst diesen Befehl aus, um den Metro Builder auszuführen

npm starten

Dann können Sie den Build in React Native starten

React-Native Run-Android

Diesmal sollte es keinen Fehler geben. Wenn Sie möchten, dass Ihr Code bei Änderungen live geladen wird. Schütteln Sie Ihr Gerät und tippen Sie anschließend auf Live Reload aktivieren


3

Stellen Sie sicher, dass Sie Ihrer Pfadvariablen / path / to / sdk / platform-tools hinzugefügt haben.

Wenn Sie reag-native run-android ausführen, wird der Befehl adb reverse tcp: <Geräteport> tcp: <lokaler Port> ausgeführt, um die Anforderung von Ihrem Gerät an den Server weiterzuleiten, der lokal auf Ihrem Computer ausgeführt wird. Sie werden so etwas sehen, wenn adb nicht gefunden wird.

/bin/sh: 1: adb: not found
Starting the app (.../platform-tools/adb shell am start -n 
com.first_app/com.first_app.MainActivity...
Starting: Intent { cmp=com.first_app/.MainActivity }

Dies sollte bis zu den meisten positiv bewerteten Antworten stimmen, da dies eines der ersten Dinge sein sollte, die überprüft werden sollten
eis

3

Dies kann durch nicht verknüpfte Assets in Ihrer React Native-Projektcodebasis verursacht werden, z. B. wenn Sie Ihre Projektanwendung / Bundle-ID umbenennen oder ein externes Paket hinzufügen, ohne es ordnungsgemäß zu verknüpfen.

Probieren Sie es einfach in Ihrem Projektstammverzeichnis aus:

react-native link

react-native run-android

2

Wenn beim Ausführen des react-native run-androidBefehls die zweite Zeile der Ablaufverfolgung lautet

JS server not recognized, continuing with build...

Dies bedeutet, dass der Packager für die App nicht gestartet werden kann und die App ohne einige zusätzliche Schritte nicht geladen werden kann. Beachten Sie, dass das Ende der Ablaufverfolgung weiterhin den Erfolg meldet:

BUILD SUCCESSFUL

Das Problem ist wahrscheinlich ein Portkonflikt (in meinem Fall war es die Standard-IIS-Site, die ich völlig vergessen habe). Eine weitere Manifestation des Problems wäre ein Versagen beim Öffnenhttp://localhost:8081/debugger-ui URL in Chrome.

Sobald der Portkonflikt behoben ist, wird der Trace gemeldet

Starting JS server...

Dann öffnet sich ein zusätzliches Knotenfenster ( node ...cli.js start) und die App wird erfolgreich geladen / neu geladen.

Danach sollten Sie in der Lage sein, die Debug-Konsole in Chrome mit zu öffnen http://localhost:8081/debugger-ui.


2

Ich hatte das gleiche Problem, selbst wenn ich auf einem Simulator lief. Ich habe eine schnelle Problemumgehung durchgeführt, damit ich den normalen Entwickler-Workflow haben kann.

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
  @Override
  public boolean getUseDeveloperSupport() {
    // return true here to load JS from the packager
    // BuildConfig.DEBUG for me was set to false which meant it
    // it was always trying to load the assets from assets folder.
    return true;
  }

  @Override
  protected String getJSMainModuleName() {
    return "index";
  }
};

Möglicherweise muss die Änderung rückgängig gemacht werden, wenn versucht wird, einen Produktionsaufbau durchzuführen.


2

Ich hatte ein Problem mit McAfee auf meinem Mac, der den Port 8081 blockiert, und musste ihn in 8082 ändern.

Führen Sie zuerst Ihren Paketserver aus:

react-native start --port 8082

Öffne ein anderes Terminal, starte die Android App wie gewohnt:

react-native run-android

Wenn es fertig ist, schreiben Sie jetzt den TCP-Port neu, der die Tunnel adb:

adb reverse tcp:8081 tcp:8082

Siehe die Liste der ADB TCP-Tunnel:

adb reverse --list

Sie sollten jetzt eine herzerwärmende Nachricht sehen:

(reverse) tcp:8081 tcp:8082

Gehen Sie zu Ihrer App und laden Sie sie neu, fertig!

PS: Ändern Sie nichts in den Dev-Einstellungen der App. Wenn Sie "localhost: 8082" hinzugefügt haben, entfernen Sie es einfach und lassen Sie es leer.

BEARBEITEN: Für alle McAfee-Opfer gibt es eine einfachere Lösung, wenn Sie über Root-Zugriff verfügen. Beenden Sie den McAfee-Prozess auf Port 8081 nur vorübergehend, ohne dass ein Portwechsel erforderlich ist:

sudo launchctl remove com.mcafee.agent.macmn

2

Ich denke du hast kein Garn installiert. Versuchen Sie, es mit Schokolade oder etwas anderem zu installieren. Es sollte vor dem Erstellen Ihres Projekts installiert werden (Befehl react-native init).

Sie müssen kein Assets-Verzeichnis erstellen.

Antworte, wenn es nicht funktioniert.

Bearbeiten: In der aktuellen Version von React-Native haben sie es behoben. Wenn Sie vollständige Freiheit von diesem einfach deinstallierenden Knoten wünschen (für eine vollständige Deinstallation den Knoten vollständig entfernen, siehe diesen Link) und den Knoten neu installieren möchten , reagieren Sie auf native-cli und erstellen Sie dann Ihr neues Projekt.


2

Vergessen Sie nicht, das Internet im Emulator einzuschalten. Ich habe diesen Fehler behoben. Es funktioniert perfekt: V Ich erhalte diesen Fehler, weil ich das Internet ausschalte, um NetInfo: D zu testen


2

Dies ist eine allgemeine Fehlermeldung, die möglicherweise während der Entwicklung der nativen Anwendungsreaktion aufgetreten ist. In diesem Tutorial werden wir eine Lösung für dieses Problem bereitstellen.

Problembeschreibung: Skript aus Assets index.android.bundle unter Windows kann nicht geladen werden Skript aus Assets index.android.bundle unter Windows kann nicht geladen werden

Führen Sie die folgenden Schritte aus, um das oben genannte Problem zu lösen:

Schritt 1: Erstellen des Ordners "Assets" in Ihrem Projektverzeichnis Erstellen Sie nun einen Ordner "Assets" im Projektverzeichnis "MobileApp \ android \ app \ src \ main". Sie können den Assets-Ordner manuell erstellen:

<OR>

Sie können einen Ordner auch mit dem Befehl erstellen. Befehl: mkdir android / app / src / main / assets

Schritt 2: Ausführen Ihrer React Native-Anwendung Führen Sie den folgenden Befehl aus, um die React Native-Anwendung im Emulator oder auf einem physischen Gerät auszuführen.

Wechseln Sie in das Projektverzeichnis. cd MobileApp

Führen Sie den folgenden Befehl aus, mit dem Sie Ihr Android-Anwendungsprojekt bündeln können.

reaktionsnatives Bundle - Plattform android --dev false --Eintragsdatei index.js --Bundle-Ausgabe android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res

Führen Sie den letzten Schritt aus, um die native Reaktion im Emulator oder auf einem physischen Gerät auszuführen. React-Native Run-Android

<OR>

Sie können auch die letzten beiden Befehle in einem kombinieren. In diesem Fall müssen Sie den Befehl nur einmal ausführen.

reaktionsnatives Bundle - Plattform android --dev false --Eintragsdatei index.js --Bundle-Ausgabe android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res && reagiere-native run-android

<OR>

Sie können die obigen Schritte automatisieren, indem Sie sie wie folgt in Skripten von package.json platzieren:

"android-android": "reaktionsnatives Bundle --platform android --dev false --eintragsdatei index.js --bundle-output android / app / src / main / assets / index.android.bundle --assets -dest android / app / src / main / res && reaktions-native run-android "

Wenn alles richtig eingerichtet ist, sollte Ihre neue App in Kürze in Ihrem Android-Emulator ausgeführt werden.


2

Folgen Sie diesem, arbeitete für mich.

https://github.com/react-community/lottie-react-native/issues/269

Gehen Sie in Ihr Projektverzeichnis und überprüfen Sie, ob dieser Ordner vorhanden ist. Android / app / src / main / assets i) Wenn er vorhanden ist, löschen Sie zwei Dateien, nämlich index.android.bundle und index.android.bundle.meta. Ii) Wenn die Ordner-Assets nicht vorhanden sind nicht vorhanden, dann erstellen Sie dort das Assets-Verzeichnis.

Führen Sie in Ihrem Stammprojektverzeichnis eine CD android && ./gradlew clean aus

Navigieren Sie abschließend zurück zum Stammverzeichnis und prüfen Sie, ob es eine einzige Eintragsdatei mit dem Namen index.js gibt. I) Wenn nur eine Datei vorhanden ist, dh index.js, führen Sie den folgenden Befehl aus: react-native bundle --platform android --dev false - -entry-file index.js --bundle-output android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res

ii) Wenn zwei Dateien vorhanden sind, dh index.android.js und index.ios.js, führen Sie dieses reaktionsnative Bundle aus - plattform android --dev false - Eintragsdatei index.android.js --bundle-output android /app/src/main/assets/index.android.bundle --assets-dest android / app / src / main / res

Führen Sie nun React-Native Run-Android aus


Ihr Kommentar hat mir sehr geholfen. Ich bin mir nicht sicher, warum ich die beiden Bundle-Dateien löschen musste. Aber deine Anweisungen wären perfekt! Ich danke dir sehr!
VK1

2

Ich bin gerade auf genau das gleiche Problem gestoßen und habe es gelöst. Ich hoffe, hilfreich zu sein.

Angenommen, Sie stellen ein Release- Anwendungspaket (.apk) zusammen.

  1. Überprüfen Sie, ob Ihr Assets-Ordner vorhanden ist?: \ Android \ app \ src \ main \ Assets Wenn nicht, erstellen Sie einen.

  2. Überprüfen Sie nach dem Ausführen von "Assemble Release", ob sich etwas in diesem Ordner befindet (\ android \ app \ src \ main \ assets). Wenn nicht, suchen Sie die js-Bundle-Datei ( index.android.bundle ), die sich in mehr als einem befinden sollte die folgenden Pfade:

    * a) \ android \ app \ build \ intermediates \ fusionierte_assets \ release \ out \ index.android.bundle

    b) \ android \ app \ build \ intermediates \ fusioned_assets \ release \ mergeReleaseAssets \ out \ index.android.bundle

    c) \ android \ app \ build \ intermediates \ assets \ release \ index.android.bundle

    d) \ android \ app \ build \ generate \ assets \ react \ release \ index.android.bundle *

Ein besserer Weg ist, "Alles" zu verwenden, um den Dateinamen zu suchen: index.android.bundle.

  1. Kopieren Sie diese Datei dann in Ihren Assets-Ordner (\ android \ app \ src \ main \ assets \ index.android.bundle).

  2. Gehen Sie zurück zu Powershell oder Befehlskonsole und führen Sie Folgendes aus:

React-Native Run-Android - Variante = Release

Es sollte funktionieren.

Viel Glück!


Vielen Dank! Drei Tage lang gekämpft! Btw reagieren native 0,59 behoben das Problem.
Annie


1

Bild

Ich stehe vor diesem Problem, viel Suche und ich habe dieses Problem gelöst.

c:\ProjectFolder\ProjectName> react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

Dann führen Sie die native Reaktion aus:

c:\ProjectFolder\ProjectName>react-native run-android


1
Der Screenshot ist für die Antwort etwas irrelevant.
Tyler

1

Für alle von euch, die sich aus einer Create-React-Native-App entwickeln und ausgeworfen werden und dieses Problem haben development, hat dies für mich nur ein kleines Detail aus der akzeptierten Antwort heraus funktioniert

(im Projektverzeichnis) mkdir android / app / src / main / assets

Hier kommt der Teil, der sich ändert, weil Sie sich in der Entwicklung befinden und den --dev: falseTeil loswerden :

React-Native-Bundle - Plattform Android - Eintragsdatei index.js - Bundle-Ausgabe android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res

Nachdem Sie alle Terminals geschlossen haben, löschen Sie den Build-Ordner von Android / App /, um sicherzustellen, dass Sie sauber beginnen, um Ihre App zu erstellen, ein neues Terminal zu öffnen und

(im Projektverzeichnis) npm run android ausführen

fordert die Packager-Konsole (in einem anderen Terminal) auf und erstellt erfolgreich

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.