Github代码地址:https://github.com/coffeelife/HotCodeTest.git
搭建Cordova
环境教程网址:https://rensanning.iteye.com/blog/2163892
//使用教程git clone https://github.com/coffeelife/HotCodeTest.gitcd HotCodeTestnpm install -g cordova
npm install -g ripple-emulator
cd HotCodeTestnpm install
cordova platforms add android@5//5代表安卓版本号,5以上的话ripple emulate需要使用iphone模拟器cordova platforms add ios@5//5版本可以兼容异形屏//各个端运行ripple emulate//chrome浏览器运行,前提安装了ripple-emulatecordova run android//platforms安装了androidcordova run ios//platforms安装了ios
背景
现在很多应用和游戏都使用热更新功能,常见的热更新框架有微软的codepush
,还有JsPatch
,本篇文章介绍一下我们原来是用过的hotCode
热更框架,原来做Cordova
项目使用过热更新,主要方便苹果发版,苹果发版每次都要经过审核流程,需要时间太长,因此引入了Cordova
内部的hotCode
插件,来解决频繁发版的问题。
此项目以Cordova
项目为基础,我是在Mac
下操作所有流程,需要有一个用来存放热更新源文件的服务器,当然需要可以外网访问到,然后需要安装node.js
和Cordova
环境,需要Android和ios开发环境支持。
Cordova环境搭建
搭建Cordova
环境教程网址:https://rensanning.iteye.com/blog/2163892
注意:安装Cordova
之前需要安装Android
环境,具体按照上面网址配置
安装Cordova
//安装node.js
npm -v//检测是否安装成功
npm install -g cordova//安装Cordova CLI
cordova -v//检测cordova是否安装成功
创建Cordova项目
cordova cordova create HotCodeTest com.gm.test.hotcode HotCodeTest
HotCodeTest
为工程名称
com.gm.test.hotcode
为工程包名
HotCodeTest
为项目名称
为项目添加平台支持
//进入工程目录cd HotCodeTestcordova platforms add ios //添加ios平台cordova platforms add android 添加android平台//注意 我这为了兼容使用了Android 5.0的版本cordova platforms add android@5
添加成功之后
package.json
{
"name": "com.gm.test.hotcode",
"displayName": "HotCodeTest",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the deviceready event.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"ecosystem:cordova"
],
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"dependencies": {//ios和Android平台版本
"cordova-android": "^5.2.2",
"cordova-ios": "^5.0.1"
},
"devDependencies": {
"cordova-plugin-whitelist": "^1.3.3"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {}
},
"platforms": [//ios和Android平台
"ios",
"android"
]
}
}
此时你会发现项目目录地下platforms
多了ios
和android
两个目录
运行项目
如果想要在chrome
浏览器中查看效果的话,可以安装一个工具Ripple Emulator
npm install -g ripple-emulator
在浏览器中查看效果
ripple emulate
这样会在localhost的4400开启一个服务,并会自动打开浏览器查看效果。
访问网址:http://localhost:4400/?enableripple=cordova-3.0.0
效果如图
在真机上查看效果,安卓的话,可以用Android studio引入项目,然后运行到手机上也可以使用下面的命令行;ios的话可以用xcode引入项目,然后运行到模拟器或者真机上,效果如图
cordova run android//运行到Android虚拟机或者真机上
cordova run ios//运行到ios虚拟机或者真机上
使用hotCode插件(plugin)
使用cordova内置的hotcode插件:cordova-hot-code-push-plugin
流程示意图
用户打开你的app.
插件初始化,在后台进程启动 升级加载器(update loader).
Update loader 从
config.xml
取config-file
配置(一个url),并从此url加载一段 JSON 配置. 然后它把这段JSON配置中的release
版本号 和当前app 已经安装的进行比较. 如果不同 - 进入下一步.Update loader 使用app配置(application config)中的
content_url
,去加载清单文件(manifest). 它会找出自上次升级以来,哪些文件需要更新.Update loader 从
content_url
下载更新文件.如果一切顺利 - 发出一个"升级文件已经准备好,可以安装了"的通知.
升级文件已安装, app重新进入更新过的页面.
安装hotcode
npm install -g cordova-hot-code-push-cli//全局安装hotcode工具cordova plugin add cordova-hot-code-push-plugin//添加热更新插件
安装完成之后package.json
文件如下
"dependencies": {
"cordova-android": "^5.2.2",
"cordova-hot-code-push-plugin": "^1.5.3",//多了这个插件
"cordova-ios": "^5.0.1"
},
"devDependencies": {
"cordova-plugin-whitelist": "^1.3.3"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-hot-code-push-plugin": {}//多了这个插件
},
"platforms": [
"ios",
"android"
]
}
配置hotcode配置文件
在项目根目录下的config.xml
文件中添加内容