JSPatch--iOS热修复项目使用
2016-03-15 本文已影响850人
倚楼听风雨wing
1.后台服务器的搭建
一般公司都会有多个项目,而且伴随时间的推移,项目也会不断的维护升级,所以在实现热修复的时候后台的管理也是相当重要。为了规范起见,建议在后台直接搭建一个远程仓库,专门用来管理App端热修复的问题。例如后台文件夹结构:
Paste_Image.png客户端在发送请求的时候需要带上自己的APPName,Version等参数,然后根据服务器端的返回进行后续操作。
2.安全问题
对于这种从服务器下载一段JS就可以更改项目的东西,我们在使用的时候必须要考虑安全问题。所以对文件进行加密是必要的处理,也就是说每次把写好的需要更新的JS代码放到服务器的时候都需要在后端进行加密处理。
客户端先向服务器发起一个热修复的请求,如果有热修复的JS代码,服务器就返回给客户端一个URL,然后客户端再发起一次请求下载需要热修复的JS代码。
3.更新策略
下载 在AppDelegate
中的ApplicationDidBecomActive中编写请求下载的代码,时间间隔可以根据自己公司的需求而定。
执行 在AppDelegate
中的didFinishLaunchWithOptions中编写执行的代码。这个地方涉及到一些逻辑操作,我在这里简单叙述一下:
- 从本地沙盒获取js所在文件路径
- 如果文件路径不存在则直接return
- 执行补丁js代码
- 删除本地补丁
4.后续工作
- 之前使用JSPatch修复的问题,在后面发版的项目中应该在代码中已经修复了这些问题
- 使用JSPatch可以任意调用OC原生借口是不是以后就可以使用这个来开发功能模块从而实现热更新了,在这里告诉你想多了。首先编写这个样的JS代码,如果OC代码复杂,工作量会空前的巨大,并且也会引发一些列的性能问题,IOS对字符串的解析本来就比较耗时,而JSPatch都是依靠字符串的形式使用JS动态调用OC接口的。IDE也是一个问题,JSPatch没有开发的IDE,开发效率会比较低。
- 如果想要实现APP的热更新,建议使用React Native。本博主最近也在研究这个东西,很不错,是Facebook推出的一套框架,很有研究价值。附上地址一个:https://github.com/wangyansnow/react-native