本公开涉及计算机,尤其涉及热修复方法、装置、电子设备及存储介质。
背景技术:
1、随着技术的不断发展,终端设备得到很大程度的普及,终端上的应用程序也呈现多样化。由于应用程序通常会存在漏洞,在运行过程中可能会出现问题,需要及时对有问题的应用程序进行修复。由于热修复是一种比较快速和高效的修复手段,得到广泛的应用。
2、相关技术中,应用程序的热修复通常是基于js(javascript)脚本进行修复,js脚本具有通用性高和易于编写的特点,但由于js动态库的滥用,导致ios系统开始禁止开发者使用含有动态执行能力的js库代码上架到appstore,使得相关技术存在无法在ios系统上使用js进行热修复的问题。
技术实现思路
1、本公开提供了一种热修复方法、装置、电子设备及存储介质。
2、根据本公开的第一方面,提供了一种热修复方法,所述方法包括:
3、在目标应用程序中存在待修复对象的情况下,获取所述待修复对象对应的热修复文件;
4、在所述目标应用程序运行过程中,获取所述目标应用程序的运行进度;
5、在需要运行所述待修复对象的情况下,停止运行所述待修复对象,并运行所述热修复文件。
6、可选地,所述获取所述待修复对象的热修复文件,包括:
7、获取所述热修复文件的目标存储路径;
8、基于所述目标存储路径调用所述热修复文件。
9、可选地,所述方法还包括:
10、获取所述目标应用程序的故障信息;
11、基于所述故障信息,生成所述热修复文件;其中,所述热修复文件用于修复所述应用程序中的所述待修复对象,并将所述热修复文件通过所述目标存储路径存储。
12、可选地,所述热修复文件包括目标方法描述对象;所述运行所述热修复文件,包括:
13、对所述待修复对象进行解析,获得所述待修复对象的预埋方法描述对象;
14、将所述预埋方法描述对象与所述目标方法描述对象进行交换,并执行交换后包含所述目标方法描述对象的方法。
15、可选地,所述执行交换后包含所述目标方法描述对象的方法,包括:
16、对所述目标方法描述对象进行解析,得到子执行方法描述,并执行所述子执行方法描述;其中,所述子执行方法描述包括执行对象描述、执行方法名、执行输入参数和返回结果类型。
17、可选地,所述执行所述子执行方法描述,包括:
18、获取所述执行输入参数的类型;
19、在所述执行输入参数的类型为静态参数时,获取所述子执行方法描述的描述内容,所述描述内容包括类名和值参数;
20、对所述执行输入参数进行初始化,获得参数对象,并获得所述执行方法名对应的方法对象;
21、对所述参数对象、所述方法对象和所述返回结果类型进行组装。
22、可选地,所述方法还包括:
23、在所述执行输入参数的类型为内部变量时,获取所述子执行方法描述的描述内容,所述描述内容包括变量名;
24、获取所述内部变量的内部变量对象,并将所述内部变量对象作为所述参数对象,并执行所述获得所述执行方法名对应的方法对象的步骤。
25、根据本公开的第二方面,提供了一种热修复装置,所述装置包括:
26、热修复文件获取模块,用于在目标应用程序中存在待修复对象的情况下,获取所述待修复对象对应的热修复文件;
27、运行进度确定模块,用于在所述目标应用程序运行过程中,获取所述目标应用程序的运行进度;
28、运行模块,用于在需要运行所述待修复对象的情况下,停止运行所述待修复对象,并运行所述热修复文件。
29、可选地,所述热修复文件获取模块,具体用于:
30、获取所述热修复文件的目标存储路径;
31、基于所述目标存储路径调用所述热修复文件。
32、可选地,所述装置还包括:
33、故障信息获取模块,用于获取所述目标应用程序的故障信息;
34、热修复文件生成模块,用于基于所述故障信息,生成所述热修复文件;其中,所述热修复文件用于修复所述应用程序中的所述待修复对象,并将所述热修复文件通过所述目标存储路径存储。
35、可选地,所述热修复文件包括目标装置描述对象;所述运行模块,具体用于:
36、对所述待修复对象进行解析,获得所述待修复对象的预埋装置描述对象;
37、将所述预埋装置描述对象与所述目标装置描述对象进行交换,并执行交换后包含所述目标装置描述对象的装置。
38、可选地,所述运行模块,具体还用于:
39、对所述目标装置描述对象进行解析,得到子执行装置描述,并执行所述子执行装置描述;其中,所述子执行装置描述包括执行对象描述、执行装置名、执行输入参数和返回结果类型。
40、可选地,所述运行模块,具体还用于:
41、获取所述执行输入参数的类型;
42、在所述执行输入参数的类型为静态参数时,获取所述子执行装置描述的描述内容,所述描述内容包括类名和值参数;
43、对所述执行输入参数进行初始化,获得参数对象,并获得所述执行装置名对应的装置对象;
44、对所述参数对象、所述装置对象和所述返回结果类型进行组装。
45、可选地,所述装置还包括:
46、描述内容获取模块,用于在所述执行输入参数的类型为内部变量时,获取所述子执行装置描述的描述内容,所述描述内容包括变量名;
47、参数对象确定模块,用于获取所述内部变量的内部变量对象,并将所述内部变量对象作为所述参数对象。
48、根据本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
49、根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开的上述方法。
50、本公开实施例提供的热修复方法、装置、电子设备及存储介质,通过在目标应用程序中存在待修复对象的情况下,通过获取待修复对象对应的热修复文件。并在目标应用程序运行过程中,通过获取目标应用程序的运行进度,使得在需要运行待修复对象的情况下,停止运行待修复对象,并运行热修复文件,这样能够实现对目标应用程序快速的热修复工作,进而可以实现热修复的效率。
1.一种热修复方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取所述待修复对象的热修复文件,包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述热修复文件包括目标方法描述对象;所述运行所述热修复文件,包括:
5.根据权利要求4所述的方法,其特征在于,所述执行交换后包含所述目标方法描述对象的方法,包括:
6.根据权利要求5所述的方法,其特征在于,所述执行所述子执行方法描述,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.一种热修复装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-7中任一项所述的方法。