了解 react-native 的代码推送
Understanding code push for react-native
我开始为 iOS 和 Android 构建一个 React Native 应用程序。我已经通读了react native application的文档,但是现在有一件事我不明白:
react-native app是完全原生应用吗?
他们用 react-native 说,会的。那我为什么要问这个问题呢?嗯,通过https://github.com/Microsoft/react-native-code-push找到了提问的理由。根据代码推送,他们能够动态更新应用程序。这是通过更新应用程序的 javascript 部分来完成的。但是等等,如果应用程序是真正的原生应用程序,那么在应用程序的最终版本中不应该有任何 javascript,对吗?那么他们是怎么做到的呢?他们是在代码推送服务器上编译应用程序,然后将编译后的应用程序发送给用户还是什么?这真让我担心,react-native 应用程序真的不是完全原生的应用程序。
The CodePush plugin helps get product improvements in front of your end users instantly, by keeping your JavaScript and images synchronized with updates you release to the CodePush server. This way, your app gets the benefits of an offline mobile experience, as well as the "web-like" agility of side-loading updates as soon as they are available. It's a win-win!
此外,我对此表示怀疑的原因是因为他们还在代码推送文档中说,他们无法更新 react-native 应用程序的本机部分:
Note: Any product changes which touch native code (e.g. modifying your AppDelegate.m/MainActivity.java file, adding a new plugin) cannot be distributed via CodePush, and therefore, must be updated via the appropriate store(s).
如果 react-native 应用程序是完全原生的,那么最终,所有代码都应该是原生代码。所以我真的不明白为什么更新native native代码会比编译成native的代码更难?
如果您只更改 /src/
文件夹中的代码 (JS 代码) 和 而没有 添加本机模块
您可以使用CodePush来更新您的应用程序。
如果您更改 /src/
文件夹中的代码 (JS 代码) 和 添加 一些本地模块,您不能使用CodePush来更新您的应用程序。
你的JS代码是由原生组件编译和读取的。这就是为什么你可以更新JS层。
如果您查看您的 .ipa 文件并打开 main.jsbundle (需要取消缩小),您可以看到您的 JS 代码。示例:
我开始为 iOS 和 Android 构建一个 React Native 应用程序。我已经通读了react native application的文档,但是现在有一件事我不明白:
react-native app是完全原生应用吗?
他们用 react-native 说,会的。那我为什么要问这个问题呢?嗯,通过https://github.com/Microsoft/react-native-code-push找到了提问的理由。根据代码推送,他们能够动态更新应用程序。这是通过更新应用程序的 javascript 部分来完成的。但是等等,如果应用程序是真正的原生应用程序,那么在应用程序的最终版本中不应该有任何 javascript,对吗?那么他们是怎么做到的呢?他们是在代码推送服务器上编译应用程序,然后将编译后的应用程序发送给用户还是什么?这真让我担心,react-native 应用程序真的不是完全原生的应用程序。
The CodePush plugin helps get product improvements in front of your end users instantly, by keeping your JavaScript and images synchronized with updates you release to the CodePush server. This way, your app gets the benefits of an offline mobile experience, as well as the "web-like" agility of side-loading updates as soon as they are available. It's a win-win!
此外,我对此表示怀疑的原因是因为他们还在代码推送文档中说,他们无法更新 react-native 应用程序的本机部分:
Note: Any product changes which touch native code (e.g. modifying your AppDelegate.m/MainActivity.java file, adding a new plugin) cannot be distributed via CodePush, and therefore, must be updated via the appropriate store(s).
如果 react-native 应用程序是完全原生的,那么最终,所有代码都应该是原生代码。所以我真的不明白为什么更新native native代码会比编译成native的代码更难?
如果您只更改
/src/
文件夹中的代码 (JS 代码) 和 而没有 添加本机模块 您可以使用CodePush来更新您的应用程序。如果您更改
/src/
文件夹中的代码 (JS 代码) 和 添加 一些本地模块,您不能使用CodePush来更新您的应用程序。
你的JS代码是由原生组件编译和读取的。这就是为什么你可以更新JS层。
如果您查看您的 .ipa 文件并打开 main.jsbundle (需要取消缩小),您可以看到您的 JS 代码。示例: