一种更新软件的方法和设备技术

技术编号:19240194 阅读:51 留言:0更新日期:2018-10-24 03:49
本申请实施例涉及计算机技术领域,特别涉及一种更新软件的方法和设备,用以解决现有技术中存在的目前更新软件的效率低的问题。本申请实施例客户端对AST文件进行返序列化得到树状结构的数据,根据树状结构的数据中第一方法的目标节点,确定用于执行对应的第二方法的功能的子树结构的数据,并根据所述子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。由于客户端可以在需要执行第二方法的功能时根据调用信息读取子树结构的数据,从而在有错误出现后只需要更新对应的方法,而不需要下载整个客户端,减少了下载的数据量,提高了更新的效率。

【技术实现步骤摘要】
一种更新软件的方法和设备
本申请涉及计算机
,特别涉及一种更新软件的方法和设备。
技术介绍
软件升级,指软件从低版本向高版本的更新。由于高版本常常修复低版本的部分BUG(错误),所以经历了软件升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验。除了修复低版本的BUG,如果有新的功能也可以通过软件升级方式进行扩展。对于MacOS系统,提供了功能丰富的各种应用程序供用户下载使用。这些基于MacOS系统的应用程序如果有BUG或者新的功能也需要通过软件升级方式解决。如果基于MacOS系统的应用程序出现BUG,比如设计编码导致的程序故障,只能重新下载程序,或者通过安装补丁解决。这种方式会造成下载的数据量比较大,更新的效率比较低。
技术实现思路
本申请提供一种更新软件的方法和设备,用以解决现有技术中存在的目前更新软件的效率低的问题。本申请实施例提供的一种更新软件的方法,该方法包括:客户端对抽象语法树抽象语法树文件进行反序列化得到树状结构的数据,其中所述抽象语法树文件中包括至少一个第一方法,不同的所述第一方法与所述客户端中的不同的第二方法对应;针对任意一个第一方法,所述客户端根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据;所述客户端根据确定的子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。本申请实施例提供的一种更新软件的设备,该设备包括:序列化模块,用于对抽象语法树文件进行返序列化得到树状结构的数据,其中所述抽象语法树文件中包括至少一个第一方法,不同的所述第一方法与所述设备中的不同的第二方法对应;子树确定模块,用于针对任意一个第一方法,根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据;处理模块,用于根据确定的子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。本申请实施例客户端对AST(AbstractSyntaxTree,抽象语法树)文件进行返序列化得到树状结构的数据,根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据,并根据所述子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。由于客户端可以在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据,从而在有错误出现后只需要更新对应的方法,而不需要下载整个客户端,减少了下载的数据量,提高了更新的效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例更新软件的方法流程示意图;图2为本申请实施例树状结构的数据示意图;图3为本申请实施例一种子树结构的数据示意图;图4为本申请实施例另一种子树结构的数据示意图;图5为本申请实施例更新软件的完整方法流程示意图;图6为本申请实施例执行功能的方法流程示意图;图7为本申请实施例更新软件的设备结构示意图。具体实施方式为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部份实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。如图1所示,本申请实施例更新软件的方法包括:步骤100、客户端对AST文件进行返序列化得到树状结构的数据,其中所述AST文件中包括至少一个第一方法,不同的所述第一方法与所述客户端中的不同的第二方法对应;步骤101、针对任意一个第一方法,所述客户端根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据;步骤102、所述客户端并根据所述子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。本申请实施例客户端对AST文件进行返序列化得到树状结构的数据,根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据,并根据所述子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。由于客户端可以在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据,从而在有错误出现后只需要更新对应的方法,而不需要下载整个客户端,减少了下载的数据量,提高了更新的效率。本申请实施例可以应用于采用AST文件和IMP(Implementation,实现)指针的系统,比如MacOS系统、iOS系统等。可选的,本申请实施例的客户端在启动后会查看是否需要更新。具体方式有很多,比如如果插入外置存储器(例如U盘、移动硬盘等),客户端在启动后可以判断外置存储器中是否有AST文件,如果有,可以进一步判断AST文件对应的版本号是否与客户端对应的版本号匹配,如果匹配,则获取AST文件,并进行更新。还比如客户端在启动后可以登录服务器判断客户端对应的版本号是否有需要更新的AST文件,如果有,则从服务器下载AST文件,并进行更新。本申请实施例的AST文件中包括至少一个第一方法,这里的每个第一方法与所述客户端中的一个第二方法对应,且不同的第一方法对应的第二方法也不同。第二方法是客户端中出现错误的方法,对应的第一方法是需要替换的方法,在完成方法更新后,如果需要用到第二方法的功能,就会执行第一方法。本申请实施例的AST文件可以使用Objective-C语言编写,并通过开源编译器(例如Clang)进行编译后生成。下面列举一个生成AST文件的例子。维护人员可以使用Objective-C语言编写未更新的代码(即源代码),以及针对源代码进行更新的代码(即目标代码)。文件后缀名为.h和.m。如果需要对客户端源代码已经存在的一个类的某个地热方法做替换,可以拷贝源代码中该类.h文件中所有内容到目标代码的头文件中。之后使用Clang,通过makefile对上述目标代码进行编译,编译后就得到对应的AST文件。需要说明的是,上述得到AST文件的内容只是举例说明,任何能够生成包含第一方法的AST文件的方式都适用本申请实施例。下面详细介绍下更新的过程。客户端启动并获取到需要更新的AST文件后,对AST文件进行反序列化得到树状结构的数据。AST文件在通过Clang编译生成时,是结构化的字符文件,每个节点为一行字符串,父节点与子节点之间通过缩进判断,若相邻两个节点中后一个节点比前一节点缩进多一个单位,则表示后一节点是前一节点的子节点,如果相邻两个节点中后一个节点与前一节点的缩进相同,则表示两个节点一定拥有同一个父节点。客户端将获取到需要更新的AST文件存储到内存后,读取AST文件之前建立一个空的根节点,并且建立一个由索引值促成的数组,初始值为[0],该索引值i表示是某个节点的第i个子节点。以行为单位遍历AST文件,具本文档来自技高网...

【技术保护点】
1.一种更新软件的方法,其特征在于,该方法包括:客户端对抽象语法树抽象语法树文件进行反序列化得到树状结构的数据,其中所述抽象语法树文件中包括至少一个第一方法,不同的所述第一方法与所述客户端中的不同的第二方法对应;针对任意一个第一方法,所述客户端根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据;所述客户端根据确定的子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。

【技术特征摘要】
1.一种更新软件的方法,其特征在于,该方法包括:客户端对抽象语法树抽象语法树文件进行反序列化得到树状结构的数据,其中所述抽象语法树文件中包括至少一个第一方法,不同的所述第一方法与所述客户端中的不同的第二方法对应;针对任意一个第一方法,所述客户端根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据;所述客户端根据确定的子树结构的数据确定调用信息,以便在需要执行所述第二方法的功能时根据所述调用信息读取所述子树结构的数据。2.如权利要求1所述的方法,其特征在于,针对任意一个第一方法,所述客户端根据树状结构的数据中所述第一方法的目标节点,确定用于执行对应的所述第二方法的功能的子树结构的数据,包括:针对任意一个第一方法,所述客户端确定所述树状结构的数据中以所述第一方法的所述目标节点为根节点的子树结构的数据;所述客户端将确定的子树结构的数据作为用于执行对应的所述第二方法的功能的子树结构的数据。3.如权利要求1所述的方法,其特征在于,所述客户端根据确定的子树结构的数据确定调用信息,包括:所述客户端根据确定的子树结构的数据确定用于读取子树结构的数据的实现指针;所述客户端将所述实现指针置于调用信息中,以便在需要执行所述第二方法的功能时根据所述调用信息中的实现指针读取所述子树结构的数据。4.如权利要求3所述的方法,其特征在于,所述客户端将所述实现指针置于调用信息中,包括:针对任意一个第一方法,所述客户端根据所述抽象语法树文件中所述第一方法的方法名和方法类,生成所述第一方法对应的闭包;所述客户端根据所述第一方法对应的闭包,生成对应的实现指针;所述客户端将所述实现指针置于调用信息中。5.如权利要求4所述的方法,其特征在于,所述客户端根据确定的子树结构的数据确定调用信息之后,还包括:所述客户端在需要执行所述第二方法对应的功能时,确定所述调用信息中所述第二方法对应的实现指针;所述客户端根据实现指针确定对应的闭包;所述客户端确定的闭包读取与所述第二方法对应的第一方法的所述子树结构的数据,执行所述第二方法对应的功能。6.如权利要...

【专利技术属性】
技术研发人员:禹果
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1