本公开涉及计算机技术领域,具体而言,涉及一种代码更新方法及装置。
背景技术:
目前,在应用程序(application,app)的开发过程中,必然会发生新增代码或修改代码的情况,需要对应用程序的代码进行更新。当开发者编写好更新的代码后,需要在测试设备上运行这些代码,以检查代码更新后的效果。
在测试设备上运行更新后的代码之前,需要对应用程序更新后的全量代码进行编译,将代码的编程语言转换为能够被测试设备识别并运行的编程语言,耗时较久,开发效率较低。
技术实现要素:
本公开实施例至少提供一种代码更新方法及装置。
第一方面,本公开实施例提供了一种代码更新方法,其特征在于,包括:
接收以第一编程语言编写的初始更新代码;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
将所述初始更新代码转换为以第二编程语言编写的目标更新代码;所述目标更新代码用于对所述目标应用程序的代码进行更新。
一种可选的实施方式中,所述将所述初始更新代码转换为以第二编程语言编写的目标更新代码,包括:
利用所述初始更新代码的抽象语法树中指示的语法结构,将所述初始更新代码转换为所述目标更新代码。
一种可选的实施方式中,所述第一编程语言为objective-c语言,所述第二编程语言为javascript语言。
一种可选的实施方式中,所述方法还包括:
利用建立的服务器与代码运行端之间的长连接,将所述目标更新代码发送至所述代码运行端,以使所述代码运行端利用所述目标更新代码对所述目标应用程序的代码进行更新。
一种可选的实施方式中,所述接收以第一编程语言编写的初始更新代码,包括:
接收代码编写端发送的以第一编程语言编写的初始更新代码。
第二方面,本公开实施例还提供另一种代码更新方法,包括:
当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,从所述原始代码中确定发生更新的初始更新代码;
将所述初始更新代码发送至服务器;所述初始更新代码用于被所述服务器转换为以第二编程语言编写的目标更新代码。
一种可选的实施方式中,所述从所述原始代码中确定发生更新的初始更新代码,包括:
利用所述原始代码的抽象语法树中指示的语法结构,确定发生所述原始代码中发生更新的代码片段所在的目标类;
将所述目标类中的代码文本作为所述初始更新代码。
第三方面,本公开实施例还提供再一种代码更新方法,包括:
接收服务器发送的以第二编程语言编写的目标更新代码;所述目标更新代码为所述服务器对以第一编程语言编写的初始更新代码转换得到的;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
一种可选的实施方式中,所述基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新,包括:
在所述目标应用程序的代码中,搜索类名与所述目标更新代码相同的目标待更新代码;
若搜索到所述目标待更新代码,则利用所述目标更新代码替换所述目标待更新代码;
若未搜索到所述目标待更新代码,则将所述目标更新代码添加至所述目标应用程序的代码中。
第四方面,本公开实施例还提供一种代码更新装置,包括:
第一接收模块,用于接收以第一编程语言编写的初始更新代码;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
转换模块,用于将所述初始更新代码转换为以第二编程语言编写的目标更新代码;所述目标更新代码用于对所述目标应用程序的代码进行更新。
一种可选的实施方式中,所述转换模块具体用于:
利用所述初始更新代码的抽象语法树中指示的语法结构,将所述初始更新代码转换为所述目标更新代码。
一种可选的实施方式中,所述第一编程语言为objective-c语言,所述第二编程语言为javascript语言。
一种可选的实施方式中,所述代码更新装置还包括:
第一发送模块,用于利用建立的服务器与代码运行端之间的长连接,将所述目标更新代码发送至所述代码运行端。
一种可选的实施方式中,所述第一接收模块具体用于:
接收代码编写端发送的以第一编程语言编写的初始更新代码。
第五方面,本公开实施例还提供另一种代码更新装置,包括:
确定模块,用于当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,从所述原始代码中确定发生更新的初始更新代码;
第二发送模块,用于将所述初始更新代码发送至服务器;所述初始更新代码用于被所述服务器转换为以第二编程语言编写的目标更新代码。
一种可选的实施方式中,所述确定模块具体用于:
利用所述原始代码的抽象语法树中指示的语法结构,确定发生所述原始代码中发生更新的代码片段所在的目标类;
将所述目标类中的代码文本作为所述初始更新代码。
第六方面,本公开实施例还提供再一种代码更新装置,包括:
第二接收模块,用于接收服务器发送的以第二编程语言编写的目标更新代码;所述目标更新代码为所述服务器对以第一编程语言编写的初始更新代码转换得到的;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
更新模块,用于基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
一种可选的实施方式中,所述更新模块具体用于:
在所述目标应用程序的代码中,搜索类名与所述目标更新代码相同的目标待更新代码;
若搜索到所述目标待更新代码,则利用所述目标更新代码替换所述目标待更新代码;
若未搜索到所述目标待更新代码,则将所述目标更新代码添加至所述目标应用程序的代码中。
第七方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤,或执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤,或执行上述第三方面,或第三方面中任一种可能的实施方式中的步骤。
第八方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤,或执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤,或执行上述第三方面,或第三方面中任一种可能的实施方式中的步骤。
关于上述代码更新装置、计算机设备、及计算机可读存储介质的效果描述参见上述代码更新方法的说明,这里不再赘述。
本公开实施例提供的代码更新方法及装置,通过服务器将发生更新的初始更新代码转换为以第二编程语言编写的目标更新代码,可以使代码运行端利用目标更新代码对目标应用程序的代码进行更新,只对发生更新的代码进行编译,无需对目标应用程序更新后的全量代码进行编译,能够提高代码更新的效率,进而提高应用程序开发的效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种代码更新系统的示意图;
图2示出了本公开实施例所提供的一种代码更新方法的流程图;
图3示出了本公开实施例所提供的一种代码更新装置的示意图;
图4示出了本公开实施例所提供的另一种代码更新装置的示意图;
图5示出了本公开实施例所提供的再一种代码更新装置的示意图;
图6示出了本公开实施例所提供的一种计算机设备的示意图;
图7示出了本公开实施例所提供的另一种计算机设备的示意图;
图8示出了本公开实施例所提供的再一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,在测试设备上运行更新后的代码之前,需要对应用程序更新后的全量代码进行编译,将代码的编程语言转换为能够被测试设备识别并运行的编程语言,然而,随着应用程序的功能逐渐增加,应用程序的代码体量也在快速增长,每次进行编译所消耗的时间也越来越长,应用程序的开发效率较低。
基于上述研究,本公开提供了一种代码更新方法及装置,通过服务器将代码编写端发送的,发生更新的初始更新代码转换为以第二编程语言编写的目标更新代码,并将目标更新代码发送至代码运行端,可以使代码运行端对目标应用程序的代码进行更新,只对发生更新的代码进行编译,避免对目标应用程序更新后的全量代码进行编译,能够提高代码更新的效率,进而提高应用程序开发的效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种代码更新系统进行详细介绍,参见图1所示,为本公开实施例提供的代码更新系统的示意图。本公开实施例所提供的代码更新方法的执行主体可以为代码更新系统,代码更新系统中可以包括代码编写端、代码运行端以及服务器,代码编写端、代码运行端以及服务器一般为具有一定计算能力的计算机设备,其中,代码编写端可以供用户进行代码编写,代码运行端可以运行编译好的代码,服务器可以为服务器集群,由一个或一个以上子服务器组成,服务器可以与代码运行端或代码编写端进行通信。在一些可能的实现方式中,该代码更新方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图2所示,为本公开实施例提供的代码更新方法的流程图,所述方法包括步骤s201~s205,其中:
s201:当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,代码编写端从所述原始代码中确定发生更新的初始更新代码。
其中,所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;目标应用程序可以为当前正在开发或调试的应用程序,用户可以在代码编写端上对目标应用程序的原始代码进行修改,当代码编写端检测到原始代码发生更新时,可以从原始代码中确定发生更新的初始更新代码。
其中,原始代码可以包括多个类文件,类文件中可以包含多段代码,原始代码的更新可以是对类文件中的代码进行新增、删除或修改,也可以是新增整个类文件。
具体的,s201可以包括:
利用所述原始代码的抽象语法树中指示的语法结构,确定发生所述原始代码中发生更新的代码片段所在的目标类;
将所述目标类中的代码文本作为所述初始更新代码。
其中,原始代码的抽象语法树为原始代码的抽象语法结构的树状表示,树上的每个节点都表示原始代码中的一种结构,根据抽象语法树中指示的语法结构,可以确定发生更新的代码片段所在的目标类,目标类中可以包含数据说明和一组操作数据或传递消息的函数,这些信息即为代码。
在确定原始代码中发生更新的代码片段所在的目标类后,可以将目标类中的代码文本直接作为初始更新代码。
这里,目标应用程序的原始代码可以是由用户在代码编写端上编写的,使用的编程语言为第一编程语言,代码运行端无法直接识别这些代码并运行,需要将其转换为代码运行端能够识别的第二编程语言编写的代码。
这里,第一编程语言可以为objective-c语言。
s202:代码编写端将所述初始更新代码发送至服务器。
该步骤中,代码编写端可以将确定的初始更新代码通过预设的端口发送至服务器。
s203:服务器将所述初始更新代码转换为以第二编程语言编写的目标更新代码。
示例性的,在服务器接收代码编写端发送的以第一编程语言编写的初始更新代码后,可以利用所述初始更新代码的抽象语法树中指示的语法结构,将所述初始更新代码转换为所述目标更新代码。
具体的,可以先对初始更新代码进行解析,得到初始更新代码的抽象语法树,再将抽象语法树指示的语法结构输入到编译器,利用编译器将将其转换为以第二编程语言编写的目标更新代码。
这里,第二编程语言可以为javascript语言。
s204:服务器将所述目标更新代码发送至代码运行端。
该步骤中,由于代码更新的频率较高,为了能够快速将目标更新代码发送至代码运行端,服务器可以利用建立的服务器与代码运行端之间的长连接,将所述目标更新代码发送至代码运行端。
这里,将初始更新代码转换为以第二编程语言编写的目标更新代码的步骤与将目标更新代码发送至代码运行端的步骤可以由服务器中不同的子服务器执行,在进行代码转换的子服务器得到目标更新代码后,可以将目标更新代码传输至负责将目标更新代码发送至代码运行端的子服务器,再由后者将其发送至代码运行端,这样,可以提高服务器的兼容性,降低出现错误的风险。
s205:代码运行端基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
具体的,s205可以包括:
在所述目标应用程序的代码中,搜索类名与所述目标更新代码相同的目标待更新代码;
若搜索到所述目标待更新代码,则利用所述目标更新代码替换所述目标待更新代码;
若未搜索到所述目标待更新代码,则将所述目标更新代码添加至所述目标应用程序的代码中。
该步骤中,代码运行端可以根据目标更新代码的类名,从目标应用程序的代码中搜索目标待更新代码,在搜索到的情况下直接将目标待更新代码替换为目标更新代码,若目标应用程序的代码中不包括类名与目标更新代码一致的代码,则可以直接将目标更新代码添加至目标应用程序的代码中。
在代码运行端完成对目标应用程序的代码的更新后,代码运行端若需要运行目标更新代码,可以通过内置的解析模块对其进行解析并运行。
这里,代码运行端的系统可以为ios系统。
本公开实施例提供的代码更新方法,通过服务器将发生更新的初始更新代码转换为以第二编程语言编写的目标更新代码,使代码运行端能够利用目标更新代码对目标应用程序的代码进行更新,只对发生更新的代码进行编译,避免对目标应用程序更新后的全量代码进行编译,能够提高代码更新的效率,进而提高应用程序开发的效率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与代码更新方法对应的代码更新装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述代码更新方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3所示,为本公开实施例提供的一种代码更新装置的架构示意图,所述代码更新装置300包括:第一接收模块310、转换模块320;其中,
第一接收模块310,用于接收代码编写端发送的以第一编程语言编写的初始更新代码;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
转换模块320,用于将所述初始更新代码转换为以第二编程语言编写的目标更新代码;所述目标更新代码用于对所述目标应用程序的代码进行更新。
本公开实施例提供的代码更新装置,通过服务器将发生更新的初始更新代码转换为以第二编程语言编写的目标更新代码,使代码运行端能够利用目标更新艾玛对目标应用程序的代码进行更新,只对发生更新的代码进行编译,避免对目标应用程序更新后的全量代码进行编译,能够提高代码更新的效率,进而提高应用程序开发的效率。
一种可选的实施方式中,所述转换模块320具体用于:
利用所述初始更新代码的抽象语法树中指示的语法结构,将所述初始更新代码转换为所述目标更新代码。
一种可选的实施方式中,所述第一编程语言为objective-c语言,所述第二编程语言为javascript语言。
一种可选的实施方式中,所述代码更新装置300还包括第一发送模块330,具体用于:
利用建立的服务器与代码运行端之间的长连接,将所述目标更新代码发送至所述代码运行端。
一种可选的实施方式中,所述第一接收模块310具体用于:
接收代码编写端发送的以第一编程语言编写的初始更新代码。
参照图4所示,为本公开实施例提供的另一种代码更新装置的架构示意图,所述代码更新装置400包括:确定模块410、第二发送模块420;其中,
确定模块410,用于当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,从所述原始代码中确定发生更新的初始更新代码;
第二发送模块420,用于将所述初始更新代码发送至服务器;所述初始更新代码用于被所述服务器转换为以第二编程语言编写的目标更新代码。
一种可选的实施方式中,所述确定模块410具体用于:
利用所述原始代码的抽象语法树中指示的语法结构,确定发生所述原始代码中发生更新的代码片段所在的目标类;
将所述目标类中的代码文本作为所述初始更新代码。
参照图5所示,为本公开实施例提供的再一种代码更新装置的架构示意图,所述代码更新装置500包括:第二接收模块510、更新模块520;其中,
第二接收模块510,用于接收服务器发送的以第二编程语言编写的目标更新代码;所述目标更新代码为所述服务器对以第一编程语言编写的初始更新代码转换得到的;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
更新模块520,用于基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
一种可选的实施方式中,所述更新模块520具体用于:
在所述目标应用程序的代码中,搜索类名与所述目标更新代码相同的目标待更新代码;
若搜索到所述目标待更新代码,则利用所述目标更新代码替换所述目标待更新代码;
若未搜索到所述目标待更新代码,则将所述目标更新代码添加至所述目标应用程序的代码中。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图6所示,为本公开实施例提供的计算机设备600的结构示意图,包括处理器601、存储器602、和总线603。其中,存储器602用于存储执行指令,包括内存6021和外部存储器6022;这里的内存6021也称内存储器,用于暂时存放处理器601中的运算数据,以及与硬盘等外部存储器6022交换的数据,处理器601通过内存6021与外部存储器6022进行数据交换,当计算机设备600运行时,处理器601与存储器602之间通过总线603通信,使得处理器601在执行以下指令:
接收以第一编程语言编写的初始更新代码;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
将所述初始更新代码转换为以第二编程语言编写的目标更新代码;所述目标更新代码用于对所述目标应用程序的代码进行更新。
一种可能的实施方式中,处理器601执行的指令中,所述将所述初始更新代码转换为以第二编程语言编写的目标更新代码,包括:
利用所述初始更新代码的抽象语法树中指示的语法结构,将所述初始更新代码转换为所述目标更新代码。
一种可能的实施方式中,处理器601执行的指令中,所述第一编程语言为objective-c语言,所述第二编程语言为javascript语言。
一种可能的实施方式中,处理器601还用于执行:
利用建立的服务器与代码运行端之间的长连接,将所述目标更新代码发送至所述代码运行端,以使所述代码运行端利用所述目标更新代码对所述目标应用程序的代码进行更新。
一种可能的实施方式中,处理器601执行的指令中,所述接收以第一编程语言编写的初始更新代码,包括:
接收代码编写端发送的以第一编程语言编写的初始更新代码。
基于同一技术构思,本公开实施例还提供了另一种计算机设备。参照图7所示,为本公开实施例提供的计算机设备700的结构示意图,包括处理器701、存储器702、和总线703。其中,存储器702用于存储执行指令,包括内存7021和外部存储器7022;这里的内存7021也称内存储器,用于暂时存放处理器701中的运算数据,以及与硬盘等外部存储器7022交换的数据,处理器701通过内存7021与外部存储器7022进行数据交换,当计算机设备700运行时,处理器701与存储器702之间通过总线703通信,使得处理器701在执行以下指令:
当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,从所述原始代码中确定发生更新的初始更新代码;
将所述初始更新代码发送至服务器;所述初始更新代码用于被所述服务器转换为以第二编程语言编写的目标更新代码。
一种可能的实施方式中,处理器701执行的指令中,所述从所述原始代码中确定发生更新的初始更新代码,包括:
利用所述原始代码的抽象语法树中指示的语法结构,确定发生所述原始代码中发生更新的代码片段所在的目标类;
将所述目标类中的代码文本作为所述初始更新代码。
基于同一技术构思,本公开实施例还提供了再一种计算机设备。参照图8所示,为本公开实施例提供的计算机设备800的结构示意图,包括处理器801、存储器802、和总线803。其中,存储器802用于存储执行指令,包括内存8021和外部存储器8022;这里的内存8021也称内存储器,用于暂时存放处理器801中的运算数据,以及与硬盘等外部存储器8022交换的数据,处理器801通过内存8021与外部存储器8022进行数据交换,当计算机设备800运行时,处理器801与存储器802之间通过总线803通信,使得处理器801在执行以下指令:
接收服务器发送的以第二编程语言编写的目标更新代码;所述目标更新代码为所述服务器对以第一编程语言编写的初始更新代码转换得到的;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
一种可能的实施方式中,处理器801执行的指令中,所述基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新,包括:
在所述目标应用程序的代码中,搜索类名与所述目标更新代码相同的目标待更新代码;
若搜索到所述目标待更新代码,则利用所述目标更新代码替换所述目标待更新代码;
若未搜索到所述目标待更新代码,则将所述目标更新代码添加至所述目标应用程序的代码中。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的代码更新方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的代码更新方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(softwaredevelopmentkit,sdk)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
1.一种代码更新方法,其特征在于,包括:
接收以第一编程语言编写的初始更新代码;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
将所述初始更新代码转换为以第二编程语言编写的目标更新代码;所述目标更新代码用于对所述目标应用程序的代码进行更新。
2.根据权利要求1所述的方法,其特征在于,所述将所述初始更新代码转换为以第二编程语言编写的目标更新代码,包括:
利用所述初始更新代码的抽象语法树中指示的语法结构,将所述初始更新代码转换为所述目标更新代码。
3.根据权利要求1或2所述的方法,其特征在于,所述第一编程语言为objective-c语言,所述第二编程语言为javascript语言。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用建立的服务器与代码运行端之间的长连接,将所述目标更新代码发送至所述代码运行端,以使所述代码运行端利用所述目标更新代码对所述目标应用程序的代码进行更新。
5.根据权利要求1所述的方法,其特征在于,所述接收以第一编程语言编写的初始更新代码,包括:
接收代码编写端发送的以第一编程语言编写的初始更新代码。
6.一种代码更新方法,其特征在于,包括:
当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,从所述原始代码中确定发生更新的初始更新代码;
将所述初始更新代码发送至服务器;所述初始更新代码用于被所述服务器转换为以第二编程语言编写的目标更新代码。
7.根据权利要求6所述的方法,其特征在于,所述从所述原始代码中确定发生更新的初始更新代码,包括:
利用所述原始代码的抽象语法树中指示的语法结构,确定发生所述原始代码中发生更新的代码片段所在的目标类;
将所述目标类中的代码文本作为所述初始更新代码。
8.一种代码更新方法,其特征在于,包括:
接收服务器发送的以第二编程语言编写的目标更新代码;所述目标更新代码为所述服务器对以第一编程语言编写的初始更新代码转换得到的;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
9.根据权利要求8所述的方法,其特征在于,所述基于所述目标更新代码的类名,对目标应用程序的代码进行更新,包括:
在所述目标应用程序的代码中,搜索类名与所述目标更新代码相同的目标待更新代码;
若搜索到所述目标待更新代码,则利用所述目标更新代码替换所述目标待更新代码;
若未搜索到所述目标待更新代码,则将所述目标更新代码添加至所述目标应用程序的代码中。
10.一种代码更新装置,其特征在于,包括:
第一接收模块,用于接收以第一编程语言编写的初始更新代码;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
转换模块,用于将所述初始更新代码转换为以第二编程语言编写的目标更新代码;所述目标更新代码用于对所述目标应用程序的代码进行更新。
11.一种代码更新装置,其特征在于,包括:
确定模块,用于当检测到以第一编程语言编写的目标应用程序的原始代码发生更新时,从所述原始代码中确定发生更新的初始更新代码;
第二发送模块,用于将所述初始更新代码发送至服务器;所述初始更新代码用于被所述服务器转换为以第二编程语言编写的目标更新代码。
12.一种代码更新装置,其特征在于,包括:
第二接收模块,用于接收服务器发送的以第二编程语言编写的目标更新代码;所述目标更新代码为所述服务器对以第一编程语言编写的初始更新代码转换得到的;所述初始更新代码为在以第一编程语言编写的目标应用程序的原始代码中,发生更新的初始更新代码;
更新模块,用于基于所述目标更新代码的类名,对所述目标应用程序的代码进行更新。
13.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至5任一项所述的代码更新方法的步骤,或执行如权利要求6至7任一项所述的代码更新方法的步骤,或执行如权利要求8至9所述的代码更新方法的步骤。
14.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如1至5任一项所述的代码更新方法的步骤,或执行如权利要求6至7任一项所述的代码更新方法的步骤,或执行如权利要求8至9所述的代码更新方法的步骤。
技术总结