0

为什么既不热也不实时重新加载对这个 React Native 应用程序有任何影响?


抽象的

我最近开始作为承包商工作,为一家依赖expo. 一直使用上述工具,过渡到处理 React Native 的内部方法让我有些头疼。

将模拟器设置为对我有用的设置(在模拟器上手动打开热重载是我最接近的expo除了发送发生热重载的通知外,不会以任何方式影响应用程序。

此外,我认为问题可能是特定于平台的。主要前端开发人员在具有相同项目/开发环境设置的 Windows 上工作,并且没有遇到任何问题。

在启动应用程序时

要启动该应用程序,我使用的是自定义npm run android脚本(取决于gulp,如下所示:

npm run android

  • npm run buildRN && npm run rnAndroid
    • buildRNnpm run dropOldBabel && npm run buildNF && npm run rnLink && npm run buildImagesList
      • dropOldBabelcd node_modules && rm -f react-pure-render/.babelrc redux-devtools-themes/.babelrc base16/.babelrc react-json-tree/.babelrc form-schema-validation/.babelrc && cd ..
      • buildNFgulp buildNativeFiles
      • rnLinknode node_modules/react-native/local-cli/cli.js link
      • buildImagesListgulp generateImagesList
    • rnAndroidnode node_modules/react-native/local-cli/cli.js run-android

生成图像后,它启动 JS 服务器,启动 Gradle 并在目标设备(我的 Android 模拟器)上安装应用程序。

应用程序目标在 localhost 上的 port 上运行8081,因此adb -s emulator-5554 reverse tcp:8081 tcp:8081正在发出命令。我怀疑这个端口转发可能是这个问题的罪魁祸首,尽管我不知道如何支持这一说法。

然后应用程序以adb -s emulator-5554 shell am start -n com.firm.name/com.firm.name.MainActivitycommand 启动,node控制台愉快地显示Starting: Intent { cmp=com.firm.name/.MainActivity }


关于发展过程

根据经验expo告诉我,进行更改并保存文件以使更改生效就足够了。然而,这种情况并非如此。

除了通过模拟器通知我发生了热重载之外,保存文件什么都不做。除了这个 toast 通知,我什么也没得到。此外,打开 Live Reload 并没有改变;如果我通过停止服务器并调用完全重新启动应用程序,则应用更改npm run android


平台

操作系统

  • 基本 OS 6 Odin(基于 Ubuntu 20.04.2 LTS 构建)

节点

  • npm -v 6.4.1
  • 节点-v 10.14.1

反应原生

  • 反应原生 cli:2.0.1
  • 反应原生:0.59.10

安卓模拟器

  • Android 模拟器版本 30.8.4.0 (build_id 7600983)
  • Nexus 5X 图片

概括

总而言之 -什么可能导致这种行为?

为什么在模拟器清楚地注意到更改的情况下,代码在重新启动之前不会更改?

为什么它只发生在我的平台上,而不发生在 Windows 10 上?

4

0 回答 0