首页 文章

理解反应原生的代码推送

提问于
浏览
2

我正在开始为iOS和Android构建一个react本机应用程序 . 我已经阅读了本机应用程序的文档,但现在有一件事我不明白:

Is react-native app fully native application?

他们说,反应本土,它会是 . 那我为什么问这个问题呢?好吧,我找到了通过https://github.com/Microsoft/react-native-code-push提问的原因 . 根据代码推送,他们能够动态更新应用程序 . 这是通过更新应用程序的javascript部分来完成的 . 但是等等,如果应用程序是真正的本机应用程序,那么在应用程序的最终版本中应该没有任何javascript,我是对的吗?那么他们是怎么做到的呢?他们是在代码推送服务器上编译应用程序,然后将编译后的应用程序发送给用户还是什么?这真的让我担心本机应用程序本身并不完全是本机应用程序 .

CodePush插件通过使您的JavaScript和图像与发布到CodePush服务器的更新保持同步,帮助您立即在最终用户面前进行产品改进 . 通过这种方式,您的应用可以获得离线移动体验的好处,以及一旦可用,就可以获得侧面加载更新的“类似网络”的敏捷性 . 这是双赢的!

此外,我怀疑这是因为他们也在代码推送文档中说,他们无法更新本机应用程序的本机部分:

注意:任何与本机代码相关的产品更改(例如,修改AppDelegate.m / MainActivity.java文件,添加新插件)都无法通过CodePush分发,因此必须通过相应的商店进行更新 .

如果react-native app完全是原生的,那么最后,所有代码都应该是本机代码 . 所以我真的不明白为什么更新本机本机代码比编译为本机的代码更难?

1 回答

  • 2
    • 如果仅更改 /src/ 文件夹(JS代码)中的代码和 without 添加本机模块,则 can 使用CodePush更新您的应用程序 .

    • 如果更改 /src/ 文件夹(JS代码)和 add 某些本机模块中的代码,则 can't 使用CodePush更新您的应用程序 .

    您的JS代码由本机组件编译和读取 . 这就是为什么你可以更新JS层 .

    如果您查看.ipa文件并打开main.jsbundle (unminify required) ,您可以看到您的JS代码 . 例:

    enter image description here

相关问题