我在我的Windows PC上使用React native 0.52.0和react-native-cli 2.0.1进行android开发。尽管我做了所有的改变。当我运行react-native run-android
时,它会成功构建,但是当我运行它时,我会得到默认的反应原生屏幕。
运行react-native run-android
时的结果 -
我得到的应用程序 -
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>
)
}
当我运行react-native init albums
时,它只是一个创建的index.js文件,没有index.android.js或index.ios.js文件
我做错了什么?
答案 0 :(得分:27)
假设您位于正确的文件夹中,请尝试执行此操作:
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/
如果您有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/
然后执行react-native run-android。
答案 1 :(得分:11)
<强>解强>
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
OUTPUT将是:
`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
之后
再次运行react-native run-android
,您将找到修改工作。
https://lengerrong.blogspot.am/2018/01/react-native-run-android-do-not.html
答案 2 :(得分:2)
您可能正在更新错误的文件而不是在AppRegistry类中调用它。
检查(或发布)完整的index.android.js并确保它正在调用和导入的文件是您实际修改的文件。
答案 3 :(得分:2)
这对我有用。 步骤1)
rm -rf /usr/local/var/run/watchman && brew uninstall watchman && brew install watchman
Step2)
react-native start
答案 4 :(得分:2)
此github上的comment解决了我的问题。
@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
解决方案:删除.git/index.lock
文件
## root app dir
rm -f .git/index.lock
答案 5 :(得分:1)
这对我有用:
在您的项目文件夹中运行此
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
在文件夹中扫描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
再次运行react-native run-android
我分享了我找到此解决方案的链接: https://lengerrong.blogspot.com/2018/01/react-native-run-android-do-not.html
答案 6 :(得分:1)
对我来说,问题是我从AndroidManifest.xml中删除了Internet权限(因为从技术上讲它是不需要的)。 React Native使用该权限将您的应用程序连接到开发机器(并启用实时调试)。
<uses-permission android:name="android.permission.INTERNET" />
答案 7 :(得分:1)
在终端窗口中转到项目文件夹,然后尝试使用此命令
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/
答案 8 :(得分:1)
运行下面的脚本,然后执行1.gradlew clean 2.react-native链接
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
答案 9 :(得分:1)
尝试@SmoggeR_js答案后,如果仍然有相同的问题,请尝试以下方法 (假设您已经创建了密钥并且已经对apk进行了签名)
build
文件夹内删除android/app
build
文件夹内删除android
rm -rf $HOME/.gradle/caches/
以删除缓存build.gradle
-> android/app/build.gradle
apply from: "../../node_modules/react-native/react.gradle"
index.android.bundle
文件夹assets
的{{1}}文件中删除( android/app/src/main/assets/index.android.bundle)
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 --variant=release
(您必须生成签名密钥,并且所有密钥应在gradle文件ref(https://s-pace.github.io/react-native/docs/signed-apk-android.html)中更新答案 10 :(得分:1)
尝试一下
cd .git (in your react-native folder)
rm index.lock
并重新启动Metro bundler,即react-native start
wallaa !! ...
答案 11 :(得分:1)
如果您使用的是 index.android.js ,请按照以下步骤操作:
在 android / app / src / main / assets 中删除 index.android.bundle ,然后-
react-native软件包--platform android --dev false --entry-file index.android.js --bundle-output android / app / src / main / assets / index.android。捆绑--assets-dest android / app / src / main / res /
cd ./android
./ gradlew assembleRelease -x bundleReleaseJsAndAssets
答案 12 :(得分:0)
如果您使用的是“codepush”。
我尝试了两个小时来弄清楚为什么我的 Android 版本总是回滚到旧代码并且不显示新功能。
原因是旧的 CodePush 导致应用降级。
答案 13 :(得分:0)
就我而言,当我禁用调试时,它将更新。 所以这是我的解决方案。
Chrome开发者工具中的>网络>禁用缓存 希望shell为您工作
答案 14 :(得分:0)
我犯了一个愚蠢的错误,那就是不保存对App.js的编辑。保存后数据将反映:)
答案 15 :(得分:0)
我遇到了同样的问题,但是它并不仅在生产版本上更新了我的代码,在开发中也能正常工作。
我的问题是CodePush,它正在更新我的应用程序,因为它具有与上次CodePush发行目标版本相同的版本,并且是强制性更新(我没有更改版本目标,因为它只是出于测试目的),然后,我在App.js上注释了CodePush代码,它可以正常工作。
答案 16 :(得分:0)
没有index.android.js或index.ios.js文件
在这种情况下,您必须按照以下说明在手机/仿真器上进行操作:
保存您的App.js
后,请记住以大写形式键入两次R
要使其自动更改,请在Android模拟器上按CTRL + M
(在MacOS上为CMD + M
)或摇晃具有正在运行的应用的Android设备,然后选择Hot reloading
(保持当前状态,更改仅更改的文件)或Live reloading
(重新加载整个应用程序)。
答案 17 :(得分:0)
分3个步骤进行修复:
现在,每次更改代码后,您的应用都会自动更新。
答案 18 :(得分:0)
答案 19 :(得分:0)
在您的项目目录中,有package.json文件。您可以在该json文件中的脚本下添加以下代码段:之后,您可以使用一个npm run android-windows
命令来运行应用程序。为了正常工作,您应该添加以下代码脚本。
"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"
答案 20 :(得分:0)
打开package.json文件并更新此代码。
"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"
},
假设您位于正确的文件夹中,请尝试执行以下操作:
仅运行此命令,它将自动同时执行两个命令。
npm run android
答案 21 :(得分:0)
就我而言,删除gradle.properties中的下一行解决了它。
org.gradle.configureondemand = true