应用程序运行方法、装置、设备及存储介质与流程
未命名
09-23
阅读:43
评论:0
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.图1是本技术实施例提供的一种应用程序运行系统的示意图;
26.图2是本技术实施例提供的一种应用程序运行方法的流程示意图;
27.图3是本技术实施例提供的一种确定各个应用程序的相同类节点的方法的流程示意图;
28.图4是本技术实施例提供的一种构建每个类节点对应的关联节点集的方法的流程示意图;
29.图5是本技术实施例提供的一种确定每个应用程序的区别类节点的方法的流程示
意图一;
30.图6是本技术实施例提供的一种确定每个应用程序的区别类节点的方法的流程示意图二;
31.图7是本技术实施例提供的确定每个应用程序对应的初始差异类节点以及回溯差异类节点的方法的流程示意图;
32.图8是本技术实施例提供的生成目标代码文件方法的流程示意图;
33.图9是本技术实施例提供的向所述终端发送所述待运行版本标识方法的流程示意图;
34.图10是本技术实施例提供的双版本化的名为tgatvviewcontroller的类的标识示意图;
35.图11是本技术实施例提供的一种确定待运行版本标识的方法示意图;
36.图12是本技术实施例提供的一种应用程序的版本迭代策略示意图;
37.图13是本技术实施例提供的一种双版本应用程序中类节点数量示意图;
38.图14是本技术实施例提供的一种应用程序运行装置的结构示意图;
39.图15是本技术实施例提供的一种服务器的结构示意图。
具体实施方式
40.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.本技术实施例提供一种应用程序运行方法、装置、设备和存储介质。具体地,本技术实施例的应用程序运行方法可以由计算机设备执行,其中,该计算机设备可以为终端或者服务器等设备。本技术实施例可应用于数据安全、云技术、人工智能、智慧交通等各种场景。
42.首先,在对本技术实施例进行描述的过程中出现的部分名词或者术语作如下解释:
43.智慧交通是在整个交通运输领域充分利用物联网、空间感知、云计算、移动互联网等新一代信息技术,综合运用交通科学、系统方法、人工智能、知识挖掘等理论与工具,以全面感知、深度融合、主动服务、科学决策为目标,通过建设实时的动态信息服务体系,深度挖掘交通运输相关数据,形成问题分析模型,实现行业资源配置优化能力、公共决策能力、行业管理能力、公众服务能力的提升,推动交通运输更安全、更高效、更便捷、更经济、更环保、更舒适的运行和发展,带动交通运输相关产业转型、升级。
44.objective-c,通常写作objc和较少用的objective c或obj-c,是扩充c的面向对象编程语言。
45.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
46.请参阅图1,图1是本技术实施例提供的一种应用程序运行系统的示意图,如图1所示,该应用程序运行系统可以至少包括服务器01和客户端02。
47.具体的,本技术实施例中,所述服务器01可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器01可以包括有网络通信单元、处理器和存储器等等。具体的,所述服务器01可以用于获取目标标识信息对应的至少两个版本的应用程序;以及根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集;以及确定每个类节点对应的子树;以及根据每个类节点对应的子树,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;向客户端02发送所述目标代码文件。
48.具体的,本技术实施例中,所述客户端02可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、智能音箱、车载终端、智能电视等类型的实体设备,也可以包括运行于实体设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,所述客户端02可以用于基于接收的目标代码文件运行任一版本的应用程序。
49.以下介绍本技术的一种应用程序运行方法,图2是本技术实施例提供的一种应用程序运行方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
50.s201:获取目标标识信息对应的至少两个版本的应用程序。
51.在本技术实施例中,目标标识信息可以为应用程序的标识信息,例如,可以包括但不限于字符串、图标等。根据目标标识信息,可以确定出至少两个版本的应用程序;例如,当目标标识信息为视频标识时,可以确定该标识对应的视频应用程序的两个版本或多个版本。
52.s203:根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集。
53.在本技术实施例中,抽象语法树(abstract syntax tree,ast)是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构。它由一堆节点(node)组成,每个节点都表示源代码中的一种结构。不同结构用类型来区分,常见的类型有:identifier(标识符),binaryexpression(二元表达式),variabledeclaration(变量定义),functiondeclaration(函数定义)等。
54.在本技术实施例中,类节点集中的类节点为ast中表征类的节点。
55.具体的,在本技术实施例中,根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集之前,所述方法还可以包括:
56.获取每个版本的应用程序对应的源代码;
57.根据每个应用程序对应的源代码,构建每个应用程序对应的抽象语法树。
58.在本技术实施例中,可以通过编译器llvm前端clang将源代码转化成ast。其中,llvm(low level virtual machine,底层虚拟机)是构架编译器(compiler)的框架系统,以c++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。clang是一个c语言、c++、objective-c语言的轻量级编译器。具体的,可以采用xcodebuild对多个版本的应用程序进行编辑,得到每个应用程序对应的抽象语法树。xcodebuild是命令行工具包的其中一项,命令行工具包(command line tools)是一个轻量的、可以与xcode分开的、在mac上单独下载的命令行工具包。xcode是运行在操作系统mac os x上的集成开发工具(ide)。mac os x是苹果公司为麦金塔电脑开发的专属操作系统。
59.在本技术实施例中,可以通过clang的api(application programming interface,应用程序接口),加载每个应用程序对应的ast到内存中,获取对应ast的根节点;再遍历每个ast的所有子节点,确定每个应用程序对应的类节点集。其中,抽象语法树可以均采用objective-c语言。
60.s205:以每个类节点集中的类节点作为根节点,遍历每个根节点对应的抽象语法树,得到每个类节点对应的子树。
61.在本技术实施例中,可以根据每个类节点集中的类节点作为根节点,构建每个类节点对应的子树,每个子树中有且仅有一个类节点,即为子树的根节点;通过类节点对应的子树,可以确定其他类型的节点的名称、类型以及表达式的值等信息;从而可以用于快速确定不同应用程序对应的差异节点,再进一步确定出应用程序的区别类节点。
62.s207:根据每个类节点对应的子树,确定各个应用程序的相同类节点以及每个应用程序的区别类节点。
63.在本技术实施例中,对于无引用节点的子树,可以将不同应用程序的子树中同一节点进行比对,得到比对结果;再根据比对结果确定每个应用程序的区别类节点。
64.在一些实施例中,对于两个版本的应用程序,如果两个应用程序的同一标识的类节点对应子树中存在不同的节点,则将其确定为差异节点;对于两个以上版本的应用程序,如果任意两个应用程序的的同一标识的类节点对应子树中存在不同的节点,则将其确定为差异节点;然后将每个应用程序的所有差异节点中的类节点,作为每个应用程序的区别类节点。
65.在本技术实施例中,相同类节点是指各个应用程序中均有的共同类节点;一个应用程序的区别类节点是指该应用程序中不同于其他应用程序的类节点。
66.在本技术实施例中,在遍历子树的过程中,同时收集每一个子节点所引用到的对象,并且放到一个集合中保存起来用于以后回溯使用,并且收集节点名字,节点类型,表达式的值等信息,用于后续进行diff时判断是否有差异的依据。其中,diff命令用于比较文件的差异。
67.在本技术实施例中,如图3所示,所述根据每个类节点对应的子树,确定各个应用
程序的相同类节点以及每个应用程序的区别类节点,包括:
68.s2071:根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定每个类节点对应的关联节点集;
69.在一些实施例中,子树的节点可以有对应的引用节点,即节点可以被引用节点调用;可以将每个类节点对应的子树中节点以及所述对应的子树中各个节点所引用的节点,确定为每个类节点对应的关联节点集。
70.在本技术实施例中,如图4所示,所述根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定每个类节点对应的关联节点集,包括:
71.s20711:将每个类节点对应的子树中节点作为每个类节点的第一关联节点;
72.在本技术实施例中,可以将每个类节点对应的子树中所有节点均作为对应的第一关联节点。
73.s20713:将每个类节点对应的子树中各个节点所引用的节点,作为每个类节点的第二关联节点;
74.在本技术实施例中,可以先筛选出每个类节点对应的子树中存在引用关系的节点,再获取子树中节点的引用节点。
75.s20715:根据每个类节点对应的第一关联节点以及第二关联节点,构建每个类节点对应的关联节点集。
76.在本技术实施例中,可以将每个类节点对应的第一关联节点以及第二关联节点形成的集合,作为每个类节点对应的关联节点集。其中,关联节点集中还存储了节点之间的引用关系,从而便于后续进行节点回溯。
77.s2073:根据各个应用程序的同一标识的类节点对应的关联节点集,确定每个应用程序的区别类节点;
78.在本技术实施例中,每个应用程序均对应多个类节点,不同应用程序中可以包括相同标识的类节点,但其对应的属性值可能会不同;可以将不同应用程序之间同一标识的类节点进行比对,通过同一标识的类节点对应的关联节点集,确定每个应用程序的区别类节点。
79.在本技术实施例中,如图5所示,所述根据各个应用程序的同一标识的类节点对应的关联节点集,确定每个应用程序的区别类节点,包括:
80.s20731:获取每个关联节点集中各个关联节点的属性信息;
81.在本技术实施例中,可以获取每个关联节点的属性信息,属性信息可以包括但不限于节点名称、节点类型、表达式的值等信息;然后通过关联节点的属性信息,确定出具有差异的关联节点。
82.s20733:根据各个应用程序的同一标识的类节点对应的各个关联节点的属性信息,确定每个应用程序对应的第一差异节点;
83.在本技术实施例中,可以将不同应用程序的同一标识对应的关联节点的属性信息进行比对,确定出不同类节点对应的差异关联节点,从而确定出每个应用程序对应的第一差异节点。
84.s20735:根据每个应用程序对应的第一差异节点,确定每个应用程序的区别类节点。
85.在本技术实施例中,可以将每个应用程序对应的第一差异节点中的类节点,确定为每个应用程序的区别类节点。每个应用程序均可以对应多个区别类节点。
86.在本技术实施例中,如图6所示,所述根据每个应用程序对应的第一差异节点,确定每个应用程序的区别类节点,包括:
87.s207351:确定每个应用程序对应的目标类节点;任一应用程序对应的目标类节点为目标应用程序对应的类节点集中不存在的节点;所述目标应用程序为所述至少两个版本的应用程序中除所述任一应用程序之外的应用程序;
88.在本技术实施例中,一些应用程序中存在其他应用程序中不存在的类节点,此时直接将该类节点确定为该应用程序的区别类节点。
89.s207353:根据每个应用程序对应的目标类节点以及每个目标类节点对应的关联节点集,确定每个应用程序对应的第二差异节点;
90.在本技术实施例中,对于目标类节点,可以将其对应的子树确定出的关联节点集也作为差异节点;即将每个应用程序对应的目标类节点以及每个目标类节点对应的关联节点集,确定为每个应用程序对应的第二差异节点。例如,在更新版本的应用程序中可能引入了新功能,则其可能存在旧版本应用程序中不存在的类节点。
91.s207355:根据每个应用程序对应的第一差异节点以及第二差异节点,确定每个应用程序的区别类节点。
92.在本技术实施例中,如图7所示,所述根据每个应用程序对应的第一差异节点以及第二差异节点,确定每个应用程序的区别类节点,包括:
93.s2073551:将每个应用程序对应的第一差异节点以及第二差异节点,确定为每个应用程序的初始差异节点;
94.在本技术实施例中,可以将每个应用程序对应的第一差异节点以及第二差异节点,确定为每个应用程序的初始差异节点,从而得到每个应用程序的初始差异节点集合,初始差异节点集合中包括第一差异节点以及第二差异节点。
95.s2073553:将每个应用程序的初始差异节点中的类节点,确定为每个应用程序的初始差异类节点;
96.在本技术实施例中,初始差异节点中可以包括多种类型的节点,将其中的类节点筛选出来作为初始差异类节点。
97.s2073555:根据每个应用程序的初始差异节点在所述初始差异节点对应的关联节点集中进行回溯,确定每个应用程序的回溯差异类节点;所述每个应用程序的回溯差异类节点为,与每个应用程序的初始差异节点存在直接或间接引用关系的类节点;
98.在本技术实施例中,所述根据每个应用程序的初始差异节点在所述初始差异节点对应的关联节点集中进行回溯,确定每个应用程序的回溯差异类节点可以包括:
99.确定任一应用程序的初始差异节点对应的关联节点集,作为所述任一应用程序的候选关联节点集;
100.确定所述候选关联节点集中调用所述任一应用程序的初始差异节点的类节点,作为第一类节点;
101.判断所述候选关联节点集中是否存在调用所述第一类节点的类节点;
102.若不存在,则将第一类节点作为所述任一应用程序的回溯差异类节点;
103.若存在,则将调用所述第一类节点的类节点作为第二节点;并判断所述候选关联节点集中是否存在调用所述第二类节点的类节点;
104.若不存在调用所述第二类节点的类节点,则将第一类节点以第二类节点作为所述任一应用程序的回溯差异类节点。
105.若存在调用所述第二类节点的类节点,则按照上述步骤进行循环,直至找到所有的回溯差异类节点。
106.s2073557:将每个应用程序对应的初始差异类节点以及回溯差异类节点作为每个应用程序的区别类节点。
107.在本技术实施例中,在确定出每个应用程序对应的初始差异类节点之后,可以将直接或间接调用每个应用程序的初始差异节点,作为每个应用程序的回溯差异类节点,从而提高确定出的每个应用程序的区别类节点的准确率。
108.s2075:根据任一应用程序对应的区别类节点以及类节点集,确定各个应用程序的相同类节点。
109.在本技术实施例中,所述根据任一应用程序对应的区别类节点以及类节点集,确定各个应用程序的相同类节点可以包括:
110.确定所述任一应用程序对应的类节点集,得到目标类节点集;
111.从所述目标类节点集中删除所述任一应用程序对应的区别类节点,得到各个应用程序的相同类节点。
112.在本技术实施例中,在确定出各个应用程序对应的区别类节点之后,可以根据其中任意一个应用程序对应的区别类节点以及类节点集,快速确定出相同类节点。
113.在一些实施例中,为了提高相同类节点的准确率,所述方法还可以包括:
114.根据每个应用程序对应的区别类节点以及类节点集,确定各个应用程序的相同类节点。
115.具体的,可以根据每个应用程序对应的区别类节点以及类节点集,确定每个应用程序对应的相同类节点;
116.将各个应用程序对应的相同类节点进行比对;
117.若各个应用程序对应的相同类节点比对结果一致,则将任一应用程序对应的相同类节点作为各个应用程序的相同类节点。
118.s209:根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件。
119.在本技术实施例中,可以将相同类节点对应的代码以及每个应用程序的区别类节点对应的代码组成的集合,确定为目标代码文件。
120.在本技术实施例中,如图8所示,所述根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件,包括:
121.s2091:获取所述相同类节点对应的第一代码集;
122.在本技术实施例中,第一代码集为相同类节点的属性信息对应的代码。
123.s2093:获取每个应用程序的区别类节点对应的第二代码集;
124.在本技术实施例中,每个应用程序对应的第二代码集为每个应用程序的区别类节点的属性信息对应的代码。
125.在一个具体的实施例中,对于双版本的应用程序v65和v71,如图13所示,图13为双版本应用程序中类节点数量示意图,其中展示了两个版本的应用程序各自对应的类节点总数量,以及需要修改和不需修改的类节点数量;基于现有技术将两个应用程序各自对应的代码全部打包,得到的双版本代码段大小为5.663mb,而采用本实施例代码段大小为3.83mb,总体积下降了32.37%。
126.s2095:根据每个应用程序对应的版本,确定每个应用程序对应的第二代码集的版本标识信息;
127.在本技术实施例中,可以设置每个第二代码集的版本标识信息,具体的,可以将版本标识信息作为第二代码集中每个类的后缀标识;对于稳定版本和升级版本的两个应用程序,可以分别设置其对应的第二代码集的版本标识信息;可以将类名加一个后缀,带上版本标识信息;比如,如果一个应用程序的v65版本为稳定版本,v71版本为升级版本,如图10所示,对于一个需要双版本化的名为tgatvviewcontroller的类,修改后分别变为tgatvviewcontroller_v20和tgaviewcontroller_v21,然后编译打包形成第二代码集。整个流程在编译出包时实现,对于开发者来说是完全透明无感知。
128.s2097:根据所述第一代码集以及各个携带版本标识信息的第二代码集,生成目标代码文件。
129.在本技术实施例中,可以将第一代码集以及各个携带版本标识信息的第二代码集进行打包生成目标代码文件。
130.s2011:向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序。
131.在本技术实施例中,终端接收到目标代码文件,可以将其存储至本地的软件开发工具包(software development kit,sdk)模块中,从而可以根据sdk模块运行任一版本的应用程序。在实际应用过程中,可以根据终端的相关信息,确定应用程序的版本,再获取到对应版本的代码文件,从而运行对应版本的应用程序。
132.在本技术实施例中,任一版本的应用程序通常以内嵌子程序的形式存在于关联应用程序中,所述方法还包括:
133.确定与所述目标标识信息匹配的关联应用程序;所述至少两个版本的应用程序为所述关联应用程序的子程序;
134.在本技术实施例中,关联应用程序可以为任一版本的应用程序的主程序,任一版本的应用程序可以内嵌入关联应用程序中;例如,当关联应用程序为游戏应用程序时,任一版本的应用程序可以为嵌入游戏应用程序的电视台游戏直播应用。
135.在一些实施例中,在确定出关联应用程序之后,可以在关联应用程序中嵌入所述目标代码文件,得到更新应用程序;并向终端发送所述更新应用程序,以使终端在所述更新应用程序中,基于所述目标代码文件运行任一版本的应用程序。
136.在本技术实施例中,在构建目标代码文件之后,可以在关联应用程序的基础上进行更新,嵌入目标代码文件,从而实现在关联应用程序中运行任一版本的应用程序,实现以较小的内存存储多个版本的应用程序的代码,保证在终端中可以根据实际需求切换至不同版本的应用程序。
137.确定所述关联应用程序对应的关联终端集;
138.在本技术实施例中,可以确定安装了所述关联应用程序的终端,得到关联终端集。
139.在本技术实施例中,所述向终端发送所述目标代码文件包括:
140.向所述关联终端集发送所述目标代码文件。
141.在本技术实施例中,可以向安装了所述关联应用程序的关联终端集中每个关联终端发送所述目标代码文件,关联终端可以将目标代码文件嵌入所述关联应用程序的源代码中。
142.在本技术实施例中,如图9所示,所述向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序,包括:
143.s20111:向所述终端发送所述目标代码文件;
144.s20113:接收所述终端在所述关联应用程序的运行过程中,响应于基于对所述目标标识信息的触发操作发送的,待运行版本标识获取请求;所述待运行版本标识获取请求携带所述终端的账户关联信息;
145.在本技术实施例中,在所述关联应用程序的运行过程中,终端响应于基于对所述目标标识信息的触发操作,可以向服务器发送待运行版本标识获取请求;终端的账户关联信息可以包括但不限于账户id、账户位置信息、画像信息等;可以根据账户关联信息确定终端所要运行的应用程序的版本标识信息。
146.s20115:基于所述待运行版本标识获取请求,确定与所述账户关联信息匹配的待运行版本标识;
147.在本技术实施例中,多个版本的应用程序通常包括稳定版本和升级版本,升级版本通常需要在小部分用户中进行灰度测试,测试通过之后再将其替换掉之前的稳定版本;当账户关联信息为区域标识时,若该区域标识包括0-100;需要针对其中区别标识为20-30的终端投放升级版本,若当前终端的区域标识为25,则确定其对应升级版本;否则为稳定版本。在确定出与所述账户关联信息匹配的待运行版本标识后,即可获取对应的代码并运行应用程序。
148.在一个具体的实施例中,应用程序上线之后,在sdk启动时会把用户的相关数据传给服务器,后台会根据用户相关信息,决定该用户使用稳定版本v20还是升级版本v21的sdk,从而达到自己控制发布版本sdk实现灰度的过程,后台传回给客户端使用的版本信息,通过objective-c的运行时动态生成相关的入口类实例,进入该版本的sdk逻辑。如图11所示,图11为一种确定待运行版本标识的方法示意图,包括:
149.s1101:终端中启动电视台模块时,向后台服务器发送所述终端的账户关联信息;
150.s1103:后台服务器根据账户关联信息,确定待运行版本标识,并向终端发送配置信息,配置信息包括所述待运行版本标识;
151.s1105:终端解析配置信息,得到待运行版本标识;
152.s1107:终端通过动态生成入口,选择待运行版本标识对应的代码模块,并运行对应版本的应用程序;其中目标代码文件中存储两种版本的sdk,包括v20_sdk和v21_sdk。
153.在本技术实施例中,应用程序的版本迭代策略如图12所示,第一个版本v20是没有灰度策略的,一般都是很基础功能,稳定性相对比较有保障,上线后如果没有问题,这个版本就会成为稳定版本。随着下一个版本迭代,假设为v21,迭代完成上线后,就会跟v20稳定版本一起打包成一个双版本的sdk,此时根据灰度策略,假设从5%开始,就是只有5%的用
户会使用迭代版本,有95%的用户使用稳定版本,如果发布版本稳定,就会扩大灰度范围,如果发布版本有问题,就是回退,所有用户都用稳定版本,此发布版本定义为失败版本。下一个版本迭代,假设为v22,上线就会跟v20稳定版本一起打包成一个双版本sdk,重复上述操作。如果v21表现稳定没问题,完全灰度达到100%,那么稳定版本就会变为v21,这时候v22会跟v21打包成一个双版本sdk上线。
154.s20117:向所述终端发送所述待运行版本标识;以使所述终端在所述目标代码文件中获取与所述待运行版本标识匹配的第二代码集,得到第二目标代码集;以及基于所述第一代码集以及所述第二目标代码集,运行所述待运行版本标识对应的应用程序。
155.在本技术实施例中,终端在接收到待运行版本标识之后,即可获取对应的第二目标代码集,并结合第一代码集,构建待运行应用程序的代码集,实现在关联应用程序中运行所述待运行版本标识对应的应用程序。
156.在本技术实施例中,在终端中可以通过内存较小的目标代码文件运行待运行版本标识对应的应用程序;由于目标代码文件的体积较小,占用内存少,因此,降低了终端的空间存储压力,并提高了应用程序的运行稳定性。
157.在本技术实施例中,所述方法还包括:
158.接收所述终端在监测到所述待运行应用程序出现异常时,发送的异常提醒消息;
159.在本技术实施例中,在应用程序的运行过程中,终端可以对其运行状态进行监测,一旦出现卡顿时间长、卡顿次数多或无法播放等异常情况,终端即发送异常提醒消息;其中,异常提醒消息可以携带异常状态信息。
160.基于所述异常提醒消息,确定所述终端对应的更新版本标识;
161.在本技术实施例中,可以根据异常提醒消息,确定更新版本标识;更新版本标识的级别通常低于待运行版本标识;比如,终端当前运行的应用程序为升级版本,那么更新版本标识可以为低版本的标识。
162.向所述终端发送版本更新指令,所述版本更新指令携带所述更新版本标识;以使所述终端在所述目标代码文件中获取与所述更新版本标识匹配的第二代码集,得到第二更新代码集;以及基于所述第一代码集以及所述第二更新代码集,运行所述更新版本标识对应的应用程序。
163.在一个具体的实施例中,例如关联应用程序为游戏应用,多版本的应用程序为游戏电视台;如果一个版本的sdk上线后出现严重问题,通常需要通过关闭内嵌电视台的方式,防止用户出现游戏崩溃导致无法正常使用游戏客户端,这时候用户就不能在游戏端内观赛。当电视台实现灰度能力后,可以让用户7*24小时进入电视台,如果升级版本出现问题,可以通过后台配置,立马切换至稳定版本,用户仍然能够继续观赛不受影响,从而保证了应用程序的正常运行,也保证了用户在游戏端内的观赛体验。
164.在本技术实施例中,在确定出更新版本标识后,即可向终端发送版本更新指令,以使终端获取更新版本标识对应的第二更新代码集,并结合第一代码集,从待运行版本标识的应用程序切换到更新版本标识对应的应用程序,从而保证终端的稳定、正常运行,提升用户体验。
165.由以上本技术实施例提供的技术方案可见,本技术实施例通过获取目标标识信息对应的至少两个版本的应用程序;根据每个版本的应用程序对应的抽象语法树,确定每个
应用程序对应的类节点集;以每个类节点集中的类节点作为根节点,遍历每个根节点对应的抽象语法树,得到每个类节点对应的子树;根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序。本技术将不同版本的应用程序中代码按照相同类节点和区别类节点分成两部分,在构建目标代码文件时,仅使用一份相同类节点对应的代码,再结合各个应用程序的区别类代码形成目标代码文件,从而大大缩小了目标代码文件的体积,降低了其占用的内存,从而提高了终端的运行稳定性。
166.本技术实施例还提供了一种应用程序运行装置,如图14所示,所述装置包括:
167.应用程序获取模块1410,用于获取目标标识信息对应的至少两个版本的应用程序;
168.类节点集确定模块1420,用于根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集;
169.子树构建模块1430,用于以每个类节点集中的类节点作为根节点,遍历每个根节点对应的抽象语法树,得到每个类节点对应的子树;
170.区别类节点确定模块1440,用于根据每个类节点对应的子树,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;
171.目标代码文件确定模块1450,用于根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;
172.目标代码文件发送模块1460,用于向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序。
173.在一些实施例中,所述区别类节点确定模块可以包括:
174.关联节点集确定子模块,用于根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定每个类节点对应的关联节点集;
175.区别类节点确定子模块,用于根据各个应用程序的同一标识的类节点对应的关联节点集,确定每个应用程序的区别类节点;
176.相同类节点确定子模块,用于根据任一应用程序对应的区别类节点以及类节点集,确定各个应用程序的相同类节点。
177.在一些实施例中,所述关联节点集确定子模块可以包括:
178.第一关联节点确定单元,用于将每个类节点对应的子树中节点作为每个类节点的第一关联节点;
179.第二关联节点确定单元,用于将每个类节点对应的子树中各个节点所引用的节点,作为每个类节点的第二关联节点;
180.关联节点集构建单元,用于根据每个类节点对应的第一关联节点以及第二关联节点,构建每个类节点对应的关联节点集。
181.在一些实施例中,所述区别类节点确定子模块可以包括:
182.属性信息获取单元,用于获取每个关联节点集中各个关联节点的属性信息;
183.第一差异节点确定单元,用于根据各个应用程序的同一标识的类节点对应的各个
关联节点的属性信息,确定每个应用程序对应的第一差异节点;
184.区别类节点确定单元,用于根据每个应用程序对应的第一差异节点,确定每个应用程序的区别类节点。
185.在一些实施例中,所述区别类节点确定单元可以包括:
186.目标类节点确定子单元,用于确定每个应用程序对应的目标类节点;任一应用程序对应的目标类节点为目标应用程序对应的类节点集中不存在的节点;所述目标应用程序为所述至少两个版本的应用程序中除所述任一应用程序之外的应用程序;
187.第二差异节点确定子单元,用于根据每个应用程序对应的目标类节点以及每个目标类节点对应的关联节点集,确定每个应用程序对应的第二差异节点;
188.区别类节点确定子单元,用于根据每个应用程序对应的第一差异节点以及第二差异节点,确定每个应用程序的区别类节点。
189.在一些实施例中,所述区别类节点确定子单元可以包括:
190.初始差异节点确定子单元,用于将每个应用程序对应的第一差异节点以及第二差异节点,确定为每个应用程序的初始差异节点;
191.初始差异类节点确定子单元,用于将每个应用程序的初始差异节点中的类节点,确定为每个应用程序的初始差异类节点;
192.回溯差异类节点确定子单元,用于根据每个应用程序的初始差异节点在所述初始差异节点对应的关联节点集中进行回溯,确定每个应用程序的回溯差异类节点;所述每个应用程序的回溯差异类节点为,与每个应用程序的初始差异节点存在直接或间接引用关系的类节点;
193.区别类节点构建子单元,用于将每个应用程序对应的初始差异类节点以及回溯差异类节点作为每个应用程序的区别类节点。
194.在一些实施例中,所述目标代码文件发送模块可以包括:
195.第一代码集获取子模块,用于获取所述相同类节点对应的第一代码集;
196.第二代码集获取子模块,用于获取每个应用程序的区别类节点对应的第二代码集;
197.版本标识信息确定子模块,用于根据每个应用程序对应的版本,确定每个应用程序对应的第二代码集的版本标识信息;
198.目标代码文件生成子模块,用于根据所述第一代码集以及各个携带版本标识信息的第二代码集,生成目标代码文件。
199.在一些实施例中,所述装置还可以包括:
200.关联应用程序确定模块,用于确定与所述目标标识信息匹配的关联应用程序;所述至少两个版本的应用程序为所述关联应用程序的子程序;
201.关联终端集确定模块,用于确定所述关联应用程序对应的关联终端集;
202.在一些实施例中,所述目标代码文件发送模块包括:
203.第一目标代码文件发送子模块,用于向所述关联终端集发送所述目标代码文件。
204.在一些实施例中,所述目标代码文件发送模块可以包括:
205.第二目标代码文件发送子模块,用于向所述终端发送所述目标代码文件;
206.请求接收子模块,用于接收所述终端在所述关联应用程序的运行过程中,响应于
基于对所述目标标识信息的触发操作发送的,待运行版本标识获取请求;所述待运行版本标识获取请求携带所述终端的账户关联信息;
207.待运行版本标识确定子模块,用于基于所述待运行版本标识获取请求,确定与所述账户关联信息匹配的待运行版本标识;
208.待运行版本标识发送子模块,用于向所述终端发送所述待运行版本标识;以使所述终端在所述目标代码文件中获取与所述待运行版本标识匹配的第二代码集,得到第二目标代码集;以及基于所述第一代码集以及所述第二目标代码集,运行所述待运行版本标识对应的应用程序。
209.在一些实施例中,所述装置还可以包括:
210.异常提醒消息发送模块,用于接收所述终端在监测到所述待运行应用程序出现异常时,发送的异常提醒消息;
211.更新版本标识确定模块,用于基于所述异常提醒消息,确定所述终端对应的更新版本标识;
212.版本更新指令发送模块,用于向所述终端发送版本更新指令,所述版本更新指令携带所述更新版本标识;以使所述终端在所述目标代码文件中获取与所述更新版本标识匹配的第二代码集,得到第二更新代码集;以及基于所述第一代码集以及所述第二更新代码集,运行所述更新版本标识对应的应用程序。
213.所述的装置实施例中的装置与方法实施例基于同样地发明构思。
214.本技术实施例提供了一种应用程序运行设备,该设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的应用程序运行方法。
215.本技术的实施例还提供了一种计算机存储介质,所述存储介质可设置于终端之中以保存用于实现方法实施例中一种应用程序运行方法相关的至少一条指令或至少一段程序,该至少一条指令或至少一段程序由该处理器加载并执行以实现上述方法实施例提供的应用程序运行方法。
216.本技术的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行以实现上述方法实施例提供的应用程序运行方法。
217.可选地,在本技术实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
218.本技术实施例所述存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访
问。
219.本技术实施例所提供的应用程序运行方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图15是本技术实施例提供的一种应用程序运行方法的服务器的硬件结构框图。如图15所示,该服务器1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)1510(中央处理器1510可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器1530,一个或一个以上存储应用程序1523或数据1522的存储介质1520(例如一个或一个以上海量存储设备)。其中,存储器1530和存储介质1520可以是短暂存储或持久存储。存储在存储介质1520的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1510可以设置为与存储介质1520通信,在服务器1500上执行存储介质1520中的一系列指令操作。服务器1500还可以包括一个或一个以上电源1560,一个或一个以上有线或无线网络接口1550,一个或一个以上输入输出接口1540,和/或,一个或一个以上操作系统1521,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
220.输入输出接口1540可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1500的通信供应商提供的无线网络。在一个实例中,输入输出接口1540包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1540可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
221.本领域普通技术人员可以理解,图15所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1500还可包括比图15中所示更多或者更少的组件,或者具有与图15所示不同的配置。
222.由上述本技术提供的应用程序运行方法、装置、设备或存储介质的实施例可见,本技术通过获取目标标识信息对应的至少两个版本的应用程序;根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集;以每个类节点集中的类节点作为根节点,遍历每个根节点对应的抽象语法树,得到每个类节点对应的子树;根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序。本技术将不同版本的应用程序中代码按照相同类节点和区别类节点分成两部分,在构建目标代码文件时,仅使用一份相同类节点对应的代码,再结合各个应用程序的区别类代码形成目标代码文件,从而大大缩小了目标代码文件的体积,降低了其占用的内存,从而提高了终端的运行稳定性。
223.需要说明的是:上述本技术实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
224.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
225.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
226.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种应用程序运行方法,其特征在于,所述方法包括:获取目标标识信息对应的至少两个版本的应用程序;根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集;以每个类节点集中的类节点作为根节点,遍历每个根节点对应的抽象语法树,得到每个类节点对应的子树;根据每个类节点对应的子树,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序。2.根据权利要求1所述的方法,其特征在于,所述根据每个类节点对应的子树,确定各个应用程序的相同类节点以及每个应用程序的区别类节点,包括:根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定每个类节点对应的关联节点集;根据各个应用程序的同一标识的类节点对应的关联节点集,确定每个应用程序的区别类节点;根据任一应用程序对应的区别类节点以及类节点集,确定各个应用程序的相同类节点。3.根据权利要求2所述的方法,其特征在于,所述根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定每个类节点对应的关联节点集,包括:将每个类节点对应的子树中节点作为每个类节点的第一关联节点;将每个类节点对应的子树中各个节点所引用的节点,作为每个类节点的第二关联节点;根据每个类节点对应的第一关联节点以及第二关联节点,构建每个类节点对应的关联节点集。4.根据权利要求2所述的方法,其特征在于,所述根据各个应用程序的同一标识的类节点对应的关联节点集,确定每个应用程序的区别类节点,包括:获取每个关联节点集中各个关联节点的属性信息;根据各个应用程序的同一标识的类节点对应的各个关联节点的属性信息,确定每个应用程序对应的第一差异节点;根据每个应用程序对应的第一差异节点,确定每个应用程序的区别类节点。5.根据权利要求4所述的方法,其特征在于,所述根据每个应用程序对应的第一差异节点,确定每个应用程序的区别类节点,包括:确定每个应用程序对应的目标类节点;任一应用程序对应的目标类节点为目标应用程序对应的类节点集中不存在的节点;所述目标应用程序为所述至少两个版本的应用程序中除所述任一应用程序之外的应用程序;根据每个应用程序对应的目标类节点以及每个目标类节点对应的关联节点集,确定每个应用程序对应的第二差异节点;
根据每个应用程序对应的第一差异节点以及第二差异节点,确定每个应用程序的区别类节点。6.根据权利要求5所述的方法,其特征在于,所述根据每个应用程序对应的第一差异节点以及第二差异节点,确定每个应用程序的区别类节点,包括:将每个应用程序对应的第一差异节点以及第二差异节点,确定为每个应用程序的初始差异节点;将每个应用程序的初始差异节点中的类节点,确定为每个应用程序的初始差异类节点;根据每个应用程序的初始差异节点在所述初始差异节点对应的关联节点集中进行回溯,确定每个应用程序的回溯差异类节点;所述每个应用程序的回溯差异类节点为,与每个应用程序的初始差异节点存在直接或间接引用关系的类节点;将每个应用程序对应的初始差异类节点以及回溯差异类节点作为每个应用程序的区别类节点。7.根据权利要求1-6任一项所述的方法,其特征在于,所述根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件,包括:获取所述相同类节点对应的第一代码集;获取每个应用程序的区别类节点对应的第二代码集;根据每个应用程序对应的版本,确定每个应用程序对应的第二代码集的版本标识信息;根据所述第一代码集以及各个携带版本标识信息的第二代码集,生成目标代码文件。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:确定与所述目标标识信息匹配的关联应用程序;所述至少两个版本的应用程序为所述关联应用程序的子程序;确定所述关联应用程序对应的关联终端集;所述向终端发送所述目标代码文件包括:向所述关联终端集发送所述目标代码文件。9.根据权利要求8所述的方法,其特征在于,所述向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序,包括:向所述终端发送所述目标代码文件;接收所述终端在所述关联应用程序的运行过程中,响应于基于对所述目标标识信息的触发操作发送的,待运行版本标识获取请求;所述待运行版本标识获取请求携带所述终端的账户关联信息;基于所述待运行版本标识获取请求,确定与所述账户关联信息匹配的待运行版本标识;向所述终端发送所述待运行版本标识;以使所述终端在所述目标代码文件中获取与所述待运行版本标识匹配的第二代码集,得到第二目标代码集;以及基于所述第一代码集以及所述第二目标代码集,运行所述待运行版本标识对应的应用程序。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:接收所述终端在监测到所述待运行应用程序出现异常时,发送的异常提醒消息;
基于所述异常提醒消息,确定所述终端对应的更新版本标识;向所述终端发送版本更新指令,所述版本更新指令携带所述更新版本标识;以使所述终端在所述目标代码文件中获取与所述更新版本标识匹配的第二代码集,得到第二更新代码集;以及基于所述第一代码集以及所述第二更新代码集,运行所述更新版本标识对应的应用程序。11.一种应用程序运行装置,其特征在于,所述装置包括:应用程序获取模块,用于获取目标标识信息对应的至少两个版本的应用程序;类节点集确定模块,用于根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集;子树构建模块,用于以每个类节点集中的类节点作为根节点,遍历每个根节点对应的抽象语法树,得到每个类节点对应的子树;区别类节点确定模块,用于根据每个类节点对应的子树,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;目标代码文件确定模块,用于根据所述相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;目标代码文件发送模块,用于向终端发送所述目标代码文件,以使所述终端基于所述目标代码文件运行任一版本的应用程序。12.一种应用程序运行设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1-10任一所述的应用程序运行方法。13.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-10任一所述的应用程序运行方法。14.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1-10任一所述的应用程序运行方法。
技术总结
本申请公开了一种应用程序运行方法、装置、设备及存储介质,可以应用于云技术、人工智能、智慧交通、车联网等各种场景,方法包括:获取目标标识信息对应的至少两个版本的应用程序;根据每个版本的应用程序对应的抽象语法树,确定每个应用程序对应的类节点集;根据每个类节点对应的子树以及每个子树中各个节点所引用的节点,确定各个应用程序的相同类节点以及每个应用程序的区别类节点;根据相同类节点对应的代码以及每个应用程序的区别类节点对应的代码,确定目标代码文件;向终端发送目标代码文件,以使终端基于目标代码文件运行任一版本的应用程序。本申请缩小了目标代码文件的体积,降低了其占用的内存,从而提高了终端的运行稳定性。的运行稳定性。的运行稳定性。
技术研发人员:陈建波
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.03.17
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/