React native run-android不更新修改后的代码

时间:2018-01-17 15:04:30

标签: android react-native npm react-native-android

我在我的Windows PC上使用React native 0.52.0和react-native-cli 2.0.1进行android开发。尽管我做了所有的改变。当我运行react-native run-android时,它会成功构建,但是当我运行它时,我会得到默认的反应原生屏幕。

运行react-native run-android时的结果 - enter image description here

我得到的应用程序 -

enter image description here

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文件 我做错了什么?

22 个答案:

答案 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

其他链接: https://github.com/facebook/watchman/blob/4b98623e8fde17588f27494f3ae8f084b9b227d3/QueryableView.cpp#L48

答案 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进行了签名)

  1. build文件夹内删除android/app
  2. build文件夹内删除android
  3. 运行rm -rf $HOME/.gradle/caches/以删除缓存
  4. 打开build.gradle-> android/app/build.gradle
  5. 评论此行 apply from: "../../node_modules/react-native/react.gradle"
  6. index.android.bundle文件夹assets的{​​{1}}文件中删除( android/app/src/main/assets/index.android.bundle)
  7. 运行以下命令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. 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 ,然后-

  1. 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 /

  2. cd ./android

  3. ./ gradlew assembleRelease -x bundleReleaseJsAndAssets

答案 12 :(得分:0)

如果您使用的是“codepush”。

我尝试了两个小时来弄清楚为什么我的 Android 版本总是回滚到旧代码并且不显示新功能。

原因是旧的 CodePush 导致应用降级。

答案 13 :(得分:0)

就我而言,当我禁用调试时,它将更新。 所以这是我的解决方案。

Chrome开发者工具中的

>网络>禁用缓存 希望shell为您工作

答案 14 :(得分:0)

我犯了一个愚蠢的错误,那就是不保存对App.js的编辑。保存后数据将反映:)

答案 15 :(得分:0)

对于CodePush用户

我遇到了同样的问题,但是它并不仅在生产版本上更新了我的代码,在开发中也能正常工作。

我的问题是CodePush,它正在更新我的应用程序,因为它具有与上次CodePush发行目标版本相同的版本,并且是强制性更新(我没有更改版本目标,因为它只是出于测试目的),然后,我在App.js上注释了CodePush代码,它可以正常工作。

答案 16 :(得分:0)

  

没有index.android.js或index.ios.js文件

在这种情况下,您必须按照以下说明在手机/仿真器上进行操作:

enter image description here

保存您的App.js后,请记住以大写形式键入两次R

要使其自动更改,请在Android模拟器上按CTRL + M(在MacOS上为CMD + M)或摇晃具有正在运行的应用的Android设备,然后选择Hot reloading(保持当前状态,更改仅更改的文件)或Live reloading(重新加载整个应用程序)。

答案 17 :(得分:0)

分3个步骤进行修复:

  1. 启用实时刷新
  2. 禁用热重装
  3. 在“开发设置”中,取消选中“ JS开发模式”

现在,每次更改代码后,您的应用都会自动更新。

答案 18 :(得分:0)

打开您的Android Studio->“ 工具”菜单->“ AVD管理器”,然后右键单击您使用的模拟器,选择“ 擦除数据< / strong>”,然后选择“ 立即启动”即可解决该问题。

enter image description here

答案 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"

enter image description here

答案 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