mirror of
https://gitcode.com/gh_mirrors/re/react-native-pushy.git
synced 2025-12-17 18:22:38 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -11,8 +11,9 @@ React Native版本 | react-native-update版本
|
|||||||
<= 0.26 | 1.0.x
|
<= 0.26 | 1.0.x
|
||||||
0.27 - 0.28 | 2.x
|
0.27 - 0.28 | 2.x
|
||||||
0.29 - 0.33 | 3.x
|
0.29 - 0.33 | 3.x
|
||||||
0.34 - 当前 | 4.x
|
0.34 - 0.44 | 4.x
|
||||||
|
0.45 | 尚不支持
|
||||||
|
|
||||||
### 优势
|
### 优势
|
||||||
|
|
||||||
1. 命令行工具&网页双端管理,版本发布过程简单便捷,完全可以集成CI。
|
1. 命令行工具&网页双端管理,版本发布过程简单便捷,完全可以集成CI。
|
||||||
|
|||||||
@@ -124,15 +124,15 @@ public class UpdateModule extends ReactContextBaseJavaModule{
|
|||||||
Application application = activity.getApplication();
|
Application application = activity.getApplication();
|
||||||
ReactInstanceManager instanceManager = ((ReactApplication) application).getReactNativeHost().getReactInstanceManager();
|
ReactInstanceManager instanceManager = ((ReactApplication) application).getReactNativeHost().getReactInstanceManager();
|
||||||
|
|
||||||
if (instanceManager.getClass().getSimpleName().equals("XReactInstanceManagerImpl")) {
|
try {
|
||||||
JSBundleLoader loader = JSBundleLoader.createFileLoader(UpdateContext.getBundleUrl(application));
|
|
||||||
Field jsBundleField = instanceManager.getClass().getDeclaredField("mBundleLoader");
|
|
||||||
jsBundleField.setAccessible(true);
|
|
||||||
jsBundleField.set(instanceManager, loader);
|
|
||||||
} else {
|
|
||||||
Field jsBundleField = instanceManager.getClass().getDeclaredField("mJSBundleFile");
|
Field jsBundleField = instanceManager.getClass().getDeclaredField("mJSBundleFile");
|
||||||
jsBundleField.setAccessible(true);
|
jsBundleField.setAccessible(true);
|
||||||
jsBundleField.set(instanceManager, UpdateContext.getBundleUrl(application));
|
jsBundleField.set(instanceManager, UpdateContext.getBundleUrl(application));
|
||||||
|
} catch (Throwable err) {
|
||||||
|
JSBundleLoader loader = JSBundleLoader.createFileLoader(UpdateContext.getBundleUrl(application));
|
||||||
|
Field loadField = instanceManager.getClass().getDeclaredField("mBundleLoader");
|
||||||
|
loadField.setAccessible(true);
|
||||||
|
loadField.set(instanceManager, loader);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Method recreateMethod = instanceManager.getClass().getMethod("recreateReactContextInBackground");
|
final Method recreateMethod = instanceManager.getClass().getMethod("recreateReactContextInBackground");
|
||||||
|
|||||||
@@ -1,8 +1,19 @@
|
|||||||
## 常见问题
|
## 常见问题
|
||||||
|
|
||||||
#### 0.27以上版本RN报错问题
|
#### 报错 NDK not configured.
|
||||||
|
|
||||||
升级到1.1.x即可解决。
|
你需要下载并安装NDK,然后设置到环境变量`ANDROID_NDK_HOME`中。
|
||||||
|
|
||||||
|
#### 报错 Execution failed for task ':react-native-update:compileReleaseNdk'
|
||||||
|
参看 https://github.com/reactnativecn/react-native-pushy/issues/64#issuecomment-287967742
|
||||||
|
|
||||||
|
#### iOS报错 Unable to execute JS call: __fbBatchedBridge is undefined
|
||||||
|
|
||||||
|
如果直接修改了jsCodeLocation,将不能在iOS模拟器上运行。可以使用真机测试。要在发布之前测试热更新功能,可以用adhoc方式发布测试包并进行测试。adhoc发布的包可以用于uploadIpa和生成差异包。
|
||||||
|
|
||||||
|
#### XCode报错 "_BZ2_bzRead", referenced from 等
|
||||||
|
|
||||||
|
在工程target的Build Phases->Link Binary with Libraries中加入libz.tbd、libbz2.1.0.tbd
|
||||||
|
|
||||||
## 高级指南
|
## 高级指南
|
||||||
|
|
||||||
@@ -42,20 +53,6 @@
|
|||||||
这时候,我们可以在元信息中包含有问题的版本的列表,而在客户端检查更新时,将从元信息里取到的列表与当前版本(currentVersion)比对,
|
这时候,我们可以在元信息中包含有问题的版本的列表,而在客户端检查更新时,将从元信息里取到的列表与当前版本(currentVersion)比对,
|
||||||
如果匹配成功,我们就进行静默更新,否则则按照一般的更新流程提示用户。
|
如果匹配成功,我们就进行静默更新,否则则按照一般的更新流程提示用户。
|
||||||
|
|
||||||
## 常见问题
|
|
||||||
|
|
||||||
#### 报错 NDK not configured.
|
|
||||||
|
|
||||||
你需要下载并安装NDK,然后设置到环境变量`ANDROID_NDK_HOME`中。
|
|
||||||
|
|
||||||
#### iOS报错 Unable to execute JS call: __fbBatchedBridge is undefined
|
|
||||||
|
|
||||||
如果直接修改了jsCodeLocation,将不能在iOS模拟器上运行。可以使用真机测试。要在发布之前测试热更新功能,可以用adhoc方式发布测试包并进行测试。adhoc发布的包可以用于uploadIpa和生成差异包。
|
|
||||||
|
|
||||||
#### XCode报错 "_BZ2_bzRead", referenced from 等
|
|
||||||
|
|
||||||
在工程target的Build Phases->Link Binary with Libraries中加入libz.tbd、libbz2.1.0.tbd
|
|
||||||
|
|
||||||
#### 这个热更新服务收费吗?
|
#### 这个热更新服务收费吗?
|
||||||
|
|
||||||
目前我们的热更新服务完全免费,但限制每个账号不超过3个应用;每个应用不超过10个活跃的包和100个活跃的热更新版本;每个应用每个月不超过10000次下载。iOS和Android版本记做不同的应用。
|
目前我们的热更新服务完全免费,但限制每个账号不超过3个应用;每个应用不超过10个活跃的包和100个活跃的热更新版本;每个应用每个月不超过10000次下载。iOS和Android版本记做不同的应用。
|
||||||
|
|||||||
@@ -6,20 +6,19 @@
|
|||||||
|
|
||||||
所以我们也假设你已经拥有了开发React Native应用的一切环境,包括`Node.js`、`npm`、`XCode`、`Android SDK`等等。
|
所以我们也假设你已经拥有了开发React Native应用的一切环境,包括`Node.js`、`npm`、`XCode`、`Android SDK`等等。
|
||||||
|
|
||||||
如果你之前没安装过,你还必须安装[Android NDK](http://androiddevtools.cn),并设置环境变量`ANDROID_NDK_HOME`,指向你的NDK根目录(例如`/Users/tdzl2003/Downloads/android-ndk-r10e`)。
|
如果你之前没安装过,你还必须安装[Android NDK](http://androiddevtools.cn),版本最好选用r10e,并设置环境变量`ANDROID_NDK_HOME`,指向你的NDK根目录(例如`/Users/tdzl2003/Downloads/android-ndk-r10e`)。
|
||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
在你的项目根目录下运行以下命令:
|
在你的项目根目录下运行以下命令:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm install -g react-native-update-cli rnpm
|
npm install -g react-native-update-cli
|
||||||
npm install --save react-native-update@具体版本请看下面的表格
|
npm install --save react-native-update@具体版本请看下面的表格
|
||||||
react-native link react-native-update
|
react-native link react-native-update
|
||||||
```
|
```
|
||||||
|
|
||||||
`npm install -g react-native-update-cli rnpm`这一句在每一台电脑上仅需运行一次。
|
`npm install -g react-native-update-cli`这一句在每一台电脑上仅需运行一次。
|
||||||
如果RN版本低于0.29,请使用`rnpm link`代替`react-native link`命令。
|
|
||||||
|
|
||||||
* 注意 *
|
* 注意 *
|
||||||
|
|
||||||
@@ -38,7 +37,9 @@ React Native版本 | react-native-update版本
|
|||||||
<= 0.26 | 1.0.x
|
<= 0.26 | 1.0.x
|
||||||
0.27 - 0.28 | 2.x
|
0.27 - 0.28 | 2.x
|
||||||
0.29 - 0.33 | 3.x
|
0.29 - 0.33 | 3.x
|
||||||
0.34 - 当前 | 4.x
|
0.34 - 0.44 | 4.x
|
||||||
|
0.45 | 尚不支持
|
||||||
|
|
||||||
|
|
||||||
安装命令示例:
|
安装命令示例:
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user