app的热更新技术在最近由于苹果商城的原因,被推上了风口浪尖,苹果商城明确表示禁止app带有热更新功能。同时由于后续大量下架中国的app,因此导致app的热更新问题一时成了一段时间的热词。
首先,我来介绍一下什么是热更新:
热更新就是动态下发代码,它可以使开发者在不发布新版本的情况下,修复 BUG 和发布功能,让开发者得以绕开苹果的审核机制,避免长时间的审核等待以及多次被拒造成的成本。
热更新的优点:
在iOS中有两种App更新方式:一种是在AppStore内进行更新,更新时重新下载全部安装包;另一种就是热更新,用户只有在打开App时才会发现热更新包,更新时只需下载安装更新部分的代码,再次打开时即可。热更新最大的优点就是快,它可以绕过苹果方面的审核,更新通常只需一个晚上即可上线,另一大优点就是更新包较小,一般都在1M左右,用户不连接WiFi也可随意下载。
热更新的风险:
由于软件热更新绕过了苹果的审核,黑客开发者有可能会通过提交正常的版本之后,通过热更新的方式修改APP导致安全隐患,这违反了苹果的安全隐私政策。另外苹果此举既能改善部分使用混编语言的App的流畅性,也能重新掌握一些渠道的App审核权限。
现在,大家大概也知道什么是热更新了吧,那么我再来介绍一下什么是Cordova的热更新。
在cordova各种插件之中,有一个插件名叫cordova-hot-code-push-plugin,需要在打算热更新的app打包过程中添加这个插件。
添加方式为:cordova plugin add cordova-hot-code-push-plugin
然后修改工程根目录的config.xml文件,添加:
<chcp>
<auto-download enabled="true" />
<auto-install enabled="true" />
<config-file url="https://www.worldflying.cn/updateapp/www/chcp.json" />
</chcp>
然后新建一个cordova-hcp.json这个文件。
然后再里面填入
{
"update": "start",//下次启动时再升级
"content_url": "https://www.worldflying.cn/updateapp/www"
}
也可以是
{
"update": "now",//立刻升级
"content_url": "https://www.worldflying.cn/updateapp/www"
}
然后安装热更新命令行工具npm install -g cordova-hot-code-push-cli
然后执行cordova-hcp build这个命令。当执行完这个命令后,会在项目根目录下的www目录中生成chcp.json和chcp.manifest两个文件。chcp.json包含了项目的版本信息,服务器的更新地址等信息。chcp.manifest包含了www目录下的文件和对应的hash码值。
然后直接执行cordova build android或是其他平台,那么这个app就具备了自动升级的功能。
服务器的配置就很简单了,只需要将工程中的www文件放到web服务器中对应的www中,然后将生成的chcp.json也放在那里即可。
最后说明一下,如果程序希望热更新,必须包入<script type="text/javascript" src="cordova.js"></script>
并且在document.addEventListener("deviceready", function () { return 0;}, false);
执行前页面不要跳转到其他地方去。