基于JSPatch平台实现iOS移动端的热更新机制
来源:互联网 发布:mysql my.ini配置编码 编辑:程序博客网 时间:2024/04/28 22:10
热更新
说到这个从字面意思理解就是无需关闭服务器就可以更新数据,从APP(iOS)角度理解就是不需要发布新版本就可以让客户体验新的功能,当然了最大的作用就是修复线上bug,无需等到下个版本发布,可以缓解一时之急。
目前方案
方案一 :用FaceBook的开源框架 Reactive Native;
相关资料:http://reactnative.cn/docs/0.35/getting-started.html
方案二:使用lua脚本;
参考资料:http://blog.csdn.net/kmyhy/article/details/8047575
方案三:采用JSPatch开源库;
相关资料:http://jspatch.com/
分析热更新
方案一,目前是比较火的技术前景,有将H5取而代之的感觉,笔者也正在学习中,中英文资料都很齐全,相关社区也很活跃,这里不再赘述,至于方案二,感兴趣的朋友可以去参考学习,学习成本较大,基于方案三,笔者在发布新版本前做了测试,效果还是不错的,这里把具体操作记录下,过程比较粗糙,想看详细步骤的可以直接看官网资料;
名词解释
JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 JavaScript调用任何 Objective-C 的原生接口,替换任意 Objective-C原生方法。目前主要用于下发 JS脚本替换原生 Objective-C代码,实时修复线上 bug。(来自官网)
实践Hotfix
第一步:注册APP,获取appkey,下载SDK,添加版本
注册下载 http://jspatch.com/ ,这里说下,目前为了方便采用SDK方式,它是对开源项目的再次封装,既然有轮子,也有免费轮子,自然我们就拿来用之,这是鲁迅先生说的;
这里注意:
1 添加版本要和测试或线上的版本一致;
2 要在Xcode开启钥匙链功能;
第二步:接入SDK,注册appkey代码
涉及代码
//JSPatch [JSPatch startWithAppKey:kJSPatch_KEY];
第三步:线下测试
1用sublime创建一个JS文件,命名:main.js注意这里名字必须一致,将其拖入到项目中;
2修改注册代码,如下:
//JSPatch [JSPatch testScriptInBundle];
3找到要修改的类-方法,先用OC语言写出正确的执行代码,例如:
我在APP中点击广告,之前功能是进入详情,现在我想修改为点击弹出警告框;
代码:
//旧- (void)openADPage:(CoverModel *)model{ ADWebViewController *detailVC = [[ADWebViewController alloc] init]; detailVC.model = model; detailVC.hidesBottomBarWhenPushed = YES; [self.navigationController pushViewController:detailVC animated:YES];}//新- (void)openADPage:(CoverModel *)model{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"测试" message:@"JSPatch替换警告" delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil]; [alert show];}
4 编写js代码,好了,问题来了,作为一个纯洁的iOS开发者,可能不会js,不过没有关系,打开下面网址:
http://bang590.github.io/JSPatchConvertor/ OS->JS
,福音啊福音,看示例就明白了吧,左边负责代码,注意格式,最上面是类名,点击转换,就看到js代码了,把JS代码复制到刚才加入项目的main.js文件,OK了,可以运行代码了;
5 点击首页广告,看看会不会弹出警告框,如果弹出,恭喜你,热更新测试OK了,可以进一步操作了;
线下效果:
第三步:线上部署
完成本地测试后,把main.js提交到线上平台,点击提交就OK了,这里注意可以先开发预览,最后再全量下发。
注意这里代码要修改:
//JSPatch [JSPatch startWithAppKey:kJSPatch_KEY]; [JSPatch sync];
线上效果:
至此:APP实现了热更新功能,节假日,重大bug,都可以游刃有余了,给产品加入Hotfix就是如此的简单。
本次涉及案例APP:
名称:IT面试宝典 for iOS
体验下载地址:点击下载
iOS中国开发者QQ群:222793876 ,欢迎加入一起讨论iOS技术。
- 基于JSPatch平台实现iOS移动端的热更新机制
- iOS通过 JSPatch实现 app的热更新
- iOS 使用JSPatch实现APP线上修复的热更新
- iOS- JSPatch 热更新
- iOS基于JSPatch的热修复
- iOS热更新,JSPatch初探
- iOS热更新技术---------------- JSPatch
- iOS热更新-JSPatch实现原理+Patch现场恢复
- iOS热更新-JSPatch实现原理+Patch现场恢复
- IOS热更新-JSPatch实现原理+Patch现场恢复
- IOS热更新-JSPatch实现原理+Patch现场恢复
- IOS热更新-JSPatch实现原理+Patch现场恢复
- ios 对于JSPatch的基本用法(热更新)
- JSPatch技术文档(关于ios的热更新)
- ios JSPatch热更新技术详解
- iOS JSPatch热更新之实战演练
- iOS利用JSPatch实现热修复的前后台代码
- App的热更新JSPatch的使用
- 数据类型之概览
- oracle数据库opatch补丁操作流程
- python sorted用法
- mysql中跟oracle的trunc函数的对应
- Android中ImageView.ScaleType属性值
- 基于JSPatch平台实现iOS移动端的热更新机制
- webstorm常用快捷键
- validator自定义方法
- ffmpeg视频解码分析
- FreeRTOS 软定时器实现
- 二叉树中和为某一值的路径
- OnGestureListener探索
- 通过NotificationManager一键更新下载apk安装包
- Hrbust2261近代化改修(优先队列+贪心+猜数据)