## 常见问题

#### 报错 NDK not configured.

你需要下载并安装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

## 高级指南

#### 过期的版本

你可以删除掉过期很久的版本。在一段时间后，版本会被真正清理。

如果有用户还处在已经被清理的版本上，当他发起更新的时候，将不能通过版本差异比对进行更新，即只能进行全量更新。

#### CI的集成

在开发环境中，每次bundle都会生成一个不同名字的ppk文件，这不利于持续集成(CI)系统的引入。

要解决这个问题,你可以使用`--output`参数来指定输出ppk文件的名字和路径，便于进行自动发布。


#### 元信息(Meta Info)的使用

在发布热更新版本时，或者在网页端，你可以编辑版本的元信息。
这是一段在检查更新时可以获得的字符串，你可以在其中按你所想的格式保存一些信息。

举例来说，可能某个版本包含一些重要的更新内容，所以用户会得到一个不同样式的通知。如何使用元信息，完全取决于您的想象力！

下面会列举一些实战中更有意义的元信息的使用。

#### Hot-fix

有时候我们不小心发布了一个有严重问题的版本，所以需要进行一个紧急的修复，
此时我们可能希望之前已经更新到有问题版本的用户进行紧急甚至静默进行更新。

这时候,我们可以在元信息中包含有问题的版本的列表，而在客户端检查更新时，将从元信息里取到的列表与当前版本(currentVersion)比对，
如果匹配成功，我们就进行静默更新，否则则按照一般的更新流程提示用户。


#### 我是否可以搭建自己的热更新服务？

你可以单独使用本组件的原生部分(不包括js模块)和命令行工具中的`bundle`、`diff`、`diffFromIpa`、`diffFromApk`四个功能。

这些功能都不会使用我们的热更新服务，也无需注册或登录账号。但你可能要编写自己的js模块来与不同的热更新服务器通讯。


