一种热修复方法及设备技术

技术编号:19933627 阅读:30 留言:0更新日期:2018-12-29 04:21
本发明专利技术公开了一种热修复方法及设备,包括:加载内存中预设目录下的热修复脚本文件;使用预设解析器对所述热修复脚本文件解析,得到至少一个热修复代码块和每个所述热修复代码块对应的类和函数;根据每个所述热修复代码块对应的所述类和函数,用所述热修复代码块替换寄存器中所述类和函数对应的原始代码块;当接收到热修复指令时,执行所述热修复指令对应的热修复代码块进行热修复。本发明专利技术使用的热修复脚本文件仅支持预设解析器进行解析,绕开iOS的审核;只在执行到的时候执行热修复,实现了用户使用过程中进行修复,与传统一次性全部完成修复相比,丰富了更新机制。

【技术实现步骤摘要】
一种热修复方法及设备
本专利技术涉及热修复领域,尤其涉及一种热修复方法及设备。
技术介绍
热修复作为一种快速解决IT产品线上异常的技术手段对于移动应用相当重要,特别在iOS平台上。由于苹果公司的审核周期一般较长,如果通过发布新的版本去修复上一版本出现的异常问题,则需要较长的周期,从而导致异常扩散,不仅影响APP(Application,应用程序)功能的正常使用,更严重损害产品的声誉和用户的体验,导致用户流失。现有技术中,iOS平台实现热修复的功能的开源技术也不少,比如流程的JSPatch、Lua、Wax等,但就在2017年3月8日左右,苹果公司针对运用这些热修复功能的产品提出了严厉的警告,甚至下架的多款使用以上热修复功能的产品,腾讯阿里等大公司都有相关产品审核被拒。之所以被苹果警告甚至审核拒绝最主要的原因是安全问题:一方面是没有遵守苹果公司的规定,调用了苹果禁止在应用商店使用的敏感函数;另一方面是在使用这些动态热修复的过程中,没有进行安全方面的技术保障,导致容易被不法分子通过中间人攻击的手段篡改热修复的代码,下发恶意代码,形成严重的安全隐患,破坏苹果的生态系统。专
技术实现思路
本专利技术本文档来自技高网
...

【技术保护点】
1.一种热修复方法,其特征在于,包括:加载内存中预设目录下的热修复脚本文件;使用预设解析器对所述热修复脚本文件解析,得到至少一个热修复代码块和每个所述热修复代码块对应的类和函数;根据每个所述热修复代码块对应的所述类和函数,用所述热修复代码块替换寄存器中所述类和函数对应的原始代码块;当接收到热修复指令时,执行所述热修复指令对应的热修复代码块进行热修复。

【技术特征摘要】
1.一种热修复方法,其特征在于,包括:加载内存中预设目录下的热修复脚本文件;使用预设解析器对所述热修复脚本文件解析,得到至少一个热修复代码块和每个所述热修复代码块对应的类和函数;根据每个所述热修复代码块对应的所述类和函数,用所述热修复代码块替换寄存器中所述类和函数对应的原始代码块;当接收到热修复指令时,执行所述热修复指令对应的热修复代码块进行热修复。2.如权利要求1所述的热修复方法,其特征在于,所述预设解析器为使用Unix系统自带的Yacc和Lex工具编写的语法词法解析器。3.如权利要求1或2所述的热修复方法,其特征在于,所述加载内存中预设目录下的热修复脚本文件之前还包括:当符合预设触发条件时,向服务器发送脚本更新请求;当接收到所述服务器根据所述脚本更新请求发送的下载地址时,根据所述下载地址下载对应的热修复脚本包;当所述热修复脚本包被校验成功时,得到热修复脚本文件;将所述热修复脚本文件存储到内存中的预设目录下。4.如权利要求3所述的热修复方法,其特征在于,所述预设触发条件包括以下任意一种或多种:应用程序启动;应用程度处于后台运行;在使用过程中调用HTTP接口,且HTTP接口的返回值等于预设值。5.如权利要求3所述的热修复方法,其特征在于,所述当热修复脚本包被校验成功时,得到热修复脚本文件具体为:对所述热修复脚本包进行MD5数字签名校验;若所述MD5数字签名校验成功,则解压所述热修复脚本包;若解压成功,得到解压后脚本文件;获取所述解压后脚本文件中前预设数量的字符;当用户信息经过加密后得到的字符串与获取的前预设数量的字符相同时,认为所述热修复脚本包被校验成功,所述解压后脚本文件则为所述热修复脚本文件。6.一种热修复设备,其特征在于,包括:加载模块,用于加载内存中预设目录下的热修复脚...

【专利技术属性】
技术研发人员:马成轶刘凯波
申请(专利权)人:江苏满运软件科技有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1