您的位置:首页 > 移动开发 > IOS开发

iOS微更新,热更新,局部更新,bug修复

2016-01-13 16:56 435 查看
iOS微更新,热更新,局部更新,bug修复

iOS不用重新打包,利用JSPatch来修复BUG

假如我们辛辛苦苦加班加夜赶出来的版本上线后发现有个小bug,会导致系统崩溃。我们能做的就是赶紧修复bug然后提交从新AppStore审核,这样也需要大概一个星期时间,一个小小的bug需要付出如此大的代价。

使用JSPatch可以解决这样的问题,它可以根据OC运行时机制,在有bug的地方用JS脚本去替换原生方法,无需更新APP即时修复bug。
OC语言是一门动态性语言,OC上创建类,调用方法,点击、手势的响应事件都是通过OC的Runtime(运行时)来实现的。我们可以通过相同的方法名和类名,在运行时来截取OC的响应事件或创建类(偷梁换柱)。
这就是我们可以用JS文件来修复BUG的原理。

我们先看一下代码:

1.添加JSPatch

cocopods添加JSpatch三方库 github地址: https://github.com/bang590/JSPatch
cocopods添加方法(详情可以看Github):

platform :ios, '6.0'
pod 'JSPatch'


如图:



2.添加JS引擎

在iOS里面用JS需要一个JS引擎,在coco里面已经存在一个JS引擎,看图:

项目-->TARGETS-->General-->Linked Frameworks and Libraries 点击“+”号搜索js



3.添加js文件

编写一个JS文件(文本编辑后缀改为js就行):



4.在APPDelegate里面添加JSPatch



这样JS就可以在运行时截取与demo.js里面相同的方法名或类名的方法

5.我们写一个测试

建立一个button并写好点击事件:



运行一下:



6.我们编写demo.js文件

如图:



当然这只是个测试证明JS可以在运行时截取OC的响应事件,具体要是创建控制器等一些大型的页面可以参考

github:https://github.com/bang590/JSPatch

我这里就不再多说

重点:这个夜市我刚刚研究的只适用于动态类型的OC语言。至于Swift,因为swift是静态语言,我也写了一下发现截取不了事件。至于有没有其他方法,正在研究中。如有进展后期会更新!

注:转载请注明出处,http://blog.csdn.net/lg_sun/article/details/50511103
尊重原创!

附:代码地址:

OC:https://github.com/SLGgit/LG_JSTest

swift没有执行成功,本菜鸟也在研究,欢迎各位大神Fork,提供意见。

Swift:https://github.com/SLGgit/LG_swiftJSTest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息