一种热修复方法、装置、电子设备及存储介质制造方法及图纸

技术编号:38708832 阅读:7 留言:0更新日期:2023-09-08 14:49
本公开提供了一种热修复方法、装置、电子设备及存储介质,该方法为,获得所述应用程序的待修复SDK的补丁包,其中,所述补丁包中至少包括所述待修复SDK中热修复的各目标修复对象的补丁包和各所述目标修复对象的依赖关系;根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序;根据所述加载顺序,加载各所述目标修复对象,这样,实现了针对SDK中多个目标修复对象的热修复,基于依赖关系确定加载顺序,从而保证所有的各目标修复对象都能被正确加载。能被正确加载。能被正确加载。

【技术实现步骤摘要】
一种热修复方法、装置、电子设备及存储介质


[0001]本公开涉及计算机
,具体而言,涉及一种热修复方法、装置、电子设备及存储介质。

技术介绍

[0002]热修复技术是一种快速高效的应用程序修复方式,可以对已安装的应用程序使用补丁进行修复,应用程序的热修复包括so库热修复,相关技术中,so库热修复方法主要是针对应用程序级别的,针对应用程序中软件开发工具包(Software Development Kit,SDK)级别的热修复方法还比较少,并且SDK中多个so库可能还会存在较为复杂的依赖关系,增加了热修复难度,目前还未有相应有效的热修复方案。

技术实现思路

[0003]本公开实施例至少提供一种热修复方法、装置、电子设备及存储介质。
[0004]第一方面,本公开实施例提供了一种热修复方法,包括:
[0005]获得所述应用程序的待修复软件开发功能包SDK的补丁包,其中,所述补丁包中至少包括所述待修复SDK中热修复的各目标修复对象的补丁包和各所述目标修复对象的依赖关系;
[0006]根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序;
[0007]根据所述加载顺序,加载各所述目标修复对象。
[0008]第二方面,本公开实施例还提供一种热修复装置,包括:
[0009]获得模块,用于获得所述应用程序的待修复软件开发功能包SDK的补丁包,其中,所述补丁包中至少包括所述待修复SDK中热修复的各目标修复对象的补丁包和各所述目标修复对象的依赖关系;/>[0010]第一确定模块,用于根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序;
[0011]加载模块,用于根据所述加载顺序,加载各所述目标修复对象。
[0012]第三方面,本公开可选实现方式还提供一种电子设备,包括处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
[0013]第四方面,本公开可选实现方式还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
[0014]本公开实施例中,获得所述应用程序的待修复SDK的补丁包,其中,所述补丁包中至少包括所述待修复SDK中热修复的各目标修复对象的补丁包和各所述目标修复对象的依赖关系;根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序;根据
所述加载顺序,加载各所述目标修复对象,这样,补丁包中还记录了依赖关系,进而在应用程序运行时,可以根据依赖关系确定加载顺序,来依次加载各目标修复对象,可以保证各目标修复对象都能被正确加载,使得各目标修复对象的热修复可以正确生效,优化了针对SDK中各目标修复对象的热修复方案。
[0015]关于上述热修复装置、电子设备、及计算机可读存储介质的效果描述参见上述热修复方法的说明,这里不再赘述。
[0016]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
[0017]为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
[0018]为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0019]图1示出了本公开实施例所提供的热修复整体方案流程图;
[0020]图2示出了本公开实施例所提供的一种热修复方法的流程图;
[0021]图3示出了本公开实施例所提供的一种有向图生成示意图;
[0022]图4示出了本公开实施例所提供的hook目标修复对象的第三补丁位置路径的原理示意图;
[0023]图5示出了本公开实施例所提供的另一种热修复方法的流程图;
[0024]图6示出了本公开实施例所提供的一种热修复装置的结构示意图;
[0025]图7示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
[0026]可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
[0027]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0028]为便于对本公开技术方案的理解,首先对本公开实施例中的技术用语加以说明:
[0029]热修复:热修复是一种快速高效的修复应用程序(Application,App)缺陷或漏洞
的方式,其不依赖于应用程序的版本更新来对应用程序的漏洞进行修复,可以理解为一种打补丁的方式,可以在用户无感知情况下对已安装的应用程序使用补丁进行修复,通常热修复包括类热修复、资源热修复和so热修复。
[0030]so热修复:so文件表示动态链接库,so库的修复本质是对native方法的修复和替换,和类加载方案类似,可以把补丁so库的路径插入到nativeLibraryDirectories数组的最前面,使得可以优先加载补丁so库而非原来so库以来达到修复目的。
[0031]钩子(hook):表示改变程序代码执行流程的一种方法,能够将某目标代码融入被勾住的应用程序的进程中,成为该进程的一个部分,使用技术手段在运行时动态的将该额外的目标代码依附现进程,从而实现替换现有处理逻辑或插入额外功能的目的,本公开实施例中,可以使用hook方法,改变读取目标修复对象的路径,指向目标修复对象的补丁位置路径。
[0032]经研究发现,相关技术中,so库热修复方法主要是针对APP级别的,APP中包括多种功能的软件开发工具包(Software Development Kit,SDK),APP依赖SDK可以快捷地实现一定功能,若需针对某功能进行修复,由于APP发版周期长等特征,会降低效率,因此针对SDK中的so热修复是非常必要的,而目前针对SDK本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种热修复方法,其特征在于,包括:获得所述应用程序的待修复软件开发功能包SDK的补丁包,其中,所述补丁包中至少包括所述待修复SDK中热修复的各目标修复对象的补丁包和各所述目标修复对象的依赖关系;根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序;根据所述加载顺序,加载各所述目标修复对象。2.根据权利要求1所述的方法,其特征在于,所述各所述目标修复对象的依赖关系,是通过以下方式确定的:获得所述待修复SDK的历史版本和目标版本,并将所述历史版本和所述目标版本进行比对,确定各所述目标修复对象;读取各所述目标修复对象的描述文件,并从所述描述文件中获得各所述目标修复对象的依赖关系。3.根据权利要求1所述的方法,其特征在于,所述根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序,包括:根据各所述目标修复对象的依赖关系,生成有向图,其中,所述有向图中的各节点表示各所述目标修复对象和各所述目标修复对象所依赖的被依赖对象,并所述有向图中的边表示所述依赖关系;根据所述有向图,确定各所述目标修复对象的加载顺序。4.根据权利要求1所述的方法,其特征在于,所述根据各所述目标修复对象的依赖关系,确定各所述目标修复对象的加载顺序,包括:在所述待修复SDK有多个的情况下,根据多个所述待修复SDK的补丁包中包括的各所述目标修复对象的依赖关系,进行合并处理,并根据合并处理后的各所述目标修复对象的依赖关系,生成有向图;根据所述有向图,确定各所述目标修复对象的加载顺序。5.根据权利要求1

4任一项所述的方法,其特征在于,所述根据所述加载顺序,加载各所述目标修复对象,包括:根据所述加载顺序,将被依赖的所述目标修复对象提前加载到运行内存,其中,所述被依赖的所述目标修复对象为所述加载顺序中从前到后排序非最后一个的所述目标修复对象;针对未被依赖的所述目标修复对象,在所述应用程序调用所述未被依赖的所述目标修复对象时,将所述未被依赖的所述目标修复对象加载到所述运行内存,其...

【专利技术属性】
技术研发人员:魏君成魏振果
申请(专利权)人:北京字跳网络技术有限公司
类型:发明
国别省市:

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

1