热更新

热更新是用户无需重更新App的情况下,App的页面进行动态更新的能力。

◆ 热更新的原理

apk/ipa被安装到手机以后,apk/ipa文件会被解压存在某个目录,这个目录我们把它叫做安装目录,安装目录是只读的。在App运行起来后,可能会要缓存数据,比如接口数据文件、数据库文件以及其它等等。我们把这个缓存目录成为App的运行目录(或者叫做的App的私有目录),运行目录是可读写的。Cordova Hybird App打包会把前端内容都包含在apk/ipa中,App运行起来后,webview容器会从App安装目录去加载前端资源。我们对这个加载路径做了修改,在App运行起来前先把安装目录的前端资源拷贝到运行目录的某个固定目录,然后让webview容器去这个固定目录去加载文件前端资源。由于这个目录是可读写的,在App运行起来后我们就可以通过接口请求前端资源的更新包覆盖到这个固定目录,这样就完成了热更新的动作。App删除时,App的安装目录和运行目录都会被删除。

热更新的限制

热更新仅仅对前端资源包有效。如果对插件了进行了修改,比如更新了插件并调用了插件新版本的API,就需要重新打包发布了。

需要注意的问题

前端资源从安装目录拷贝到运行目录的规则

  1. 当运行目录没有前端资源目录时;
  2. App的版本发生了变化时;

一个经常遇到的场景

手机装了1.0.0版的,对应的前端代码是a分支。对a分支代码进行了修改,再次打包1.0.0,覆盖安装到手机上,发现刚刚的修改并没有生效。这是因为新打的包里面的前端资源并没有重新拷贝到运行目录,因为App版本没有发生变化。

results matching ""

    No results matching ""