Ich verwende React native 0.52.0 und React-native-cli 2.0.1 auf meinem Windows-PC für Android-Entwicklung. Trotz aller Änderungen, die ich gemacht habe. Wenn ich react-native run-Android
ausführt, wird es erfolgreich erstellt, aber wenn ich es ausführe, erhalte ich den standardmäßig eingebauten Bildschirm.
Das Ergebnis beim Ausführen von react-native run-Android
-
Die App, die ich bekomme
index.js
import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('albums', () => App);
app.js
import React from 'react'
import ReactNative, { Text } from 'react-native'
export default const App = () => {
return (
<Text>Hello World</Text>
)
}
Als ich react-native init albums
lief, wurde nur eine index.js-Datei erstellt. Es gab keine index.Android.js- oder index.ios.js-Datei Was mache ich falsch?
Gehen Sie davon aus, dass Sie sich im richtigen Ordner befinden, und versuchen Sie Folgendes:
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 Sie index.Android.js haben, führen Sie stattdessen Folgendes 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/
Dann führen Sie einfach Reactative-Android aus.
L&OUML;SUNG
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
AUSGABE wird sein:
`c:\Users\lenger\Desktop\webrowser>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
Scanning folders for symlinks in c:\Users\lenger\Desktop\webrowser\node_modules (43ms)
Scanning folders for symlinks in c:\Users\lenger\Desktop\webrowser\node_modules (38ms)
Loading dependency graph, done.
bundle: start
bundle: finish
bundle: Writing bundle output to: Android/app/src/main/assets/index.Android.bundle
bundle: Done writing bundle output
und danach
Wenn Sie react-native run-Android
erneut ausführen, finden Sie Ihre Modifikationsarbeit.
https://lengerrong.blogspot.am/2018/01/react-native-run-Android-do-not.html
Sie aktualisieren wahrscheinlich die falsche Datei und rufen sie nicht in der AppRegistry-Klasse auf.
Überprüfen Sie (oder veröffentlichen Sie) Ihren vollständigen index.Android.js und stellen Sie sicher, dass die Datei, die Sie aufrufen und importieren, die Datei ist, die Sie tatsächlich ändern.
Das hat für mich funktioniert. Schritt 1)
rm -rf /usr/local/var/run/watchman && brew uninstall watchman && brew install watchman
Schritt 2)
react-native start
Das hat für mich funktioniert:
Führen Sie dies in Ihrem Projektordner aus
c:\Users\lenger\Desktop\YourProjectFolder>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
Scannen von Ordnern nach Symlinks in c:
\Users\lenger\Desktop\webrowser\node_modules (43ms)
Scanning folders for symlinks in c:\Users\lenger\Desktop\webrowser\node_modules (38ms)
Loading dependency graph, done.
bundle: start
bundle: finish
bundle: Writing bundle output to: Android/app/src/main/assets/index.Android.bundle
bundle: Done writing bundle output
Führen Sie erneut reaktives Ausführen von Android aus
Ich teile den Link, wo ich diese Lösung gefunden habe: https://lengerrong.blogspot.com/2018/01/react-native-run-Android-do-not.html
gehen Sie in Ihrem Terminalfenster zu Ihrem Projektordner und versuchen Sie dann diesen Befehl
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/
Das Kommentar auf Github hat mein Problem behoben.
@neonsec Cool, it do works !
and I find a reason why this happened
https://github.com/facebook/watchman/blob/4b98623e8fde17588f27494f3ae8f084b9b227d3/QueryableView.cpp#L48
it looks like when a .git/index.lock or a .hg/wlock file exist, watchman will do nothing
Lösung: LÖSCHEN .git/index.lock
Datei
## root app dir
rm -f .git/index.lock
anderer Link: https://github.com/facebook/watchman/blob/4b98623e8fde17588f27494f3ae8f084b9b227d3/QueryableView.cpp#L48
Wenn Sie index.Android.js verwenden, gehen Sie folgendermaßen vor:
Löschen Sie index.Android.bundle innerhalb Android/app/src/main/assets und dann -
Natives Reaction-Bundle --Plattform Android --dev false --Eintrag-Datei index.Android.js --bundle-Ausgabe Android/app/src /main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/
cd ./Android
./ gradlew assembleRelease -x bundleReleaseJsAndAssets
führen Sie anschließend das folgende Skript aus, indem Sie einfach 1.gradlew clean 2.react-native link ausführen
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
Für mich bestand das Problem darin, dass ich Internetberechtigungen aus meiner AndroidManifest.xml entfernt hatte (da dies technisch nicht erforderlich war). React Native verwendet diese Berechtigung, um Ihre App mit dem Entwicklungscomputer zu verbinden (und Live-Debugging zu aktivieren).
<uses-permission Android:name="Android.permission.INTERNET" />
Öffnen Sie die package.json-Datei und aktualisieren Sie diesen Code.
"scripts": {
"Android": "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",
"ios": "react-native run-ios"
},
Wenn Sie sich im richtigen Ordner befinden, versuchen Sie Folgendes:
Führen Sie diesen Befehl nur aus, es werden automatisch beide Befehle ausgeführt.
npm run Android
Fix es in 3 Schritten:
Jetzt wird Ihre App jedes Mal automatisch aktualisiert, wenn Sie Änderungen an Ihren Codes vorgenommen haben.
Ich hatte das gleiche Problem, aber es hat meinen Code nicht nur in einer Produktionsversion aktualisiert, sondern funktioniert auch in der Entwicklung.
Mein Problem war CodePush, es wurde meine App aktualisiert, da sie dieselbe Version wie die letzte Zielversion von CodePush hatte und ein obligatorisches Update war (ich habe das Versionsziel nicht geändert, weil es nur zu Testzwecken war) hat den CodePush-Code in meiner App.js kommentiert und funktioniert einwandfrei.
In meinem Fall löste das Löschen der Zeile in gradle.properties das Problem.
org.gradle.configureondemand = true
es gab keine Datei index.Android.js oder index.ios.js
In diesem Fall müssen Sie die Anweisungen auf Ihrem Handy/Emulator wie folgt befolgen:
Nach dem Speichern Ihres App.js
, denken Sie daran, zweimal R
in Großbuchstaben einzugeben
Um es automatisch zu ändern, drücke auf Android Emulator) CTRL + M
(CMD + M
unter MacOS) oder schütteln Sie das Android Gerät, auf dem die App ausgeführt wird, und wählen Sie Hot reloading
(aktuellen Status beibehalten, nur die Datei ändern, die Sie geändert haben) oder Live reloading
(gesamte App neu laden).
In Ihrem Projektverzeichnis befindet sich die package.json-Datei. Sie können in dieser json-Datei unter Skripts folgendes Codeausschnitt hinzufügen :. Danach können Sie die Anwendung mit einem Befehl ausführen, der npm run Android-windows
ist. Um gut zu funktionieren, sollten Sie das folgende Codeskript hinzufügen.
"Android-windows": "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"