CN113010178B - 应用程序运行控制方法、装置、设备和介质 - Google Patents

应用程序运行控制方法、装置、设备和介质 Download PDF

Info

Publication number
CN113010178B
CN113010178B CN202110193688.XA CN202110193688A CN113010178B CN 113010178 B CN113010178 B CN 113010178B CN 202110193688 A CN202110193688 A CN 202110193688A CN 113010178 B CN113010178 B CN 113010178B
Authority
CN
China
Prior art keywords
dynamic code
file
snapshot
application program
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110193688.XA
Other languages
English (en)
Other versions
CN113010178A (zh
Inventor
王舒捷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN202110193688.XA priority Critical patent/CN113010178B/zh
Publication of CN113010178A publication Critical patent/CN113010178A/zh
Application granted granted Critical
Publication of CN113010178B publication Critical patent/CN113010178B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开实施例涉及一种应用程序运行控制方法、装置、设备和介质,其中,该方法包括:获取对应用程序中动态代码功能的触发操作;响应于触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件,动态代码快照文件包括适配虚拟机运行时所需的格式数据,格式数据是通过对动态代码功能对应的动态代码文件进行解析生成;将动态代码快照文件加载到虚拟机中运行,以实现动态代码功能。本公开实施例通过提前为应用程序的动态代码文件的解析结果生成对应的动态代码快照文件,省去了应用程序中多次加载动态代码功能过程中对动态代码文件进行重复解析的操作,缩短了应用程序的动态代码功能加载时间,优化了应用程序的运行性能。

Description

应用程序运行控制方法、装置、设备和介质
技术领域
本公开涉及应用程序开发技术领域,尤其涉及一种应用程序运行控制方法、装置、设备和介质。
背景技术
随着终端设备功能的提升,终端设备上可运行的应用程序也日益丰富。用户可以通过终端设备的应用商店或应用官网下载所需的应用程序的安装包(Androidapplication package,APK),并在下载完成后触发应用程序的安装。
基于应用服务商的功能维护与开发,应用程序被安装之后,其支持的应用功能仍可以不断增加,该新增的应用功能主要是通过服务器向终端设备下发动态代码文件的方式实现。
然而,终端设备根据应用程序的启动操作,每次均需要对动态代码文件进行解析后才可以执行该动态代码文件,使得应用程序展示与动态代码文件对应的功能,其中的解析操作非常耗时,这导致应用程序的每次功能加载时间相应较长,应用程序的运行性能不佳。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种应用程序运行控制方法、装置、设备和介质。
第一方面,本公开实施例提供了一种应用程序运行控制方法,包括:
获取对应用程序中动态代码功能的触发操作;
响应于所述触发操作,从快照存储模块中获取与所述动态代码功能对应的动态代码快照文件,所述动态代码快照文件包括适配虚拟机运行时所需的格式数据,所述格式数据是通过对所述动态代码功能对应的动态代码文件进行解析生成;
将所述动态代码快照文件加载到所述虚拟机中运行,以实现所述动态代码功能。
第二方面,本公开实施例还提供了一种应用程序运行控制装置,包括:
触发操作获取模块,用于获取对应用程序中动态代码功能的触发操作;
第一快照文件获取模块,用于响应于所述触发操作,从快照存储模块中获取与所述动态代码功能对应的动态代码快照文件,所述动态代码快照文件包括适配虚拟机运行时所需的格式数据,所述格式数据是通过对所述动态代码功能对应的动态代码文件进行解析生成;
快照文件运行模块,用于将所述动态代码快照文件加载到所述虚拟机中运行,以实现所述动态代码功能。
第三方面,本公开实施例还提供了一种终端设备,包括存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,所述处理器执行本公开实施例提供的任一应用程序运行控制方法。
第四方面,本公开实施例还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,所述处理器执行本公开实施例提供的任一应用程序运行控制方法。
本公开实施例提供的技术方案与现有技术相比至少具有如下优点:在本公开实施例中,针对终端设备中应用程序的动态代码功能,会预先对动态代码文件进行解析并生成动态代码快照文件,然后将该动态代码快照文件存储在快照存储模块中,当终端设备中多次产生对应用程序的动态代码功能的触发需求时,可以直接将动态代码快照文件加载至终端设备的虚拟机中运行,省去了应用程序中多次加载动态代码功能过程中需要对动态代码文件进行重复解析的操作,解决了现有方案中应用程序的动态代码功能加载时间较长的问题,缩短了应用程序的动态代码功能加载时间,优化了应用程序的运行性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种现有技术中应用程序的功能实现方法的流程图;
图2为本公开实施例提供的基于快照技术的应用程序中功能实现方法与现有技术的一种对比示意图;
图3为本公开实施例提供的一种应用程序运行控制方法的流程图;
图4为本公开实施例提供的另一种应用程序运行控制方法的流程图;
图5为本公开实施例提供的一种应用程序运行控制装置的结构示意图;
图6为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
针对终端设备中安装的应用程序,相关的代码文件可以分为两类:静态代码文件和动态代码文件。静态代码文件是指用户从应用商店或者应用官网下载的安装包文件,例如安卓应用程序包(Android application package,APK),安装包文件中的代码除非服务商发布新的安装包,否则这部分代码无法被更新。动态代码文件是指应用程序被安装之后,并在应用程序运行过程中,从服务端中获取(包括服务端主动下发或者服务端根据应用程序的获取请求而下发)的新的代码文件,动态代码文件中的代码可以随时更新,用户无需通过应用商店或者应用官网重新安装或者更新应用程序,而仅仅在应用程序运行过程中从服务端中下载最新代码并运行,即可实现动态代码文件对应的动态代码功能。根据应用程序的功能类型以及运营需求,动态代码功能可以是任意可实现的功能。
图1为本公开实施例提供的一种现有技术中应用程序的功能实现方法的流程图。如图1所示,在应用程序开发阶段,开发人员基于特定的编程语言编写代码,得到与编程语言对应的文件,例如.java后缀的文件,利用编译器对代码进行编译后,得到可以下发至终端设备中运行的另一后缀格式的代码文件,例如.java后缀的文件被编译后可以得到.class文件,.class文件可以下发至安卓类终端设备中运行。针对下发至终端设备中的静态代码文件,终端设备可以根据用户触发的安装操作将应用程序安装在终端设备中。具体的,在应用程序安装过程中,需要由终端操作系统中的虚拟机将代码文件读取到内存中,然后虚拟机将代码文件中存储的各种信息读取出来,包括代码段、常量段等,并将读取出来的各种信息转化为虚拟机内部的数据结构(这个过程可以称为代码文件解析过程),即转化为虚拟机可识别的数据结构;最后虚拟机运行代码文件,实现应用程序的安装。在安卓操作系统中,以java作为主要的程序开发语言,java代码在终端硬件上运行,需要经过操作系统中的java虚拟机(java virtual machine,jvm)来运行。
同样的,针对应用程序运行过程中,从服务端获取的动态代码文件(即图1中显示的新的编译后的代码文件),虚拟机运行该动态代码文件过程中,需要首先对该动态代码进行解析,转化为虚拟机内部的数据结构后,才可以运行该动态代码文件,从而实现动态代码文件对应的动态代码功能。
由图1可知,如果同一应用程序在终端设备中被多次重复地安装,或者应用程序执行多次重启后重新加载同一动态代码功能,均需要重复对静态代码文件或动态代码文件进行解析操作,导致应用程序安装过程或动态代码功能的加载过程非常耗时。
图2为本公开实施例提供的基于快照技术的应用程序中功能实现方法与现有技术的一种对比示意图。如图2中虚线所示,针对静态代码文件,终端设备(或终端操作系统)在安装应用程序过程中,对静态代码文件进行解析,得到虚拟机内部需求的数据结构后,生成该数据结构的快照文件并进行存储,当再次执行该应用程序的安装操作过程中,虚拟机可以直接将该快照文件读取到内存中,并运行该快照文件,从而实现应用程序的再次安装。应用程序的再次安装过程中,由于省去了静态代码文件的解析操作,因此,安装耗时得以减少。
基于此,如果能够为应用程序相关的动态代码文件的解析结果也提前生成快照文件,则在应用程序多次执行加载动态代码功能的过程中,尤其是应用程序重启后重新加载动态代码功能的过程中,虚拟机可以直接将动态代码文件的解析结果对应的快照文件读取至内存中并运行,无需重复执行动态代码文件的解析操作,从而实现动态代码功能的快速加载。
在本公开实施例中,示例性的,应用程序的动态代码功能可以包括直播功能、信息推广或活动推广功能等功能中的至少一个,信息推广功能可以包括广告推广等,活动推广功能可以包括红包推广或红包派送等。各个动态代码功能在应用程序的指定界面上可以对应有动态代码功能控件,以实现为用户提供可视化的界面展示,方便用户触发动态代码功能。示例性的,针对视频交互类应用程序,在应用主界面上可以设置直播控件,终端设备可以根据用户对该直播控件的触控操作,实现为用户展示相应的直播间界面;或者,在应用主界面上可以设置广告推广控件,终端设备可以根据用户对该广告推广控件的触控操作,实现为用户展示广告内容详情界面。
图3为本公开实施例提供的一种应用程序运行控制方法的流程图。该方法可以适用于如何高效加载应用程序的动态代码功能的情况,该方法可以由应用程序运行控制装置来执行,该装置可以采用软件和/或硬件实现,并可集成在终端设备(或者终端操作系统)中,该终端设备可以包括但不限于移动电话、笔记本电脑、平板电脑等。
如图3所示,本公开实施例提供的应用程序运行控制方法可以包括:
S101、获取对应用程序中动态代码功能的触发操作。
动态代码功能的触发操作用于表示应用程序在当前运行过程中存在对动态代码功能的加载需求。该触发操作可以是用户在应用界面上的触控操作,例如,在用户重启应用程序后,终端设备获取用户对应用界面上展示的动态代码功能控件的触控操作,即作为对应用程序中动态代码功能的触发操作;该触发操作还可以是终端设备根据应用界面的功能展示需求而自动生成,该应用界面可以是应用程序的主界面或者其他任意具有动态代码功能加载需求的界面,具体可以根据服务端对应用程序的功能运营需求而定。例如,基于应用程序的功能运营需求,需要应用程序的预设界面在指定时间段内显示特定的活动画面,展示特定活动画面即为应用程序的一个动态代码功能,因此,当终端设备在前述指定时间段内启动应用程序并展示预设界面过程中,自动生成对应用程序中动态代码功能的触发操作。
S102、响应于触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件,动态代码快照文件包括适配虚拟机运行时所需的格式数据,格式数据是通过对动态代码功能对应的动态代码文件进行解析生成。
终端设备可以响应于获取的触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件。动态代码快照文件用于实现应用程序中的动态代码功能。快照存储模块可以对与动态代码功能对应的动态代码快照文件进行持久化存储,以确保在多次加载应用程序的动态代码功能过程中,终端设备均可以成功获取到需求的快照文件。示例性的,快照存储模块可以是终端设备中具有存储功能的功能模块,例如磁盘、内存卡等,还可以是终端设备可通信的网络存储区域。在保证较高的网络传输速度的情况下,例如5G网络传输,终端设备从网络存储区域获取动态代码快照文件,与从本地存储区域获取动态代码快照文件相比,几乎不会存在获取时间差异,因此也不会额外增加应用程序动态代码功能的加载时间。
在本公开实施例中,动态代码快照文件可以是预先在终端设备本地生成并存储,也可以是由服务端预先生成并下发至终端设备中存储,还可以是由服务端预先生成并存储在服务端本地或者其他网络存储区域,具体可以根据应用程序的功能维护策略而定。
针对应用程序的每一个动态代码功能,动态代码文件中可以包括多个代码子文件,例如运行在安卓操作系统上的某些应用程序的一个动态代码功能可以对应多个class文件,因此,终端设备或者服务端对动态代码文件进行解析后,可以得到多个包括能够在虚拟机上运行的特定数据格式的数据(数据格式与终端操作系统中的虚拟机有关)的解析文件,进而为这些解析文件生成的动态代码快照文件也包括多个。在动态代码快照文件的存储过程中,可以按照动态代码快照文件与动态代码功能的标识(可以用于唯一性表征动态代码功能)的对应关系进行存储。进而,可选的,终端设备可以基于动态代码功能的标识从快照存储模块中获取对应的动态代码快照文件,以确保当前所需的动态代码快照文件的获取准确性。示例性的,动态代码功能的标识可以包括动态代码功能对应的class文件名等。
S103、将动态代码快照文件加载到虚拟机中运行,以实现动态代码功能。
示例性的,电子设备从快照存储模块中获取与动态代码功能对应的动态代码快照文件后,可以将动态代码快照文件存储到内存中,然后从内存中获取动态代码快照文件,并加载到虚拟机中运行,以实现动态代码功能。当应用程序运行结束后,内存中的动态代码快照文件也随之释放。
终端设备直接将获取的动态代码快照文件加载到虚拟机中运行,与首先对获取的动态代码文件进行解析,得到能够在虚拟机上运行的解析文件,然后将该解析文件加载到虚拟机中运行相比,可以产生相同的运行效果,但是动态代码快照文件的利用,可以省去当前应用程序加载动态代码功能过程中,对动态代码文件的解析操作,因此,动态代码功能的加载耗时得以减少。
在本公开实施例中,针对终端设备中应用程序的动态代码功能,会预先对动态代码文件进行解析并生成动态代码快照文件,然后将该动态代码快照文件存储在快照存储模块中,当终端设备中多次产生对应用程序的动态代码功能的触发需求时,可以直接将动态代码快照文件加载至终端设备的虚拟机中运行,省去了应用程序中多次加载动态代码功能过程中需要对动态代码文件进行重复解析的操作,解决了现有方案中应用程序的动态代码功能加载时间较长的问题,缩短了应用程序的动态代码功能加载时间,优化了应用程序的运行性能。
图4为本公开实施例提供的另一种应用程序运行控制方法的流程图,基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。
如图4所示,本公开实施例提供的应用程序运行控制方法可以包括:
S201、接收服务端首次下发的应用程序的动态代码文件,将应用程序的动态代码文件标记为待快照处理文件。
当终端设备中存在对应用程序中动态代码功能的首次触发操作时,即在应用程序中首次加载动态代码功能,终端设备需要首先从服务端中获取与动态代码功能对应的动态代码文件。终端设备获取到动态代码文件之后,可以根据动态代码文件的存储路径,对动态代码文件进行标记,以表示该动态代码文件需要被解析并生成与解析结果对应的动态代码快照文件。
可选的,接收服务端首次下发的应用程序的动态代码文件,包括:
向服务端发送动态代码文件获取请求,动态代码文件获取请求中包括动态代码功能的标识,该标识用于服务端确定相应的动态代码文件;接收服务端基于动态代码功能的标识首次反馈的应用程序的动态代码文件。
示例性的,终端设备可以根据用户在应用界面上对动态代码功能控件的触控操作,生成动态代码文件获取请求,并向服务端发送;或者,终端设备可以根据应用程序的当前界面展示需求(例如展示特定界面、界面切换或者界面跳转时,待展示界面上存在待展示的动态代码功能等),自动生成动态代码文件获取请求。其中,该待展示界面可以是应用程序的主界面或者其他任意具有动态代码功能加载需求的界面,可以根据服务端对应用程序的功能运营需求而定。例如,基于应用程序的功能运营需求,需要应用程序的预设界面在指定时间段内显示特定的活动画面,展示特定活动画面即为应用程序的一个动态代码功能,因此,当终端设备在前述指定时间段内首次启动应用程序并展示应用程序的预设界面过程中,自动生成对应用程序中动态代码功能的首次触发操作,也即主动生成动态代码文件获取请求,并向服务端发送。
可选的,接收服务端首次下发的应用程序的动态代码文件,包括:接收服务端根据应用程序的界面的功能展示需求,主动下发的应用程序的动态代码文件。例如基于应用程序的功能运营需求,需要在指定时间段内,应用程序启动后并在主界面显示特定的活动画面,因此,当用户在终端设备中启动应用程序后,服务端基于与应用程序的数据交互确定应用程序被启动后,可以主动向终端设备发送与应用程序主界面上的动态代码功能对应的动态代码文件。
S202、在应用程序首次运行动态代码文件时,针对待快照处理文件进行快照化处理得到动态代码文件对应的动态代码快照文件,并将动态代码快照文件保存在快照存储模块中。
示例性的,首先,终端设备可以利用代码解析器,按照终端操作系统中虚拟机需求的数据格式,对动态代码文件进行解析,得到能够在虚拟机上运行的特定格式的数据,即适配虚拟机运行时所需的格式数据。代码解析器属于虚拟机的一部分。进一步的,该代码解析器在终端操作系统中,同样用于对静态代码文件进行解析,即本公开实施例中可以利用对静态代码文件进行解析的代码解析器,对动态代码文件进行解析,无需额外在终端设备中集成其他的具有代码解析功能的模块或者插件。关于代码解析器的具体实现原理可以参考现有技术原理实现。
然后,利用快照生成技术,基于动态代码文件的解析结果(即适配虚拟机运行时所需的格式数据)构建动态代码快照文件,并存储到快照存储模块中,实现持久化存储,以便于应用程序后续多次加载动态代码功能时,可以直接基于动态代码快照文件实现动态代码功能,省去动态代码文件的解析操作。关于快照技术的具体实现,可以参考现有技术实现,本公开实施例不作具体限定。在存储动态代码快照文件的过程中,可以按照动态代码快照文件与动态代码功能标识之间的对应关系进行存储。
动态代码快照文件的名称是基于动态代码文件的文件名称和快照文件的通用后缀名称得到,因此,也可以将动态代码快照文件的名称与动态代码文件的名称之间的关联性,作为动态代码快照文件与动态代码功能标识之间的对应关系。
可选的,在应用程序首次运行动态代码文件时,针对待快照处理文件进行快照化处理得到动态代码文件对应的动态代码快照文件,包括:
获取应用程序当前依赖的终端设备的硬件类型标识;
在应用程序首次运行动态代码文件时,根据硬件类型标识确定虚拟机运行时所需的数据格式,并基于数据格式,对待快照处理文件进行快照化处理得到动态代码文件对应的动态代码快照文件。
硬件类型标识用于表征终端设备采用的硬件情况。终端设备的硬件类型标识可以包括中央处理器、图形处理器和存储器等硬件中至少一种硬件的类型标识。终端设备的采用的硬件不同,终端操作系统中的虚拟机不同,不同的虚拟机需求的数据格式不同。因此,根据硬件类型标识确定虚拟机运行时所需的数据格式,可以确保动态代码文件的解析结果的有效性,进而确保生成的动态代码快照文件的有效性。
S203、获取对应用程序中动态代码功能的触发操作。
S204、响应于触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件,动态代码快照文件包括适配虚拟机运行时所需的格式数据,格式数据是通过对动态代码功能对应的动态代码文件进行解析生成。
S205、将动态代码快照文件加载到虚拟机中运行,以实现动态代码功能。
在上述技术方案的基础上,可选的,本公开实施例提供的应用程序运行控制方法还可以包括:
向服务端发送快照获取请求,快照获取请求中携带动态代码功能的标识和应用程序当前依赖的终端设备的硬件类型标识;
接收服务端反馈的与硬件类型标识匹配且与动态代码功能对应的动态代码快照文件。
其中,硬件类型标识可以使服务端确定终端操作系统中虚拟机的类型,进而确定终端操作系统中虚拟机运行时需求的数据格式,从而使得服务端能够解析出与终端操作系统中虚拟机运行时需求的数据格式相匹配的格式数据,进而确保动态代码快照文件的可用性。
示例性的,服务端在接收到终端设备发送的动态代码文件获取请求后,可以根据动态代码文件获取请求中包括的动态代码功能的标识,确定该标识对应的动态代码文件;或者,服务端可以根据应用程序运行过程中的应用界面的功能展示需求,确定与该应用界面上展示的动态代码功能对应的动态代码文件;然后基于应用程序当前依赖的终端设备的硬件类型标识,确定虚拟机运行时所需的数据格式,并基于该数据格式对该动态代码文件进行解析,得到配虚拟机运行时所需的格式数据,进而基于该格式数据构建动态代码快照文件。服务端可以按照动态代码快照文件分别与动态代码功能的标识和终端设备的硬件类型标识之间的对应关系,将动态代码快照文件存储在本地。当服务端收到快照获取请求后,确定与该快照获取请求对应的动态代码快照文件,并反馈给终端设备。其中,关于应用程序当前依赖的终端设备的硬件类型标识,服务端可以通过与终端设备的信息交互获取到。
在本公开实施例中,通过在应用程序首次运行动态代码文件时,生成动态代码文件对应的动态代码快照文件,从而后续可以基于该快照文件实现动态代码功能,省去了应用程序中多次加载动态代码功能过程中需要对动态代码文件进行重复解析的操作,解决了现有方案中应用程序的动态代码功能加载时间较长的问题,缩短了应用程序的动态代码功能加载时间,优化了应用程序的运行性能。
图5为本公开实施例提供的一种应用程序运行控制装置的结构示意图。该装置可以采用软件和/或硬件实现,并可集成在终端设备中,该终端设备可以包括但不限于移动电话、笔记本电脑、平板电脑等。
如图5所示,本公开实施例提供的应用程序运行控制装置500可以包括触发操作获取模块501、第一快照文件获取模块502和快照文件运行模块503,其中:
触发操作获取模块501,用于获取对应用程序中动态代码功能的触发操作;
第一快照文件获取模块502,用于响应于触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件,动态代码快照文件包括适配虚拟机运行时所需的格式数据,格式数据是通过对动态代码功能对应的动态代码文件进行解析生成;
快照文件运行模块503,用于将动态代码快照文件加载到虚拟机中运行,以实现动态代码功能。
可选的,本公开实施例提供的应用程序运行控制装置500还包括:
动态代码文件接收模块,用于接收服务端首次下发的应用程序的动态代码文件,将应用程序的动态代码文件标记为待快照处理文件;
快照文件生成模块,用于在应用程序首次运行动态代码文件时,针对待快照处理文件进行快照化处理得到动态代码文件对应的动态代码快照文件,并将动态代码快照文件保存在快照存储模块中。
可选的,触发操作获取模块501包括:
触发操作获取单元,用于获取用户在应用界面上对动态代码功能控件的触控操作,作为对应用程序中动态代码功能的触发操作;或者
触发操作生成单元,用于根据应用界面的功能展示需求,生成对应用程序中动态代码功能的触发操作。
可选的,快照文件生成模块包括:
硬件类型标识获取单元,用于获取应用程序当前依赖的终端设备的硬件类型标识;
快照文件生成单元,用于在应用程序首次运行动态代码文件时,根据硬件类型标识确定虚拟机运行时所需的数据格式,并基于数据格式,对待快照处理文件进行快照化处理得到动态代码文件对应的动态代码快照文件。
可选的,动态代码文件接收模块包括:
文件获取请求发送单元,用于向服务端发送动态代码文件获取请求,动态代码文件获取请求中包括动态代码功能的标识;
第一文件接收单元,用于接收服务端基于动态代码功能的标识首次反馈的应用程序的动态代码文件;或者
动态代码文件接收模块包括:
第二文件接收单元,用于接收服务端根据应用程序的界面的功能展示需求,主动下发的应用程序的动态代码文件。
可选的,本公开实施例提供的应用程序运行控制装置500还包括:
快照获取请求发送单元,用于向服务端发送快照获取请求,快照获取请求中携带动态代码功能的标识和应用程序当前依赖的终端设备的硬件类型标识;
第二快照文件获取模块,用于接收服务端反馈的与硬件类型标识匹配且与动态代码功能对应的动态代码快照文件。
可选的,动态代码功能包括直播功能、信息推广或活动推广功能中的至少一个。
本公开实施例所提供的应用程序运行控制装置可执行本公开实施例所提供的任意应用程序运行控制方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
图6为本公开实施例提供的一种电子设备的结构示意图,用于对实现本公开实施例中应用程序运行控制方法的终端设备进行示例性说明。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和占用范围带来任何限制。
如图6所示,电子设备600包括一个或多个处理器601和存储器602。
处理器601可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。
存储器602可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行程序指令,以实现本公开实施例提供的任意应用程序运行控制方法,还可以实现其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
其中,上述应用程序运行控制方法可以包括:获取对应用程序中动态代码功能的触发操作;响应于触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件,动态代码快照文件包括适配虚拟机运行时所需的格式数据,格式数据是通过对动态代码功能对应的动态代码文件进行解析生成;将动态代码快照文件加载到虚拟机中运行,以实现动态代码功能。应当理解,电子设备600还可以执行本公开方法实施例提供的其他可选实施方案。
在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置603还可以包括例如键盘、鼠标等等。
该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该电子设备600中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意应用程序运行控制方法。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意应用程序运行控制方法。
其中,上述应用程序运行控制方法可以包括:获取对应用程序中动态代码功能的触发操作;响应于触发操作,从快照存储模块中获取与动态代码功能对应的动态代码快照文件,动态代码快照文件包括适配虚拟机运行时所需的格式数据,格式数据是通过对动态代码功能对应的动态代码文件进行解析生成;将动态代码快照文件加载到虚拟机中运行,以实现动态代码功能。应当理解,计算机程序指令在被处理器运行时,还可以使得处理器执行本公开方法实施例提供的其他可选实施方案。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种应用程序运行控制方法,其特征在于,包括:
获取对应用程序中动态代码功能的触发操作;
响应于所述触发操作,从快照存储模块中获取与所述动态代码功能对应的动态代码快照文件,所述动态代码快照文件包括适配虚拟机运行时所需的格式数据,所述格式数据是通过对所述动态代码功能对应的动态代码文件进行解析生成;
将所述动态代码快照文件加载到所述虚拟机中运行,以实现所述动态代码功能;
所述方法还包括:
向服务端发送快照获取请求,所述快照获取请求中携带所述动态代码功能的标识和所述应用程序当前依赖的终端设备的硬件类型标识;
接收所述服务端反馈的与所述硬件类型标识匹配且与所述动态代码功能对应的动态代码快照文件。
2.根据权利要求1所述的方法,其特征在于,所述获取对应用程序中动态代码功能的触发操作之前,还包括:
接收服务端首次下发的所述应用程序的动态代码文件,将所述应用程序的动态代码文件标记为待快照处理文件;
在所述应用程序首次运行所述动态代码文件时,针对所述待快照处理文件进行快照化处理得到所述动态代码文件对应的动态代码快照文件,并将所述动态代码快照文件保存在所述快照存储模块中。
3.根据权利要求1所述的方法,其特征在于,所述获取对应用程序中动态代码功能的触发操作,包括:
获取用户在应用界面上对动态代码功能控件的触控操作,作为所述对应用程序中动态代码功能的触发操作;或者
根据应用界面的功能展示需求,生成对所述应用程序中动态代码功能的触发操作。
4.根据权利要求2所述的方法,其特征在于,所述在所述应用程序首次运行所述动态代码文件时,针对所述待快照处理文件进行快照化处理得到所述动态代码文件对应的动态代码快照文件,包括:
获取所述应用程序当前依赖的终端设备的硬件类型标识;
在所述应用程序首次运行所述动态代码文件时,根据所述硬件类型标识确定所述虚拟机运行时所需的数据格式,并基于所述数据格式,对所述待快照处理文件进行快照化处理得到所述动态代码文件对应的动态代码快照文件。
5.根据权利要求2所述的方法,其特征在于,所述接收服务端首次下发的所述应用程序的动态代码文件,包括:
向所述服务端发送动态代码文件获取请求,所述动态代码文件获取请求中包括所述动态代码功能的标识,以及,接收所述服务端基于所述动态代码功能的标识首次反馈的所述应用程序的动态代码文件;或者,
接收所述服务端根据所述应用程序的界面的功能展示需求,主动下发的所述应用程序的动态代码文件。
6.根据权利要求1所述的方法,其特征在于,所述动态代码功能包括直播功能、信息推广或活动推广功能中的至少一个。
7.一种应用程序运行控制装置,其特征在于,包括:
触发操作获取模块,用于获取对应用程序中动态代码功能的触发操作;
第一快照文件获取模块,用于响应于所述触发操作,从快照存储模块中获取与所述动态代码功能对应的动态代码快照文件,所述动态代码快照文件包括适配虚拟机运行时所需的格式数据,所述格式数据是通过对所述动态代码功能对应的动态代码文件进行解析生成;
快照文件运行模块,用于将所述动态代码快照文件加载到所述虚拟机中运行,以实现所述动态代码功能;
所述装置还包括:
快照获取请求发送单元,用于向服务端发送快照获取请求,所述快照获取请求中携带动态代码功能的标识和所述应用程序当前依赖的终端设备的硬件类型标识;
第二快照文件获取模块,用于接收所述服务端反馈的与所述硬件类型标识匹配且与所述动态代码功能对应的动态代码快照文件。
8.一种终端设备,其特征在于,包括存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,所述处理器执行权利要求1-6中任一项所述的应用程序运行控制方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,所述处理器执行权利要求1-6中任一项所述的应用程序运行控制方法。
CN202110193688.XA 2021-02-20 2021-02-20 应用程序运行控制方法、装置、设备和介质 Active CN113010178B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110193688.XA CN113010178B (zh) 2021-02-20 2021-02-20 应用程序运行控制方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110193688.XA CN113010178B (zh) 2021-02-20 2021-02-20 应用程序运行控制方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN113010178A CN113010178A (zh) 2021-06-22
CN113010178B true CN113010178B (zh) 2024-05-14

Family

ID=76404501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110193688.XA Active CN113010178B (zh) 2021-02-20 2021-02-20 应用程序运行控制方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113010178B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485722A (zh) * 2021-06-30 2021-10-08 北京鲸鲮信息系统技术有限公司 应用商店的应用程序的上架方法、处理方法及计算机设备
CN113672238B (zh) * 2021-09-07 2024-03-12 广东九联开鸿科技发展有限公司 基于实时操作系统模块化管理的运行方法、装置及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105745626A (zh) * 2013-11-18 2016-07-06 微软技术许可有限责任公司 基于进程快照的诊断生产应用
CN107003882A (zh) * 2014-12-18 2017-08-01 英特尔公司 动态代码生成系统软件中的转换高速缓存闭包和持久快照
CN108345496A (zh) * 2017-01-23 2018-07-31 华为技术有限公司 一种运行应用程序的方法及装置
CN110543338A (zh) * 2019-09-09 2019-12-06 北京安云世纪科技有限公司 一种文件的动态加载方法及装置
CN110659057A (zh) * 2019-09-24 2020-01-07 腾讯科技(深圳)有限公司 应用程序热更新方法、装置、存储介质及计算机设备
CN110780915A (zh) * 2019-08-16 2020-02-11 腾讯科技(深圳)有限公司 一种数据处理方法、装置和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105745626A (zh) * 2013-11-18 2016-07-06 微软技术许可有限责任公司 基于进程快照的诊断生产应用
CN107003882A (zh) * 2014-12-18 2017-08-01 英特尔公司 动态代码生成系统软件中的转换高速缓存闭包和持久快照
CN108345496A (zh) * 2017-01-23 2018-07-31 华为技术有限公司 一种运行应用程序的方法及装置
CN110780915A (zh) * 2019-08-16 2020-02-11 腾讯科技(深圳)有限公司 一种数据处理方法、装置和存储介质
CN110543338A (zh) * 2019-09-09 2019-12-06 北京安云世纪科技有限公司 一种文件的动态加载方法及装置
CN110659057A (zh) * 2019-09-24 2020-01-07 腾讯科技(深圳)有限公司 应用程序热更新方法、装置、存储介质及计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Learning execution through neural code fusion;Shi Z,et al.;《arXiv》;第1-13页 *

Also Published As

Publication number Publication date
CN113010178A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN108847950B (zh) 电子装置、云系统软件自动部署方法及存储介质
WO2017050094A1 (zh) 加载应用程序的方法及装置
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
CN111740948B (zh) 数据包发布方法、动态更新方法、装置、设备及介质
CN113010178B (zh) 应用程序运行控制方法、装置、设备和介质
CN107291481B (zh) 一种组件更新方法、装置和系统
CN110688096B (zh) 包含插件的应用程序的构建方法、装置、介质及电子设备
CN112486552A (zh) 服务器热更新方法、装置、设备和存储介质
CN112769706B (zh) 组件化路由方法及系统
CN111913741A (zh) 对象拦截方法、装置、介质及电子设备
CN109218393B (zh) 一种推送的实现方法、装置、设备和计算机存储介质
CN111506904B (zh) 漏洞在线修复的方法和装置
CN113050984A (zh) 资源调取方法、装置、电子设备及存储介质
CN113138768A (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
CN112835568A (zh) 一种项目构建方法和装置
CN114461223A (zh) 一种代码生成方法、装置及终端设备
CN107423093B (zh) 控制方法及装置、计算机装置和计算机可读存储介质
CN107092472B (zh) 一种动态发布方法及设备
CN111488286A (zh) 一种Android模块独立开发的方法及装置
US8347070B1 (en) System and methods for sharing platform data with an ACPI module of a computer system
CN109669715A (zh) 应用程序动态更新方法、设备及存储介质
CN112988686A (zh) 插件处理方法、装置、设备和存储介质
CN112596751A (zh) 应用程序安装包的编译方法、终端、服务器及存储介质
CN114579167A (zh) 一种下载应用升级文件的方法、装置及存储介质
US8739187B2 (en) Legacy application integration within a bundle framework

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant