React Native Android部署文件到服务器

18

我是React Native的新手,想知道如何将React Native的部分或代码(例如JavaScript文件和资源)部署到服务器上并使用它。

目前它显示为localhost。

请告诉我如何在服务器上部署它,是否可能。

当我更改React代码时,是否需要每次在Play商店更新应用程序?

Code Push具体做什么,有没有办法从服务器加载我的React Native捆绑包并动态更新应用程序?


不可能,你的React Native代码必须编译成本地Android应用程序或本地iOS应用程序。然后,您需要将应用程序发布到Apple Store或Google Store。 但是,如果您的应用程序需要下载一些资源(图像、媒体、JSON等),则可以将这些资源放在服务器上。 - Alex Nguyen
每次我在React Native代码中更改内容时,是否需要更新应用程序? - amodkanthe
这取决于你的代码(设计)。如果你的代码能够检测到远程配置文件的更改并应用它,那么你就不需要每次在应用商店更新你的应用程序。 - Alex Nguyen
如果您的代码可以检测到远程配置文件的更改,如何实现此操作?有任何示例吗? - amodkanthe
https://github.com/redbooth/react-native-auto-updater => 这是一个简单的例子。 - Alex Nguyen
3个回答

8
React Native编译成两种本地语言,实际上你有两个应用程序,它们都不是网络应用。 你可以将图像资源放在远程服务器上,并在React Native代码中使用URL与缓存组合(这样你就不必每次都下载资产)。关于JavaScript文件,我会说不需要,除非你创建一个服务器并通过API调用请求功能。否则不用每次都与play商店交互,但通常情况下需要。

6

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

React Native 实际上所做的是将本地 API 暴露给 JavaScript 代码库。基本上,RN 应用程序由两部分组成:

enter image description here

正如你所想象的那样,本地部分是用 Swift/Objective-C/Java 编写的所有内容,这部分内容无法更新而不经过应用商店。
现在有趣的事情是JS部分,记住我们说过基本上你正在使用JS消耗本地API。如果你注意到当你运行react-native run-iosreact-native run-android时,一个服务器被实例化,它向你的模拟器/物理设备提供一个bundle
现在如果你考虑一下,基本上当你打开应用程序时,bundle被下载并运行。当你在模拟器上运行应用程序时更新代码库,服务器通过套接字发送信号通知客户端可用更新。此时,客户端下载bundle并重新加载应用程序。
现在回答你的问题,是的,你可以在你的服务器上提供JS bundle,并使应用程序在加载或恢复时检查JS Bundle是否有新版本可用,如果有,则下载它(OTA更新)。正如你所理解的那样,只有Javascript部分可以以这种方式进行更新,而本地部分则不能。

然而,已经有一些像微软的codepush这样的服务可以做到这一点。


5
你可以使用 code-push CLI 或者appcenter CLI将你的JavaScript代码发布到由Microsoft托管的云服务器上,然后使用react-native-code-push在你的React Native应用中获取更新。
另外,你也可以使用Expo自带的过渡网络(OTA)功能来实现。
以上两种服务都会为你管理其内部服务器,不允许你在自己的服务器上托管JS bundle (虽然有一个功能请求)。
需要注意的是,只有JavaScript代码库的更改才能进行OTA交付。对本地代码(例如Swift / Java)的任何更新仍必须通过App Store / Google Play进行交付。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接