【问题标题】:React native android deploy files to server将本机 android 部署文件反应到服务器
【发布时间】:2018-11-08 23:28:46
【问题描述】:

我是 React Native 的新手,我想知道如何在服务器上部署 react native 部分或代码(如 javascript 文件和资产)然后使用它。

目前显示为 localhost

请让我知道如何在服务器上部署它是否可能。

每次更改代码的 react 部分时,是否需要更新 Play 商店中的应用程序?

代码推送到底是做什么的,有什么方法可以从服务器加载我的 react native 包并动态更新应用程序

【问题讨论】:

  • 不可能,您的 react-native 代码必须编译为原生 Android 应用或原生 ios 应用。然后你需要将你的应用发布到苹果商店或谷歌商店。但是如果您的应用需要下载一些资源(图片、媒体、json ..),您可以将这些资源放在服务器上。
  • 所以每次我在反应本机代码中更改某些内容时都需要更新应用程序
  • 这取决于您的代码(设计)。如果您的代码可以从远程配置文件中检测到更改并应用它,那么您不需要每次在应用商店更新您的应用。
  • 如何做到这一点如果您的代码可以从远程配置文件中检测到更改关于此的任何示例?
  • github.com/redbooth/react-native-auto-updater => 这是一个简单的例子

标签: javascript android react-native react-native-android react-native-code-push


【解决方案1】:

React-native 编译为两种本地语言。 实际上,您有 2 个应用程序,其中没有一个是 Web 应用程序。

您可以在服务器上远程拥有一个图像资源,并使用 react-native 代码中的 URL 与缓存相结合(因此您不必每次都下载资源)。​​

考虑到 JavaScript 文件,我会拒绝。除非您创建服务器并通过 API 调用请求该功能。

不,您不必每次都与 Play 商店互动,但通常您会这样做 :)

【讨论】:

    【解决方案2】:

    我认为你需要了解 React Native 的工作原理才能理解。

    RN 实际所做的是将原生 API 暴露给您的 Javascript 代码库。基本上一个 RN App 由两部分组成:

    您可以想象,Native 部分是用Swift/ Objective-C/ Java 编写的所有内容,并且如果不通过应用商店就无法更新。

    现在有趣的是 JS 部分,记住我们说过,基本上你是在用 JS 使用原生 API。如果您在运行 react-native run-iosreact-native run-android 时注意到一个服务器实例化,它为您的模拟器/物理设备提供 捆绑

    现在,如果您基本上在打开应用程序时考虑一下,捆绑包会被下载然后运行。当您在应用程序在模拟器上运行时更新您的代码库时,服务器会通过套接字发送一个信号以通知客户端有可用的更新。此时客户端会下载捆绑包并重新加载应用程序。

    现在回答您的问题,是的,您可以在您的服务器上提供 JS 捆绑包,并让应用程序检查何时加载或恢复是否有新版本的 JS 捆绑包可用,如果有,请下载它(OTA 更新)。正如您所理解的那样,只有 Javascript 部分可以以这种方式更新,而原生部分也不能。

    再说一次,有一些服务已经这样做了,比如 MS 的 codepush。

    【讨论】:

      【解决方案3】:

      您可以使用code-push cliappcenter cli 将您的Javascript 代码发布到云服务器(由Microsoft 托管),并使用react-native-code-push 在您的RN 应用程序中检索更新。

      或者,您可以使用 Expo,它自带无线 (OTA) 更新功能。

      上述两个服务都在内部为您管理它们的服务器,并且不允许您在自己的服务器上托管 JS 包(尽管有一个 feature request 用于它)。

      请注意,只有对 Javascript 代码库的更改才能通过 OTA 交付。对本机代码(例如 Swift/Java)的任何更新仍必须通过 App Store/Google Play 交付。

      【讨论】:

        猜你喜欢
        • 2018-07-25
        • 2011-11-02
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 2021-11-29
        • 2017-10-21
        • 2014-03-07
        • 2019-02-28
        相关资源
        最近更新 更多