APP热修复方法及其装置、可读存储介质和计算机设备制造方法及图纸

技术编号:32514145 阅读:11 留言:0更新日期:2022-03-02 11:05
本申请提供一种APP热修复方法、APP热修复装置、计算机可读存储介质和计算机设备。APP热修复方法包括:接收服务端发送的原始热修复脚本,原始热修复脚本通过在Xcode开发环境中利用Objective

【技术实现步骤摘要】
APP热修复方法及其装置、可读存储介质和计算机设备


[0001]本申请涉及计算机
,具体而言,本申请涉及一种APP热修复方法、APP热修复装置、计算机可读存储介质和计算机设备。

技术介绍

[0002]在程序开发的过程中,无论是程序员编写的代码的原因,还是产品等其他职位对需求的变动等原因,都有可能导致上线的APP产生一些需要紧急修复的bug,在此情况下,传统的修复方式是修改APP中的bug,并将bug修改后的APP重新上传至应用市场,由用户下载更新。然而,这种方式存在多个缺点,例如重新发布APP版本的代价太大,且用户下载安装成本太高,再例如,bug修复不及时,导致用户体验较差等等。
[0003]为解决传统的修复方式存在的问题,热修复技术应运而生。所谓热修复,即为通过下发补丁包,让已安装APP的设备能够动态更新APP,用户无需重新下载安装该APP,就能够修复软件缺陷的一种技术。热修复技术具有多个优势,例如,可以快速打出补丁包修复bug以及时更新APP,又无需重新打包bug修改后的APP上传应用市场,再例如,用户浅感知修复,无需下载应用,代价小,体验好。目前的热修复技术方案大多为使用iOS内置的JavaScriptCore作为JavaScrip引擎来解析JavaScrip代码,结合Objective

C语言的运行机制来实现iOS热修复,如JSPatch、Aspects等。然而,这种方案存在开发效率低、有被苹果商城禁止上架APP的风险等问题。

技术实现思路

[0004]为至少能解决上述的技术缺陷之一,本申请提供了以下技术方案的APP热修复方法、APP热修复装置、计算机可读存储介质和计算机设备。
[0005]本申请实施方式提供一种APP热修复方法,用于设备端。所述设备端与服务端通信,其特征在于,所述APP热修复方法包括:接收所述服务端发送的原始热修复脚本,所述原始热修复脚本通过在Xcode开发环境中利用Objective

C语言开发获得;采用词法分析器对所述原始热修复脚本进行词法分析以获得标记序列;采用语法分析器对所述标记序列进行语法分析以获得语法树;对所述语法树进行语义检查以直接获得Objective

C语言的目标热修复脚本;基于所述目标热修复脚本创建内置对象;执行所述目标热修复脚本;基于所述目标热修复脚本,利用runtime对所述APP进行热修复;运行热修复后的所述APP以完成所述APP的修复更新。
[0006]在某些实施方式中,所述原始热修复脚本为处于加密状态的文件,所述APP热修复方法在所述获取所述服务端发送的原始热修复脚本的步骤前,还包括:对所述原始热修复脚本进行解密以获得解密后的原始热修复脚本。所述采用词法分析器对所述原始热修复脚本进行词法分析以获得标记序列,包括:采用所述词法分析器对所述解密后的原始热修复脚本进行词法分析以获得所述标记序列。
[0007]在某些实施方式中,所述采用词法分析器对所述原始热修复脚本进行词法分析为
基于Lex技术对所述原始热修复脚本进行词法分析;所述采用语法分析器对所述标记序列进行语法分析为基于YACC对所述标记序列进行语法分析;所述对所述语法树进行语义检查以直接获得Objective

C语言的目标热修复脚本为通过Lex&YACC技术对所述语法树进行语义检查。
[0008]在某些实施方式中,所述基于所述目标热修复脚本,利用runtime对所述APP进行热修复,包括:利用libffi库动态创建C函数;在所述C函数中调用所述目标热修复脚本中的目标代码;利用所述C函数替换掉所述APP的原始代码中的待修复代码的IMP指针。
[0009]本申请实施方式的APP热修复方法,用于开发端,所述开发端与服务端通信,其特征在于,所述APP热修复方法包括:
[0010]将原始热修复脚本发送至所述服务端,所述原始热修复脚本通过在Xcode开发环境中利用Objective

C语言开发获得。
[0011]在某些实施方式中,所述APP热修复方法在所述将原始热修复脚本发送至所述服务端的步骤前,还包括:
[0012]对所述原始热修复脚本进行加密;
[0013]所述将所述原始热修复脚本发送至所述服务端,包括:
[0014]将加密后的所述原始热修复脚本发送至所述服务端。
[0015]本申请实施方式的APP热修复装置,用于设备端,所述设备端与服务端通信,其特征在于,所述APP热修复装置包括:接收模块、第一分析模块、第二分析模块、检查模块、创建模块、执行模块、修复模块及运行模块。接收模块用于接收所述服务端发送的原始热修复脚本,所述原始热修复脚本通过在Xcode开发环境中利用Objective

C语言开发获得。第一分析模块用于采用词法分析器对所述原始热修复脚本进行词法分析以获得标记序列。第二分析模块用于采用语法分析器对所述标记序列进行语法分析以获得语法树。检查模块用于对所述语法树进行语义检查以直接获得Objective

C语言的目标热修复脚本。创建模块用于基于所述目标热修复脚本创建内置对象。执行模块,用于执行所述目标热修复脚本。修复模块用于基于所述目标热修复脚本,利用runtime对所述APP进行热修复。运行模块用于运行热修复后的所述APP以完成所述APP的修复更新。
[0016]本申请实施方式的APP热修复装置用于开发端,所述开发端与服务端通信,其特征在于,所述APP热修复装置包括发送模块。发送模块用于将所述原始热修复脚本发送至所述服务端,所述原始热修复脚本通过在Xcode开发环境中利用Objective

C语言开发获得。
[0017]本申请的实施例根据又一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施方式所述的APP热修复方法。
[0018]本申请的实施例根据再一个方面,提供了一种计算机设备,所述计算机包括一个或多个处理器;存储器;一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个计算机程序配置用于:执行上述任一实施方式所述的APP热修复方法。
[0019]本申请实施方式的APP热修复方法、APP热修复装置、计算机可读存储介质及计算机设备,可以直接使用Xcode集成开发工具编写Objective

C语言的热修复代码,开发效率高,出错率低。并且,本申请的方案的实现过程均是使用IOS内置的方法来实现的,不存在热
修复后的APP被苹果商城禁止商家的风险。此外,本申请的方案可以直接使用Objective

C编写热修复代码,开发代码和热修复代码都是Objective

C语言开发的代码,使用起来优好,且对开发人员的要求也较低。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种APP热修复方法,用于设备端,所述设备端与服务端通信,其特征在于,所述APP热修复方法包括:接收所述服务端发送的原始热修复脚本,所述原始热修复脚本通过在Xcode开发环境中利用Objective

C语言开发获得;采用词法分析器对所述原始热修复脚本进行词法分析以获得标记序列;采用语法分析器对所述标记序列进行语法分析以获得语法树;对所述语法树进行语义检查以直接获得Objective

C语言的目标热修复脚本;基于所述目标热修复脚本创建内置对象;执行所述目标热修复脚本;基于所述目标热修复脚本,利用runtime对所述APP进行热修复;运行热修复后的所述APP以完成所述APP的修复更新。2.根据权利要求1所述的APP热修复方法,其特征在于,所述原始热修复脚本为处于加密状态的文件,所述APP热修复方法在所述获取所述服务端发送的原始热修复脚本的步骤前,还包括:对所述原始热修复脚本进行解密以获得解密后的原始热修复脚本;所述采用词法分析器对所述原始热修复脚本进行词法分析以获得标记序列,包括:采用所述词法分析器对所述解密后的原始热修复脚本进行词法分析以获得所述标记序列。3.根据权利要求1或2所述的APP热修复方法,其特征在于,所述采用词法分析器对所述原始热修复脚本进行词法分析为基于Lex技术对所述原始热修复脚本进行词法分析;所述采用语法分析器对所述标记序列进行语法分析为基于YACC对所述标记序列进行语法分析;所述对所述语法树进行语义检查以直接获得Objective

C语言的目标热修复脚本为通过Lex&amp;YACC技术对所述语法树进行语义检查。4.根据权利要求1所述的APP热修复方法,其特征在于,所述基于所述目标热修复脚本,利用runtime对所述APP进行热修复,包括:利用libffi库动态创建C函数;在所述C函数中调用所述目标热修复脚本中的目标代码;利用所述C函数替换掉所述APP的原始代码中的待修复代码的IMP指针。5.一种APP热修复方法,用于开发端,所述开发端与服务端通信,其特征在于,所述APP热修复方法包括:将原始热修复脚本发送至所...

【专利技术属性】
技术研发人员:谌文
申请(专利权)人:深圳依时货拉拉科技有限公司
类型:发明
国别省市:

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

1