CN113885870B - 应用程序更新方法、电子设备、终端设备及系统 - Google Patents
应用程序更新方法、电子设备、终端设备及系统 Download PDFInfo
- Publication number
- CN113885870B CN113885870B CN202110997012.6A CN202110997012A CN113885870B CN 113885870 B CN113885870 B CN 113885870B CN 202110997012 A CN202110997012 A CN 202110997012A CN 113885870 B CN113885870 B CN 113885870B
- Authority
- CN
- China
- Prior art keywords
- target
- installation package
- application program
- version number
- compiling
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种应用程序更新方法、电子设备、终端设备及系统,应用于通信技术领域。该方法中的电子设备采用热点函数集、dex2oat编译环境和指令集编译环境,对目标应用程序的第一安装包内的dex文件进行编译优化生成编译优化文件,然后将编译优化文件和第一安装包打包生成第二安装包,使得终端设备可从电子设备的各个第二安装包中,获取到与其framework版本号和eabi标识均匹配的目标安装包。因此,目标终端设备在采用目标安装包安装目标应用程序时,由于目标安装包包括编译优化文件,则无需再进行编译优化,减小了目标应用程序安装所占用的资源,从而减轻前台应用在使用时出现卡顿的现象。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种应用程序更新方法、电子设备、终端设备及系统。
背景技术
随着移动互联网的发展和普及,终端设备已成为人们生活和工作中较为常见的工具,用户在使用终端设备的过程中,往往因为不同的需求,需要在终端设备中安装各种应用程序。
而随着应用程序的使用,应用厂商会不断对应用程序存在的漏洞进行修复、优化等操作,从而生成新版本的应用程序安装包,终端设备在下载新版本的应用程序安装包后,会安装新版本的应用程序,以替换旧版本的应用程序。
但是,若在用户使用前台应用的过程中进行新版本的应用程序的安装,安装应用程序会占用终端设备的中央处理器(central processing unit,CPU)资源、输入输出(input/output,IO)资源以及内存资源等,从而导致前台应用在使用时出现卡顿等问题。
发明内容
本申请实施例提供一种应用程序更新方法、电子设备、终端设备及系统,在进行新版本的应用程序的安装时,减小了应用程序安装所占用的CPU资源、IO资源以及内存资源等,从而减轻前台应用在使用时出现卡顿的现象。
第一方面,本申请实施例提出一种应用程序更新方法,应用于电子设备,该方法包括:电子设备获取目标应用程序的第一安装包、目标应用程序的热点函数集以及至少一种终端设备的配置信息,配置信息包括framework版本号对应的dex2oat编译环境和eabi标识对应的指令集编译环境;电子设备采用热点函数集、dex2oat编译环境和指令集编译环境,分别对第一安装包内与热点函数集内的热点函数所对应的dex文件进行编译优化,生成每种终端设备对应的编译优化文件,编译优化文件包括odex文件和art文件;电子设备根据第一安装包和每个编译优化文件,分别生成第二安装包,第二安装包和第一安装包的版本号均为第一版本号;电子设备接收目标终端设备发送的针对目标应用程序的下载请求,下载请求包括第一版本号和目标终端设备的目标配置参数,目标配置参数包括目标framework版本号和目标eabi标识;电子设备从具有第一版本号的各个第二安装包中,查找与目标framework版本号和目标eabi标识均匹配的目标安装包;电子设备向目标终端设备发送目标安装包。
其中,电子设备可以为服务器,该服务器具体指的是应用市场服务器,电子设备在采用热点函数集、dex2oat编译环境和指令集编译环境分别对dex文件进行编译优化,生成每种终端设备对应的编译优化文件时,每个编译优化文件分别对应一个framework版本号和eabi标识,则生成的每个第二安装包也分别对应一个framework版本号和eabi标识。这样,本申请通过将终端设备对安装包内的dex文件执行编译优化的操作,转移至电子设备执行,电子设备采用热点函数集、dex2oat编译环境和指令集编译环境,对目标应用程序的第一安装包内的dex文件进行编译优化,生成编译优化文件,然后将编译优化文件和第一安装包打包生成第二安装包,使得终端设备可以从电子设备内的各个第二安装包内,获取到与其framework版本号和eabi标识均匹配的目标安装包后,在采用目标安装包安装目标应用程序时,由于目标安装包内已包括编译优化过的编译优化文件,则终端设备无需调用dex2oat函数进行编译优化操作,减小了目标应用程序安装所占用的CPU资源和IO资源等,从而减轻前台应用在使用时出现卡顿的现象。
在一种可选的实施方式中,电子设备获取目标应用程序的第一安装包、目标应用程序的热点函数集以及至少一种终端设备的配置信息,包括:电子设备接收至少一种测试终端设备发送的多个编译相关信息、终端厂商设备发送的至少一种终端设备的dex2oat编译环境,以及安装包管理设备发送的目标应用程序的第一安装包,编译相关信息包括profile文件、framework版本号和eabi标识,profile文件包括应用程序标识;电子设备将framework版本号一致、且具有目标应用程序的应用程序标识的profile文件内的热点函数进行合并,得到目标应用程序的热点函数集;电子设备从部署的指令集编译环境中,查找与编译相关信息中的各种类型的eabi标识匹配的指令集编译环境。其中,与编译相关信息中的各种类型的eabi标识匹配的指令集编译环境,也就指的是与测试终端设备发送的各种类型的eabi标识匹配的指令集编译环境。这样,电子设备针对各个测试终端设备发送的eabi标识,从电子设备内部署的指令集编译环境中查找与其相匹配的指令集编译环境,以参与后续到后续进行编译优化的操作,从而减少电子设备的资源浪费。
在一种可选的实施方式中,编译相关信息还包括测试终端设备的测试终端厂商信息,热点函数集为测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件内的热点函数的集合;目标配置参数还包括目标终端设备的目标终端厂商信息,目标安装包为第二安装包中,与目标终端厂商信息、目标framework版本号和目标eabi标识均匹配的安装包。这样,可使得电子设备内的各个第二安装包适用于不同终端厂商生产的终端设备,提高电子设备的适用范围。
在一种可选的实施方式中,电子设备根据第一安装包和每个编译优化文件,分别生成第二安装包,包括:电子设备将第一安装包与每个编译优化文件分别进行合并,得到每种终端设备对应的第二安装包。这样,可简化电子设备在生成第二安装包时的执行过程。
在一种可选的实施方式中,电子设备根据第一安装包和每个编译优化文件,分别生成第二安装包,包括:电子设备将第一安装包内与编译优化文件对应的dex文件删除,得到第三安装包;电子设备将第三安装包与每个编译优化文件分别进行合并,得到每种终端设备对应的第二安装包。这样,减少了生成的第二安装包的大小,从而减少目标终端设备在下载该第二安装包时的下载时间。
在一种可选的实施方式中,在电子设备接收目标终端设备发送的针对目标应用程序的下载请求之前,还包括:电子设备接收目标终端设备发送的针对目标应用程序的版本检测请求,版本检测请求包括目标终端设备内已安装的目标应用程序的第二版本号;电子设备将第二版本号与第一版本号进行对比;当第一版本号高于第二版本号时,电子设备向目标终端设备发送第一版本号。这样,本申请可通过电子设备检测目标终端设备上安装的目标应用程序是否为最新版本,减少目标终端设备的操作。
在一种可选的实施方式中,在电子设备接收目标终端设备发送的针对目标应用程序的下载请求之前,还包括:电子设备接收目标终端设备发送的针对目标应用程序的版本查询请求;电子设备向目标终端设备发送根据版本查询请求查找到的第一版本号。这样,本申请可通过终端设备实现对其安装的目标应用程序是否为最新版本进行检测。
在一种可选的实施方式中,profile文件包括具有第一版本号的目标应用程序对应的热点函数,或者,profile文件包括具有第三版本号的目标应用程序对应的热点函数,第一版本号高于第三版本号。其中,第三版本号与目标终端设备已安装的目标应用程序的第二版本号可与相同,也可以不同。这样,可基于旧版本的profile文件进行编译优化操作,其对应的数据量较多,可综合大量的旧版本的profile文件生成热点函数集,提高生成的热点函数集的全面性;或者,也可以基于新版本的profile文件进行编译优化操作,则采集到的热点函数更加准确,使得生成编译优化文件更符合实际需求。
第二方面,本申请实施例提出一种应用程序更新方法,应用于目标终端设备,该方法包括:目标终端设备向电子设备发送针对目标应用程序的下载请求,下载请求包括目标应用程序的第一版本号和目标终端设备的目标配置参数,目标配置参数包括目标framework版本号和目标eabi标识;目标终端设备接收电子设备发送的目标安装包,目标安装包是具有第一版本号的各个第二安装包中,与目标framework版本号和目标eabi标识均匹配的安装包,目标安装包包括编译优化文件,编译优化文件包括odex文件和art文件;目标终端设备根据目标安装包安装具有第一版本号的目标应用程序。
在一种可选的实施方式中,目标配置参数还包括目标终端设备的目标终端厂商信息,目标安装包为第二安装包中,与目标终端厂商信息、目标framework版本号和目标eabi标识均匹配的安装包。
在一种可选的实施方式中,目标安装包还包括第一安装包,第一安装包包括编译优化文件对应的dex文件,以及未进行编译优化的dex文件;或者,目标安装包还包括第三安装包,第三安装包包括未进行编译优化的dex文件。
在一种可选的实施方式中,在目标终端设备向电子设备发送针对目标应用程序的下载请求之前,还包括:目标终端设备向电子设备发送针对目标应用程序的版本检测请求,版本检测请求包括目标终端设备内已安装的目标应用程序的第二版本号;当电子设备内的目标应用程序的第一版本号高于第二版本号时,目标终端设备接收电子设备发送的第一版本号。
在一种可选的实施方式中,在目标终端设备向电子设备发送针对目标应用程序的下载请求之前,还包括:目标终端设备向电子设备发送针对目标应用程序的版本查询请求;目标终端设备接收电子设备根据版本查询请求查找到的目标应用程序的第一版本号;目标终端设备将第一版本号与目标终端设备内已安装的目标应用程序的第二版本号进行对比;当第一版本号高于第二版本号时,目标终端设备生成下载请求。
第三方面,本申请实施例提出一种电子设备,该电子设备可以为服务器,其包括存储器和处理器,存储器用于存储计算机程序,处理器用于调用计算机程序,以执行上述的应用程序更新方法。
第四方面,本申请实施例提出一种终端设备,该终端设备为目标终端设备,其包括存储器和处理器,存储器用于存储计算机程序,处理器用于调用计算机程序,以执行上述的应用程序更新方法。
第五方面,本申请实施例提出一种应用程序更新系统,该应用程序更新系统包括上述的电子设备,以及上述的终端设备。
第六方面,本申请实施例提出一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被运行时,实现电子设备侧执行的应用程序更新方法,或者实现目标终端设备侧执行的应用程序更新方法。
应当理解的是,本申请的第二方面至第六方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为相关技术中的终端设备进行应用程序安装的流程示意图;
图2为本申请实施例提供的应用程序更新系统的架构图;
图3为本申请实施例提供的一种应用程序更新方法的交互图;
图4为本申请实施例提供的目标终端设备进行目标应用程序的更新过程的界面示意图;
图5为本申请实施例提供的另一种应用程序更新方法的交互图;
图6为本申请实施例提供的目标终端设备软件系统的结构示意图;
图7为本申请实施例提供的一种应用市场服务器的硬件结构示意图;
图8为本申请实施例提供的一种目标终端设备的硬件结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
目前,在终端设备中会安装各种应用程序,随着应用程序的使用,应用程序开发者会不断对应用程序存在的漏洞进行修复、优化等操作,使得应用程序的更新频率较高,基本上每月会有1次或2次的版本升级;并且,每个终端设备中安装的应用程序较多,例如,一些终端设备会安装30至100个数量不等的应用程序,导致终端设备需要对安装的多个应用程序进行升级的总频率较高。
如图1所示,应用开发者可在安装包管理设备上完成对新版本的目标应用程序的安装包的开发,在新版本的目标应用程序的安装包开发完成之后,安装包管理设备执行S101,将目标应用程序的安装包上传到应用市场服务器;若用户需要更新目标终端设备上安装的旧版本的目标应用程序时,目标终端设备内的通信模块可执行S102,从应用市场服务器下载到新版本的目标应用程序的安装包,通信模块可以为无线通信模块,如无线局域网(wirelesslocal area networks,WLAN)等。在Android操作系统的终端设备中,包管理服务(package manager service,PMS)负责管理系统中的所有安装包信息及应用程序的安装与卸载,因此,目标终端设备的通信模块在下载得到新版本的目标应用程序的安装包之后,通信模块执行S103,将新版本的目标应用程序的安装包传递给PMS,则目标终端设备内的PMS执行S104,对新版本的目标应用程序的安装包进行扫描,以提取安装包内的dex文件,dex文件指的是Android系统内的虚拟机的可执行文件;然后,PMS执行S105,调用performDexopt函数访问installd服务进程;installd服务进程执行S106,调用dex2oat函数;虚拟机内的CompilerDriver(编译驱动模块)执行S107,采用dex2oat函数对dex文件执行编译优化操作,生成编译优化文件,具体的,可以采用speed-profile方式,基于profile文件内的热点函数对安装包内的部分dex文件进行编译优化,生成的编译优化文件包括部分dex文件对应的odex文件和art文件,而profile文件可以是安装包内携带的,也可以是终端设备采集自身运行过程中的热点函数生成的。
因此,应用程序在运行时可以直接加载编译优化文件,从而避免在应用程序运行时才对dex文件进行即时(just-in-time,JIT)编译,提高终端设备对应用程序的执行效率,使得应用程序的运行更加流畅,优化用户体验。
因此,若用户在使用前台应用的过程中进行应用程序的安装,则终端设备会调用dex2oat函数对安装包内的dex文件进行编译优化生成编译优化文件,其会占用终端设备的CPU资源、IO资源以及内存资源等,从而导致前台应用在使用时出现卡顿等问题。例如,若用户在打游戏的过程中,在终端设备的后台安装应用程序时,如安装社交类应用程序或购物类应用程序等,其会导致游戏界面出现卡顿,甚至出现掉帧的现象。
为了改善终端设备因dex文件的编译优化操作导致前台应用卡顿的现象,通常会在用户不使用终端设备的过程中,对应用程序的安装包内的dex文件进行编译优化。但是,这种错峰执行编译优化的方式,往往存在以下两种情况:第一种情况,如果终端设备在安装完某一应用程序之后,直接使用该应用程序,由于该应用程序的安装包内的dex文件未进行编译优化,因此,在使用该应用程序的过程中,终端设备会对dex文件进行即时编译,导致该应用程序的使用出现卡顿;第二种情况,由于目前大部分终端设备都采用快充技术,导致用户不使用终端设备的时间越来越短,则能够错峰执行编译优化的时间也就越来越少,在这有限的时间内很难完成编译优化的操作。
基于此,本申请实施例提供了一种应用程序更新方法,通过将终端设备对安装包内的dex文件执行编译优化的操作,转移至电子设备执行,电子设备可以为应用市场服务器,则电子设备可采用热点函数集、dex2oat编译环境和指令集编译环境,对目标应用程序的第一安装包内的dex文件进行编译优化,生成编译优化文件,然后将编译优化文件和第一安装包打包生成第二安装包。因此,终端设备在从电子设备内的各个第二安装包内,获取到与其framework版本号和eabi标识均匹配的目标安装包后,在采用目标安装包安装目标应用程序时,由于目标安装包内已包括编译优化过的编译优化文件,则终端设备无需调用dex2oat函数进行编译优化操作,减小了目标应用程序安装所占用的CPU资源、IO资源以及内存资源等,从而减轻前台应用在使用时出现卡顿的现象。
并且,即使终端设备在安装完成目标应用程序后直接使用该目标应用程序,由于安装包内包含编译优化文件,则可以直接调用编译优化文件,减少终端设备对dex文件进行即时编译的操作,使得目标应用程序的运行更加流畅。
为了能够更好地理解本申请实施例,下面对本申请实施例的应用程序更新所依赖的应用程序更新系统的架构进行介绍。示例性的,图2为本申请实施例提供的一种应用程序更新系统的架构图。参照图2所示,该应用程序更新系统包括测试终端设备210、安装包管理设备220、终端厂商对应的终端厂商设备230、应用市场服务器240和目标终端设备250。
其中,测试终端设备210指的是目前安装有目标应用程序的终端设备,其可以是安装有旧版本的目标应用程序的用户终端,也可以是安装有新版本的目标应用程序的样本终端。目标应用程序指的是任意一个具有更新需求的第三方应用程序,例如,目标应用程序为游戏类应用程序、视频类应用程序、即时通信应用程序、社交类应用程序、购物类应用程序等,本申请实施例对目标应用程序的具体类型不做限定。
例如,针对某一应用程序X,目前用户终端上安装的应用程序X的版本号为A1.0,当应用开发者对版本A1.0的应用程序X进行漏洞修复和/或功能优化后,生成版本号为A2.0的应用程序X的安装包,在版本号为A2.0的应用程序X的安装包未正式公开发布之前,可在某些样本终端上安装版本A2.0的应用程序X来对应用程序X进行测试。此时,测试终端设备210可以指的是安装版本A1.0的应用程序X的用户终端,也可以指的是安装版本A2.0的应用程序X的样本终端。
而安装包管理设备220可以指的是应用开发者所持的应用开发终端,如手机、笔记本电脑、个人计算机(personal computer,PC)等,应用开发者可以在其所持的应用开发终端上进行应用程序的安装包的开发;或者,安装包管理设备220也可以指的第二服务器,第二服务器可以为应用管理服务器或web(网页)服务器等,应用开发者在其所持的应用开发终端上完成安装包的开发后,通过应用开发终端将安装包上传到应用管理服务器或web(网页)服务器。
终端厂商设备230可以指的是终端设备所属的生产厂商的厂商服务器,该厂商服务器为一台服务器或若干台服务器组成的服务器集群或云计算中心,厂商服务器也可称为第三服务器。当然,该终端厂商设备230也可以是终端设备所属的生产厂商所拥有的任意一台终端设备等。
应用市场服务器240指的是本申请实施例中需要进行编译优化操作的服务器,其具体可以终端设备上安装的应用市场程序对应的管理服务平台,应用市场服务器240也可称为第一服务器;目标终端设备250指的是需要安装新版本的目标应用程序的终端设备。
可以理解的是,本申请实施例中需要进行编译优化操作的电子设备,可以是应用市场服务器240,也可以是其他能够进行编译优化操作生成编译优化文件的电子设备,下面均以进行编译优化操作的电子设备为应用市场服务器为例进行说明。
图2中以测试终端设备210为手机为例进行说明,其对应的操作系统为Android系统,测试终端设备210可以包括测试终端设备U1、测试终端设备U2至测试终端设备Un,n为正整数。
在一个应用程序中,通常会包含一个或多个类,每个类中又包括一个或多个函数(又称方法),不同的函数一般对应不同的功能。在各个测试终端设备210内安装同一目标应用程序后,在目标应用程序运行的过程中,由于用户使用习惯的不同,不同功能被使用的频率也不同。以微信为例,聊天功能和朋友圈功能比较常用,对应的函数被执行(或调用)的频率较高,而收藏功能或卡包功能对于很多用户来说可能并不经常使用,那么对应的函数被执行的频率就会比较低。
每个测试终端设备210可采集预设周期内,用户在使用目标应用程序的过程中各函数分别被执行的频次,该频次可反应出对应的函数被使用的频繁程度,进而有利于测试终端设备210确定热点函数。测试终端设备210在确定出目标应用程序的热点函数之后,将热点函数记录到一个热点配置文件内,该热点配置文件也可称为profile文件。
一种可选的实施方式,假设目标应用程序的安装包中共有H个函数,按照各个函数被执行的频次从高到低进行排序,可选取靠前的i个函数作为热点函数,H和i均为正整数,且H大于或等于i。例如,目标应用程序的安装包内共有1万个函数,按照各个函数被执行的频次从高到低进行排序,可选取靠前的100个函数作为热点函数。
另一种可选的实施方式,在预设周期内,将被执行的频次大于设定次数的函数确定为热点函数。例如,将一天内被执行的频次大于1000次的函数确定为热点函数。
各个测试终端设备210可以每间隔第一预设周期将采集到的profile文件上传至应用市场服务器240。当然,也可以是应用市场服务器240每间隔第二预设周期,向各个测试终端设备210发送profile文件的获取请求,各个测试终端设备210根据应用市场服务器240发送的获取请求,将其采集的profile文件发送至应用市场服务器240。其中,第一预设周期和第二预设周期可人为或者根据经验值设定,本申请实施例对第一预设周期和第二预设周期的具体数值不作限制。
实际上,测试终端设备210将采集到的profile文件发送至应用市场服务器240的目的,主要是为了使得应用市场服务器240可以根据profile文件内的热点函数,对新版本的目标应用程序的安装包内的dex文件进行编译优化,生成编译优化文件。
需要说明的是,在一些实施例中,测试终端设备210指的是安装有旧版本的目标应用程序的用户终端,则此时的测试终端设备210采集的热点函数也是针对旧版本的目标应用程序,而新版本的目标应用程序与旧版本的目标应用程序相比,只是一部分函数发生变化,使得旧版本的目标应用程序对应的热点函数与新版本的目标应用程序的热点函数大部分甚至全部都是相同的,因此,可直接采用旧版本的目标应用程序对应的热点函数作为新版本的目标应用程序的热点函数。
在另一些实施例中,测试终端设备210指的是安装有新版本的目标应用程序的样本终端,则此时的测试终端设备210采集的热点函数针对的是新版本的目标应用程序,使得采集到的热点函数更加准确,相应的,后续根据样本终端采集到的热点函数对新版本的目标应用程序的安装包内的dex文件进行编译优化,所生成编译优化文件更符合实际需求。
当然,在某些场景中,应用市场服务器240可以先根据旧版本的profile文件对新版本的目标应用程序的第一安装包内的dex文件进行编译优化,后续各个终端设备从应用市场服务器240中下载的目标安装包内的编译优化文件,是根据旧版本的目标应用程序的profile文件生成;然后,安装有新版本的目标安装包(其包括的编译优化文件是根据旧版本的目标应用程序的profile文件生成的)的各个终端设备需要采集自身运行过程中的profile文件,并发送至应用市场服务器240,当应用市场服务器240在积累到一定的新版本对应的profile文件之后,根据新版本的profile文件再次执行编译优化操作生成新的编译优化文件,后续其它终端设备在从应用市场服务器240中下载的目标安装包时,其包括的是新版本的profile文件对应的编译优化文件。
因此,profile文件包括具有第一版本号的目标应用程序对应的热点函数,或者,profile文件包括具有第三版本号的目标应用程序对应的热点函数,第一版本号高于第三版本号。第一版本号指的是新版本的目标应用程序的版本号,如样本终端上安装的新版本的目标应用程序的版本号,第三版本号指的是旧版本的目标应用程序的版本号,如用户终端上安装的旧版本的目标应用程序的版本号。
可以理解的是,每个测试终端设备210可以针对其安装的各个应用程序,分别采集对应的热点函数生成profile文件,每个profile文件对应一个应用程序,不同的应用程序对应的profile文件是不同的。因此,测试终端设备210发送至应用市场服务器240的profile文件内,会携带其对应的应用程序标识,以及测试终端设备210上安装的该应用程序的版本号等信息。
如图2所示,各个测试终端设备210在发送profile文件时,还会将其各自的framework(框架)版本号、嵌入式应用二进制接口(embedded application binaryinterface,eabi)标识和测试终端厂商信息发送至应用市场服务器240。
其中,framework版本号是各终端厂商按照一定规则自定义的一个标识信息,其定义规则主要是依据各终端厂商针对不同类型(如型号不同等)的终端设备在执行dex2oat过程中的dex2oat编译环境确定的,dex2oat过程指的是对目标应用程序的安装包内的dex文件进行编译优化生成编译优化文件的过程。因此,可以将终端设备的framework版本号看作是dex2oat编译环境所对应的版本号。
在一些实施例中,同一终端厂商生产的不同类型的终端设备在执行dex2oat过程中的dex2oat编译环境可能有所不同,因此,当同一终端厂商生产的不同类型的终端设备的dex2oat编译环境不同时,其对应的framework版本号也就不同。通常,不同终端厂商生产的终端设备在执行dex2oat过程中的dex2oat编译环境是不同的,则不同终端厂商生产的终端设备对应的framework版本号也不同。
由于不同终端设备内设置的处理器不同,其对应的eabi标识不同,eabi标识表示终端设备内设置的高级精简指令集计算机(advanced risc machine,ARM)处理器所采用的架构的类别。例如,ARM处理器所采用的架构是支持32位指令集的armV7架构,还是支持64位指令集的armV8架构等。
对于支持32位指令集的ARM处理器,指令集中的每个指令都是一个32位的序列,不同的值代表不同的机器指令;而对于支持64位指令集的ARM处理器,指令集中的每个指令都是一个64位的序列,不同的值代表不同的机器指令。
测试终端厂商信息指的是测试终端设备所属的生产厂商的厂商名称。
如图2所示,针对终端厂商设备230,其可以收集终端厂商制作的各种类型的终端设备的framework版本号对应的dex2oat编译环境,将各个framework版本号对应的dex2oat编译环境发送至应用市场服务器240。不同类型的终端设备的framework版本号可能不同,同一种framework版本号对应同一种dex2oat编译环境,即framework版本号与dex2oat编译环境一一对应,因此,终端厂商设备230发送至应用市场服务器240的dex2oat编译环境内,会携带对应的framework版本号等信息。
其中,dex2oat编译环境指的终端设备内的虚拟机在对目标应用程序的安装包内的dex文件进行编译优化生成编译优化文件的过程中所依赖的软件编译环境,即终端设备运行时的软件运行环境。
而应用开发者可以在其所持的应用开发终端上进行新版本的目标应用程序的安装包的开发,应用开发者开发的新版本的目标应用程序的安装包称为第一安装包。
目前,Android应用程序大多采用java语言编写,在Android应用程序的编译阶段,通过编译命令javac将java文件编译成class文件,也就是字节码文件;然后,将class文件通过dx工具转换为dex文件;最后,通过Android资源打包工具对dex文件和资源文件等进行打包,生成安装包(android package,APK),安装包实际上是一个zip格式的文件。因此,可以看出,第一安装包内会包括dex文件,且第一安装包内的dex文件的数量可以是一个也可以是多个。
一些实施例中,应用开发者在开发完成新版本的目标应用程序的第一安装包之后,应用开发者可通过应用开发者所持的应用开发终端直接将第一安装包上传到应用市场服务器240,审核人员对上传到应用市场服务器240内的第一安装包进行审核,审核通过后,在应用市场服务器240上架该第一安装包。
另一些实施例中,应用开发者在开发完成新版本的目标应用程序的第一安装包之后,应用开发者可通过应用开发者所持的应用开发终端将第一安装包上传到应用管理服务器或web服务器内,应用市场服务器240通过爬虫程序从应用管理服务器或web服务器内抓取新版本的目标应用程序的第一安装包。
当然,在某些场景中,应用市场服务器240所对应的相关人员(如运营人员等)与应用开发者进行合作,应用市场服务器240所对应的相关人员将所需的新版本的目标应用程序的要求告知应用开发者,应用开发者根据要求进行新版本的目标应用程序的第一安装包的开发,开发完成后,应用市场服务器240所对应的相关人员的终端接收应用开发终端发送的第一安装包,应用市场服务器240所对应的相关人员通过其所持的终端将新版本的目标应用程序的第一安装包上传到应用市场服务器240内。
上述给出了应用市场服务器240获取第一安装包的三种不同的方式,可以理解的是,应用市场服务器240可采用任意一种方式获取新版本的目标应用程序的第一安装包,本申请实施例对此不作限制。当然,除了上述三种方式之外,应用市场服务器240也可以采用其他方式获取新版本的目标应用程序的第一安装包。
示例性的,图3为本申请实施例提供的一种应用程序更新方法的交互图,该应用程序更新方法包括如下步骤:
S301,安装包管理设备向应用市场服务器发送第一安装包。
S302,终端厂商设备向应用市场服务器发送dex2oat编译环境。
S303,各个测试终端设备向应用市场服务器发送profile文件、framework版本号、eabi标识和测试终端厂商信息。
在本申请实施例中,各个测试终端设备向应用市场服务器发送的profile文件,指的是目标应用程序的热点函数所对应的profile文件,安装包管理设备向应用市场服务器发送的第一安装包指的是新版本的目标应用程序的安装包,第一安装包的版本号为第一版本号。
因此,应用市场服务器会接收到三类数据,第一类数据包括至少一个测试终端设备发送的编译相关信息,该编译相关信息包括profile文件、framework版本号、eabi标识和测试终端厂商信息,第二类数据包括新版本的目标应用程序的第一安装包,该第一安装包可以是安装包管理设备主动发送的,也可以是从安装包管理设备中抓取的,第三类数据包括终端厂商设备发送的至少一种终端设备的dex2oat编译环境。
其中,在profile文件内携带其对应的应用程序标识,以及测试终端设备上安装的该应用程序的版本号等信息,终端厂商设备发送至应用市场服务器的dex2oat编译环境内会携带对应的framework版本号。
需要说明的是,S301、S302和S303之间不存在固定的先后顺序,这三者的执行顺序可以任意调换。例如,可以按照S301-S302-S303的顺序执行,也可以按照S301-S303-S302的顺序执行,还可以按照S302-S303-S301的顺序执行等。
S304,当应用市场服务器接收到的测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件的数量超出设定数量时,应用市场服务器将测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件内的热点函数进行合并,得到目标应用程序的热点函数集。
应用市场服务器在接收到安装包管理设备发送的第一安装包之后,在应用市场服务器内存储该第一安装包,应用市场服务器在接收到终端厂商设备发送的dex2oat编译环境之后,在应用市场服务器内存储该dex2oat编译环境。
应用市场服务器在接收到各个测试终端设备发送的profile文件、framework版本号、eabi标识和测试终端厂商信息之后,应用市场服务器对各个测试终端设备发送的profile文件、framework版本号、eabi标识和测试终端厂商信息进行存储,并对所有测试终端设备发送的profile文件进行分析,确定其对应的测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件的数量是否超出设定数量,当应用市场服务器接收到的测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件的数量超出设定数量时,触发S304进行热点函数集的生成过程。
例如,设定数量可以为3,当应用市场服务器接收到的测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件的数量为4个时,触发S304进行热点函数集的生成过程。
具体的,是将测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件内的热点函数进行合并,生成热点函数集。此时,热点函数集也就是针对同一应用程序,其测试终端厂商信息和framework版本号均一致的profile文件内的热点函数的集合。
在一些实施例中,各个测试终端设备发送的framework版本号会包括虚拟机版本号,通常,一个虚拟机版本号会对应多个不同的framework版本号,相应的,当测试终端设备发送的framework版本号一致时,其对应的虚拟机版本号也就是一致的。因此,应用市场服务器在将framework版本号均一致的profile文件内的热点函数进行合并成热点函数集后,热点函数集内的热点函数对应的虚拟机版本号也是一致的。
可选的,热点函数集可以是测试终端厂商信息、应用程序标识和framework版本号均一致的所有profile文件内的所有热点函数的集合,即测试终端厂商信息、应用程序标识和framework版本号均一致的所有profile文件内的所有热点函数的并集;热点函数集也可以指的是测试终端厂商信息、应用程序标识和framework版本号均一致的所有profile文件内均共有的热点函数的集合,即测试终端厂商信息、应用程序标识和framework版本号均一致的所有profile文件内的所有热点函数的交集。
此时,每个热点函数集均对应一个测试终端厂商信息、一个framework版本号和一个应用程序标识。
例如,设定数量为1,针对同一目标应用程序X,终端厂商A和framework版本号V1对应的测试终端设备发送的profile文件包括profile文件1和profile文件2,profile文件1包括热点函数F1、热点函数F2和热点函数F3,而profile文件2包括热点函数F2、热点函数F3和热点函数F4。因此,热点函数集可以包括热点函数F1、热点函数F2、热点函数F3和热点函数F4,此时的热点函数集为测试终端厂商信息、应用程序标识和framework版本号均一致的所有profile文件内的所有热点函数的集合;或者,热点函数集可以包括热点函数F2和热点函数F3,此时的热点函数集为测试终端厂商信息、应用程序标识和framework版本号均一致的所有profile文件内均共有的热点函数的集合。
需要说明的是,profile文件内还会携带测试终端设备上安装的该应用程序的版本号,因此,在合并profile文件内的热点函数时,可以是对所有版本号对应的测试终端厂商信息、应用程序标识和framework版本号均一致的profile文件内的热点函数进行合并,也可以从应用程序标识相同的profile文件内挑选版本号最高的profile文件,对挑选后的profile文件对应的测试终端厂商信息和framework版本号一致的profile文件的数量是否超出设定数量,来触发热点函数的合并过程。
S305,应用市场服务器从部署的指令集编译环境中,查找与测试终端设备发送的各种类型的eabi标识匹配的指令集编译环境。
目前,ARM指令集目前已被行业标准化,同一架构下的ARM指令集对应的指令集编译环境是相同的。例如,对于支持32位指令集的ARM处理器,其对应的指令集编译环境一般都是相同的,对于支持64位指令集的ARM处理器,其对应的指令集编译环境一般也都是相同的。
其中,指令集编译环境指的终端设备内的虚拟机在对目标应用程序的安装包内的dex文件进行编译优化生成编译优化文件的过程中所依赖的硬件编译环境。
因此,预先在应用市场服务器内部署有各种eabi标识对应的指令集编译环境,即各种架构对应的指令集编译环境,如armV7架构的指令集编译环境、armV8架构的指令集编译环境等,每种eabi标识对应一种指令集编译环境。应用市场服务器在接收到各个测试终端设备发送的eabi标识之后,统计接收到的eabi标识,将eabi标识一致的划分为一类,根据最终统计得到的eabi标识的种类,从部署的各种架构对应的指令集编译环境中,确定出与各个测试终端设备发送的eabi标识匹配的指令集编译环境,即确定出后续需要参与编译优化操作的指令集编译环境。
通过根据各个测试终端设备发送的eabi标识,从应用市场服务器内部署的指令集编译环境中查找与其相匹配的指令集编译环境,以参与后续到后续进行编译优化的操作,即按照终端设备的实际需求进行编译优化,防止因部署的所有指令集编译环境都参与编译优化,而导致生成的部分编译优化文件实际上不是终端设备所需要的,从而减少应用市场服务器的资源浪费。
例如,部署的所有指令集编译环境包括指令集编译环境T1、指令集编译环境T2和指令集编译环境T3,测试终端设备发送的eabi标识对应的指令集编译环境为指令集编译环境T1和指令集编译环境T2,目前大部分终端设备上已经不采用指令集编译环境T3,若应用市场服务器将指令集编译环境T1、指令集编译环境T2和指令集编译环境T3分别参与到编译优化操作中,导致指令集编译环境T3对应的编译优化文件通常是用不到的,将指令集编译环境T3对应的编译优化文件与第一安装包打包后的安装包,通常很少有终端设备进行下载,从而会导致应用市场服务器的资源浪费;而指令集编译环境T1、指令集编译环境T2对应的编译优化文件分别与第一安装包打包后的安装包,往往是终端设备下载时需要的。
当然,可以理解的是,也可以将部署的所有指令集编译环境都参与到后续的编译优化操作中,则各个测试终端设备在发送profile文件时,无需再发送测试终端设备的eabi标识。
S306,应用市场服务器提取第一安装包内的dex文件。
在本申请实施例中,应用市场服务器在接收到安装包管理设备发送的第一安装包之后,对第一安装包进行解压,从解压文件中提取dex文件。dex文件是Android系统的虚拟机能够识别的一种可执行文件,其包含了应用程序的所有源码。
可以理解的是,S304、S305和S306之间不存在固定的先后顺序,这三者的执行顺序可以任意调换。例如,只要应用市场服务器接收到安装包管理设备发送的第一安装包之后,即步骤S301之后,就可执行S306,从第一安装包内提取dex文件。
S307,应用市场服务器采用热点函数集、dex2oat编译环境和指令集编译环境,分别对热点函数集内的热点函数对应的dex文件进行编译优化,生成每种终端设备对应的编译优化文件。
由于相关技术中,不同设备类型的终端设备在对安装包内的dex文件进行编译优化生成的编译优化文件,会根据终端设备的dex2oat编译环境和终端设备内的指令集编译环境的不同而有所不同,在一种设备类型的终端设备上编译优化生成的编译优化文件,拷贝到另一种设备类型的终端设备上不一定能够正常运行,同设备类型的终端设备上编译优化生成的编译优化文件,通常可以在同设备类型的终端设备上正常运行。该设备类型可以指的是设备型号等。
因此,本申请实施例在将终端设备侧的编译优化操作转移至应用市场服务器时,应用市场服务器在进行编译优化操作时,dex2oat编译环境以及与eabi标识(各测试终端设备发送的)匹配的指令集编译环境均需要参与到编译优化操作中,因此,应用市场服务器是采用热点函数集、dex2oat编译环境和与eabi标识匹配的指令集编译环境,并调用dex2oat函数分别对热点函数集内的热点函数对应的dex文件进行编译优化,生成每种终端设备对应的编译优化文件。
可以理解的是,参与编译优化操作的dex2oat编译环境,可以是与各个测试终端设备发送的framework版本号匹配的dex2oat编译环境。
其中,dex2oat是一种编译生成优化文件的函数,可以将应用程序对应的dex文件编译为编译优化文件,实现对应用程序的优化。编译优化文件包括odex文件和art文件,odex文件指的是从dex文件或vdex文件中提取部分模块并进行优化生成的一个新的可执行二进制码文件;art文件可以看作是一个内存镜像,其用来缓存常用的ArtField、ArtMethod、DexCache等内容,加载后可直接使用,避免解析耗时,ArtField在虚拟机底层中用来表示类的成员变量,ArtMethod在虚拟机底层中用来表示类的成员方法,DexCache与dex文件有关,用来缓存dex文件的信息。
例如,终端厂商A发送的dex2oat编译环境包括:framework版本号V1对应的dex2oat编译环境、framework版本号V2对应的dex2oat编译环境和framework版本号V3对应的dex2oat编译环境,与各个测试终端设备发送的eabi标识匹配的指令集编译环境包括指令集编译环境T1和指令集编译环境T2,framework版本号V1对应的热点函数集为热点函数集J1,framework版本号V2对应的热点函数集为热点函数集J2,framework版本号V3对应的热点函数集为热点函数集J3。
因此,应用市场服务器分别根据热点函数集J1、framework版本号V1对应的dex2oat编译环境以及指令集编译环境T1对dex文件进行编译优化,生成编译优化文件1;根据热点函数集J1、framework版本号V1对应的dex2oat编译环境以及指令集编译环境T2对dex文件进行编译优化,生成编译优化文件2;根据热点函数集J2、framework版本号V2对应的dex2oat编译环境以及指令集编译环境T1对dex文件进行编译优化,生成编译优化文件3;根据热点函数集J2、framework版本号V2对应的dex2oat编译环境以及指令集编译环境T2对dex文件进行编译优化,生成编译优化文件4;根据热点函数集J3、framework版本号V3对应的dex2oat编译环境以及指令集编译环境T1对dex文件进行编译优化,生成编译优化文件5;根据热点函数集J3、framework版本号V3对应的dex2oat编译环境以及指令集编译环境T2对dex文件进行编译优化,生成编译优化文件6。
需要说明的是,针对同一终端厂商生产的终端设备,其dex2oat编译环境和/或指令集编译环境可能有所不同,使得生成的编译优化文件也不同,编译优化文件受到dex2oat编译环境和指令集编译环境的共同影响;而针对不同终端厂商生产的终端设备,dex2oat编译环境和/或指令集编译环境通常是不同的,其生成的编译优化文件不共用。因此,针对每个终端厂商,都需要按照上述方式分别进行编译优化,生成每个终端厂商生产的各种类型的终端设备所适用的编译优化文件。
本申请实施例在根据热点函数集、dex2oat编译环境和指令集编译环境分别对dex文件进行编译优化,生成每种终端设备对应的编译优化文件时,基于dex2oat编译环境可模拟或还原终端设备在对dex文件进行编译优化生成编译优化文件过程中的软件编译环境,基于指令集编译环境可模拟或还原终端设备在对dex文件进行编译优化生成编译优化文件过程中所处的硬件编译环境。从软件和硬件两方面,共同模拟出终端设备在对dex文件进行编译优化生成编译优化文件过程中所依赖的环境。
因此,本申请实施例针对每个终端厂商对应的每一种dex2oat编译环境和每一种指令集编译环境,对第一安装包内的dex文件进行编译优化生成对应的编译优化文件,后续目标终端设备在根据其对应的目标终端厂商信息、framwork版本号和eabi标识,从应用市场服务器内下载到对应的目标安装包之后,由于在目标安装包内的编译优化文件的生成过程中,应用市场服务器模拟了目标终端设备的硬件编译环境和软件编译环境,使得目标安装包内的编译优化文件可以在该目标终端上保持正常运行。
应理解的是,应用市场服务器在对dex文件进行编译优化生成编译优化文件的过程中,可以先对dex文件进行合法性校验,生成vdex文件,然后调用dex2oat函数对vdex文件进行编译优化生成编译优化文件。vdex文件是Android 8.0新增机制产生的文件,其目的主要是为了跳过verified(验证)流程,减少dex2oat执行时间,
S308,应用市场服务器将第一安装包内未进行编译优化的dex文件和每个编译优化文件进行合并,分别生成第二安装包。
在本申请实施例中,应用市场服务器在编译优化生成各种设备类型的终端设备对应的编译优化文件,将目标应用程序的第一安装包内未进行编译优化的dex文件与每个编译优化文件分别进行打包,生成第二安装包,生成的第二安装包与第一安装包的版本号是相同的,均为第一版本号。
例如,针对终端厂商A,其对应的编译优化文件包括编译优化文件1、编译优化文件2、编译优化文件3、编译优化文件4、编译优化文件5和编译优化文件6,则将第一安装包内未进行编译优化的dex文件与编译优化文件1打包生成第二安装包APK1,将第一安装包内未进行编译优化的dex文件与编译优化文件2打包生成第二安装包APK2,将第一安装包内未进行编译优化的dex文件与编译优化文件3打包生成第二安装包APK3,将第一安装包内未进行编译优化的dex文件与编译优化文件4打包生成第二安装包APK4,将第一安装包内未进行编译优化的dex文件与编译优化文件5打包生成第二安装包APK5,将第一安装包内未进行编译优化的dex文件与编译优化文件6打包生成第二安装包APK6。
具体的,应用市场服务器先将第一安装包内与编译优化文件对应的dex文件删除,得到第三安装包,应用市场服务器将第三安装包与每个编译优化文件分别进行合并,得到每种终端设备对应的第二安装包。
此时,第二安装包包括第三安装包和编译优化文件,第二安装包与第一安装包相比,删除了已经编译优化得到的编译优化文件对应的dex文件,即第三安装包包括未进行编译优化的dex文件。这种方式,可减少第二安装包的大小,从而减少目标终端设备在从第二安装包中下载到对应的目标安装包时的下载时间和所需的流量开销,以及在目标终端设备下载完目标安装包后,可减小目标安装包所占用的目标终端设备的存储空间。
当然,应用市场服务器也可以将第一安装包与每个编译优化文件分别进行合并,得到每种终端设备对应的第二安装包。
此时,第二安装包包括第一安装包和编译优化文件,第一安装包也就是从安装包管理设备中获取的安装包,其包括编译优化文件对应的dex文件,以及未进行编译优化的dex文件。这种方式生成的第二安装包与第一安装包相比,只是增加了编译优化文件,其安装包本身的dex文件保持不变。
S309,应用市场服务器接收目标终端设备发送的针对目标应用程序的版本检测请求;版本检测请求包括目标终端设备内已安装的目标应用程序的第二版本号。
目标终端设备可以指的是图2中的目标终端设备Ux,在目标终端设备安装有各种应用程序,则在目标终端设备的桌面显示有各种应用程序图标。如图4中的a界面所示,在目标终端设备的桌面显示有音乐类等应用程序的图标。
用户可手动检测目标应用程序的版本是否更新。一种方式是用户对目标应用程序的图标进行触控操作,目标终端设备响应于对目标应用程序的图标的触控操作,向应用市场服务器发送目标应用程序的版本检测请求。另一种方式是用户对目标应用程序的界面内的版本检测控件进行触控操作,目标终端设备响应于对版本检测控件的触控操作,向应用市场服务器发送目标应用程序的版本检测请求。
其中,该版本检测请求包括目标终端设备内已安装的目标应用程序的第二版本号。实际上,在发送版本检测请求时,该版本检测请求还会携带目标应用程序的应用程序标识,如程序名称等信息,以告知应用市场服务器需要对哪个应用程序的版本进行检测,确定应用市场服务器内是否存储有新版本的第二安装包。
S310,应用市场服务器将第二版本号与第一版本号进行对比。
在本申请实施例中,应用市场服务器在接收到目标终端设备发送的版本检测请求后,针对该应用程序标识对应的目标应用程序,将版本检测请求中携带的第二版本号与第二安装包的第一版本号进行对比,确定目标终端设备内已安装的目标应用程序的版本是否为最新版本。
S311,当第一版本号高于第二版本号时,应用市场服务器向目标终端设备发送第一版本号。
在本申请实施例中,当第一版本号高于第二版本号时,确定目标终端设备内已安装的目标应用程序的版本不是最新版本,则应用市场服务器向目标终端设备发送目标应用程序的第一版本号。
例如,针对目标应用程序X,当目标终端设备发送的第二版本号为A1.0时,应用市场服务器内的第一版本号为A2.0,第一版本号A2.0高于第二版本号A1.0,则应用市场服务器向目标终端设备发送第一版本号A2.0。
若目标应用程序的最新版本号与当前版本号相同,则确定目标终端设备内已安装的目标应用程序的版本是最新版本,则应用市场服务器向目标终端设备发送通知消息,该通知消息表示目标终端设备内已安装的目标应用程序的版本已经是最新版本。
而一般情况下,不会出现第一版本号低于第二版本号的情况,并且,这种情况下也不需要对目标终端设备上安装的目标应用程序进行更新。
S312,应用市场服务器接收目标终端设备发送的针对目标应用程序的下载请求。
在本申请实施例中,目标终端设备在接收到应用市场服务器发送的针对目标应用程序的第一版本号之后,确定已存在新版本的目标应用程序,则目标终端设备会从图4中的a界面跳转到b界面。
在图4中的b界面显示有第一提示框41,该第一提示框41包括第一提示信息,第一提示信息用于提示用户已检测到该目标应用程序有新版本,提醒用户是否需要进行更新。此外,在第一提示框41还包括第一控件411和第二控件412,第一控件411为确定控件,第二控件412为取消控件。
若用户需要更新目标应用程序时,可点击图4中的b界面中的确认控件411,目标终端设备则响应于用户对确认控件411的触控操作,目标终端设备响应于对确认控件411的触控操作,向应用市场服务器发送针对目标应用程序的下载请求。
其中,下载请求包括第一版本号和目标终端设备的目标配置参数,目标配置参数包括目标终端设备的目标终端厂商信息、目标framework版本号和目标eabi标识。目标终端厂商信息指的是目标终端设备所属的生产厂商的厂商名称,目标framework版本号指的是目标终端设备的framework版本号,目标eabi标识指的是目标终端设备的eabi标识。此外,下载请求中还携带有目标应用程序的应用程序标识,如应用程序名称。
在一些实施例中,若目标终端设备未安装应用市场服务器对应的应用市场程序,则目标终端设备需要根据目标应用服务器返回的下载地址,在浏览器应用程序的界面的地址栏中输入该下载地址后,基于浏览器应用程序访问该下载地址,从而实现向应用市场服务器发送下载请求,该下载地址可以是应用市场服务器向目标终端设备返回第一版本号时一起发送的。该下载地址包括第二安装包在应用市场服务器内的存储位置信息,该存储位置信息用于指示目标应用程序的各个第二安装包的存储位置。
在另一些实施例中,若目标终端设备安装有应用市场服务器对应的应用市场程序,则根据目标应用程序的名称跳转到应用市场程序的下载页面,基于应用市场程序向应用市场服务器发送下载请求。
若用户暂时不需要更新目标应用程序时,可点击图4中的b界面中的取消控件412,目标终端设备则响应于用户对取消控件412的触控操作,取消本次更新操作,显示出目标应用程序的任一界面,此时目标终端设备显示的界面可以是目标应用程序的主界面、登录界面、包含版本检测控件的界面等。
S313,应用市场服务器从具有第一版本号的各个第二安装包中,查找与目标终端厂商信息、目标framework版本号和目标eabi标识均匹配的目标安装包。
在本申请实施例中,应用市场服务器在接收到目标终端设备发送的下载请求之后,根据下载请求中的目标终端厂商信息、目标framework版本号和目标eabi标识,从应用市场服务器内已生成的各个第二安装包中,查找相匹配的目标安装包。
其中,目标安装包是具有第一版本号的各个第二安装包中,与目标终端厂商信息、目标framework版本号和目标eabi标识均匹配的安装包。该目标安装包包括编译优化文件和第一安装包,或者,该目标安装包包括编译优化文件和第三安装包。
例如,下载请求中的目标终端厂商信息为终端厂商A,下载请求中的目标framework版本号为framework版本号V1,下载请求中的目标eabi标识对应的指令集编译环境为指令集编译环境T1,则应用市场服务器根据下载请求中的上述信息,从第二安装包APK1、APK2、APK3、APK4、APK5和APK6中查找到相匹配的安装包为APK1,则目标安装包为安装包APK1。
S314,应用市场服务器向目标终端设备发送目标安装包。
在本申请实施例中,应用市场服务器在查找到目标安装包之后,向目标终端设备发送该目标安装包。
S315,目标终端设备根据目标安装包安装具有第一版本号的目标应用程序。
在本申请实施例中,目标终端设备在接收到应用市场服务器发送的目标安装包之后,根据目标安装包安装具有第一版本号的目标应用程序,以替换具有第二版本号的目标应用程序,实现目标应用程序的升级。
由于目标安装包内包括编译优化文件,因此,目标终端设备在安装具有第一版本号的目标应用程序时,无需再调用dex2oat函数进行编译优化操作,大大减小了目标应用程序安装所占用的CPU资源、IO资源以及内存资源等,从而减轻前台应用在使用时出现卡顿的现象。
并且,目标终端设备在提取到目标安装包内的编译优化文件之后,将编译优化文件存储在内核的文件系统中,并记录编译优化文件的存储路径,以便后续在使用该目标应用程序的过程中,直接根据编译优化文件的存储路径调用编译优化文件,提高终端设备对目标应用程序的执行效率,使得目标应用程序的运行更加流畅,优化用户体验。
示例性的,图5为本申请实施例提供的另一种应用程序更新方法的交互图,该应用程序更新方法包括如下步骤:
S501,安装包管理设备向应用市场服务器发送第一安装包。
S502,终端厂商设备向应用市场服务器发送dex2oat编译环境。
S503,各个测试终端设备向应用市场服务器发送profile文件、framework版本号和eabi标识。
此时,图5所示的应用程序更新方法可适用于同一终端厂商对应的应用市场服务器,即每个终端厂商各自对应一个应用市场服务器,不同终端厂商的应用市场服务器不共用,因此,各个测试终端设备的终端厂商也是同一个,其在向应用市场服务器发送profile文件,可以不用发送测试终端厂商信息。
其中,在profile文件内携带其对应的应用程序标识,以及测试终端设备上安装的该应用程序的版本号等信息,终端厂商设备发送至应用市场服务器的dex2oat编译环境内会携带对应的framework版本号。
S504,当应用市场服务器接收到的应用程序标识和framework版本号均一致的profile文件的数量超出设定数量时,应用市场服务器将应用程序标识和framework版本号一致的profile文件内的热点函数进行合并,得到目标应用程序的热点函数集。
当应用市场服务器仅适用于同一终端厂商生产的终端设备时,在对profile文件内的热点函数进行合并时可以不考虑测试终端厂商信息,而是将应用程序标识和framework版本号一致的profile文件内的热点函数进行合并,得到目标应用程序的热点函数集。
其合并的具体方式可参照上述S304中描述的方式,为避免重复,在此不再赘述。
S505,应用市场服务器从部署的指令集编译环境中,查找与测试终端设备发送的各种类型的eabi标识匹配的指令集编译环境。
S506,应用市场服务器提取第一安装包内的dex文件。
S507,应用市场服务器采用热点函数集、dex2oat编译环境和指令集编译环境,分别对热点函数集内的热点函数对应的dex文件进行编译优化,生成每种终端设备对应的编译优化文件。
S508,应用市场服务器将第一安装包内未进行编译优化的dex文件和每个编译优化文件进行合并,分别生成第二安装包。
S501至S508的具体执行过程与上述S301至S308的执行过程类似,为避免重复,在此不再赘述。
S509,应用市场服务器接收目标终端设备发送的针对目标应用程序的版本查询请求。
在本申请实施例中,当用户对目标应用程序的图标或目标应用程序的界面内的版本检测控件进行触控操作时,目标终端设备响应于该触控操作,向应用市场服务器发送针对目标应用程序的版本查询请求。
其中,该版本查询请求用于指示应用市场服务器查询目标应用程序的最新版本,该版本查询请求还会携带目标应用程序的应用程序标识,如程序名称等信息。
S510,应用市场服务器向目标终端设备发送根据版本查询请求查找到的第一版本号。
在本申请实施例中,应用市场服务器在接收到目标终端设备发送的针对目标应用程序的版本查询请求之后,从应用市场服务器内已有的目标应用程序的第二安装包中查找其最新版本,该最新版本的版本号为第一版本号,然后,应用市场服务器向目标终端设备发送该第一版本号。该第一版本号用于指示应用市场服务器内的目标应用程序的最新版本,且用于指示目标终端设备根据该第一版本号与其安装的目标应用程序的第二版本号进行对比。
S511,目标终端设备将第一版本号与目标终端设备内已安装的目标应用程序的第二版本号进行对比。
在本申请实施例中,目标终端设备在接收到应用市场服务器根据版本查询请求查找到的目标应用程序的第一版本号之后,目标终端设备将第一版本号与目标终端设备内已安装的目标应用程序的第二版本号进行对比,确定目标终端设备内已安装的目标应用程序的版本是否为最新版本。
S512,当第一版本号高于第二版本号时,目标终端设备生成下载请求。
在本申请实施例中,当第一版本号高于第二版本号时,确定目标终端设备内已安装的目标应用程序的版本不是最新版本,则目标终端设备生成下载请求,该下载请求包括第一版本号和目标终端设备的目标配置参数,目标配置参数包括目标framework版本号和目标eabi标识,此外,该下载请求中还会包括目标应用程序的应用程序标识。
S513,应用市场服务器接收目标终端设备发送的针对目标应用程序的下载请求。
S514,应用市场服务器从具有第一版本号的各个第二安装包中,查找与目标framework版本号和目标eabi标识均匹配的目标安装包。
在本申请实施例中,应用市场服务器在接收到目标终端设备发送的下载请求之后,根据下载请求中的目标framework版本号和目标eabi标识,从应用市场服务器内已生成的各个第二安装包中,查找相匹配的目标安装包。
其中,目标安装包是具有第一版本号的各个第二安装包中,与目标framework版本号和目标eabi标识均匹配的安装包。
S515,应用市场服务器向目标终端设备发送目标安装包。
S516,目标终端设备根据目标安装包安装具有第一版本号的目标应用程序。
S513、S515和S516的具体执行过程与上述S312、S314和S315的执行过程类似,为避免重复,在此不再赘述。
图3所示的方法是应用市场服务器对目标应用程序的版本是否需要更新进行判断的,图5所示的方法是目标终端设备对目标应用程序的版本是否需要更新进行判断的。并且,图3所示的方法中的应用市场服务器可以适用于多种不同终端厂商生产的终端设备,而图5所示的方法中的应用市场服务器适用于同一终端厂商生产的终端设备。
当然,可以理解的是,图3和图5所示的两种方法可以进行相互结合和替换,例如,应用市场服务器可以适用于多种不同终端厂商生产的终端设备,且是目标终端设备对目标应用程序的版本是否需要更新进行判断。
在一些实施例中,可以按照上述的手动检测方式进行目标应用程序的版本更新检测,当然,也可以自动检测检测目标应用程序的版本是否能够更新。
示例性的,目标终端设备定时向应用市场服务器发送目标应用程序的版本检测请求或版本查询请求。例如,目标终端设备每间隔1天向应用市场服务器发送目标应用程序的版本检测请求。
另外,上述给出的版本检测请求或版本查询请求均是基于对目标应用程序进行触发的,可选的,在目标终端设备上可安装有应用市场服务器对应的应用市场程序,用户可对应用市场程序的图标进行触发操作,则目标终端设备向应用市场服务器发送当前已安装的各个应用程序的版本检测请求或版本查询请求,其当然也就包括了目标应用程序的版本检测请求或版本查询请求。
应用市场程序是一个安装在终端设备上的应用程序,其可以是终端设备在出厂时自带的,也可以是用户下载并安装在终端设备中的,用户可以通过应用市场程序查看终端设备中安装的各个应用程序的可更新情况及版本号等。例如,该应用市场程序可以为手机管家等软件。
应理解的是,本申请实施例的场景不局限于对目标终端设备已安装的目标应用程序进行升级,其还可以是在目标终端设备未安装目标应用程序的情况下直接安装具有第一版本号的目标应用程序。
图6为本申请实施例提供的目标终端设备软件系统的结构示意图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用层可以包括一系列应用程序包。
如图6所示,应用程序包可以包括电话、邮箱、日历、相机等应用程序。
应用程序框架层为应用层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图6所示,应用程序框架层可以包括输入系统、活动管理器、位置管理器、包管理器、通知管理器等。
输入系统用于管理输入设备的程序。例如,输入系统可以确定鼠标点击操作、键盘输入操作和触摸滑动等输入操作。
活动管理器用于管理各个应用程序的生命周期以及导航回退功能。负责Android的主线程创建,各个应用程序的生命周期的维护。
位置管理器用于为应用程序提供位置服务,包括查询上一个已知位置、注册和注销来自某个周期性的位置更新等。
包管理器用于系统内的程序管理,例如:应用程序安装、卸载和升级等。在本申请实施例中,目标终端设备在从应用市场服务器内下载到目标应用程序的目标安装包之后,包管理器根据目标安装包实现具有第一版本号的目标应用程序的安装。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。在相关技术中,包管理器在对具有第一版本号的目标应用程序进行安装时,需要虚拟机对安装包内的dex文件进行编译优化生成编译优化文件,而本申请实施例的目标安装包内包含编译优化文件,则包管理器在对具有第一版本号的目标应用程序进行安装时,虚拟机可不参与编译优化操作。
系统库可以包括多个功能模块。例如:函数库和输入处理库等。
函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等
输入处理库用于处理输入设备的库,可以实现鼠标、键盘和触摸输入处理等。
内核层是硬件和软件之间的层。内核层至少包含触控面板驱动、LCD/LED屏幕驱动、显示驱动、蓝牙驱动、WIFI驱动、键盘驱动、共用存储器驱动和相机驱动等。
硬件可以是音频设备、蓝牙设备、相机设备、传感器设备等。
需要说明的是,本申请实施例中虽然以Android操作系统为例进行说明,但是其基本原理同样适用于基于IOS,Windows或harmony等操作系统的终端设备;并且,该终端设备指的是目标终端设备或测试终端设备,其可以是手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、手持计算机、上网本、个人数字助理(personal digital assistant,PDA)、可穿戴电子设备和智能手表等设备。
上述实施例中,对本申请实施例提供的应用程序更新方法进行了介绍。可以理解的是,应用市场服务器和目标终端设备为了实现上述本申请实施例提供的应用程序更新方法,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请的一些实施例还提供了一种应用市场服务器,如图7所示,该应用市场服务器700可以包括:存储器701、处理器702和通信接口703,其中,存储器701、处理器702、通信接口703可以通信;示例性的,存储器701、处理器702和通信接口703可以通过通信总线通信。
存储器701可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器701可以存储计算机程序,由处理器702来控制执行,并由通信接口703来执行通信,从而实现本申请上述实施例应用市场服务器700侧提供的应用程序更新方法。
处理器702可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application apecific antegrated aircuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路。
处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的应用程序更新方法的功能可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请下文实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请下文实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本申请实施例的应用程序更新方法的功能。
可选的,通信接口703使用例如但不限于收发器一类的收发模块,来实现应用市场服务器700与其他设备或通信网络之间的通信。例如,可以通过通信接口703接收测试终端设备、目标终端设备等发送的信息。
本实施例的应用市场服务器700对应地可用于执行上述方法实施例中执行的步骤,其实现原理和技术效果类似,此处不再赘述。
本申请的一些实施例还提供了一种目标终端设备,如图8所示,该目标终端设备800可以包括:存储器801、处理器802和通信接口803,其中,存储器801、处理器802、通信接口803可以通信;示例性的,存储器801、处理器802和通信接口803可以通过通信总线通信。
其中,存储器801用于存储计算机程序,目标终端设备800运行时,处理器802调用存储器801中的计算机程序,执行目标终端设备侧的应用程序更新方法的步骤。
本申请实施例还提供了一种计算机可读存储介质。上述实施例中目标终端设备侧或应用市场服务器侧描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
一种可能的实现方式中,计算机可读介质可以包括RAM,ROM,只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (17)
1.一种应用程序更新方法,其特征在于,应用于电子设备,所述方法包括:
所述电子设备接收至少一种测试终端设备发送的多个编译相关信息、终端厂商设备发送的至少一种终端设备的dex2oat编译环境,以及安装包管理设备发送的目标应用程序的第一安装包;所述编译相关信息包括profile文件、framework版本号和eabi标识,所述profile文件包括应用程序标识;
所述电子设备将所述framework版本号一致、且具有所述目标应用程序的应用程序标识的所述profile文件内的热点函数进行合并,得到所述目标应用程序的热点函数集;
所述电子设备从部署的指令集编译环境中,查找与所述编译相关信息中的各种类型的eabi标识匹配的指令集编译环境;
所述电子设备采用所述热点函数集、所述dex2oat编译环境和所述指令集编译环境,分别对所述第一安装包内与所述热点函数集内的热点函数所对应的dex文件进行编译优化,生成每种所述终端设备对应的编译优化文件;所述编译优化文件包括odex文件和art文件;
所述电子设备根据所述第一安装包和每个所述编译优化文件,分别生成第二安装包;所述第二安装包和所述第一安装包的版本号均为第一版本号;
所述电子设备接收目标终端设备发送的针对所述目标应用程序的下载请求;所述下载请求包括所述第一版本号和所述目标终端设备的目标配置参数,所述目标配置参数包括目标framework版本号和目标eabi标识;
所述电子设备从具有所述第一版本号的各个所述第二安装包中,查找与所述目标framework版本号和所述目标eabi标识均匹配的目标安装包;
所述电子设备向所述目标终端设备发送所述目标安装包。
2.根据权利要求1所述的方法,其特征在于,所述编译相关信息还包括所述测试终端设备的测试终端厂商信息,所述热点函数集为所述测试终端厂商信息、所述应用程序标识和所述framework版本号均一致的所述profile文件内的热点函数的集合;
所述目标配置参数还包括所述目标终端设备的目标终端厂商信息,所述目标安装包为所述第二安装包中,与所述目标终端厂商信息、所述目标framework版本号和所述目标eabi标识均匹配的安装包。
3.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述第一安装包和每个所述编译优化文件,分别生成第二安装包,包括:
所述电子设备将所述第一安装包与每个所述编译优化文件分别进行合并,得到每种所述终端设备对应的第二安装包。
4.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述第一安装包和每个所述编译优化文件,分别生成第二安装包,包括:
所述电子设备将所述第一安装包内与所述编译优化文件对应的dex文件删除,得到第三安装包;
所述电子设备将所述第三安装包与每个所述编译优化文件分别进行合并,得到每种所述终端设备对应的第二安装包。
5.根据权利要求1所述的方法,其特征在于,在所述电子设备接收目标终端设备发送的针对所述目标应用程序的下载请求之前,还包括:
所述电子设备接收所述目标终端设备发送的针对所述目标应用程序的版本检测请求;所述版本检测请求包括所述目标终端设备内已安装的所述目标应用程序的第二版本号;
所述电子设备将所述第二版本号与所述第一版本号进行对比;
当所述第一版本号高于所述第二版本号时,所述电子设备向所述目标终端设备发送所述第一版本号。
6.根据权利要求1所述的方法,其特征在于,在所述电子设备接收目标终端设备发送的针对所述目标应用程序的下载请求之前,还包括:
所述电子设备接收所述目标终端设备发送的针对所述目标应用程序的版本查询请求;
所述电子设备向所述目标终端设备发送根据所述版本查询请求查找到的所述第一版本号。
7.根据权利要求1所述的方法,其特征在于,所述profile文件包括具有所述第一版本号的所述目标应用程序对应的热点函数,或者,所述profile文件包括具有第三版本号的所述目标应用程序对应的热点函数,所述第一版本号高于所述第三版本号。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述电子设备为服务器。
9.一种应用程序更新方法,其特征在于,应用于目标终端设备,所述方法包括:
所述目标终端设备向电子设备发送针对目标应用程序的下载请求;所述下载请求包括所述目标应用程序的第一版本号和所述目标终端设备的目标配置参数,所述目标配置参数包括目标framework版本号和目标eabi标识;
所述目标终端设备接收所述电子设备发送的目标安装包;所述目标安装包是具有所述第一版本号的各个第二安装包中,与所述目标framework版本号和所述目标eabi标识均匹配的安装包,所述目标安装包包括编译优化文件,所述编译优化文件包括odex文件和art文件;
所述目标终端设备根据所述目标安装包安装具有所述第一版本号的所述目标应用程序;
其中,所述编译优化文件是所述电子设备采用热点函数集、dex2oat编译环境和指令集编译环境,对第一安装包内与所述热点函数集内的热点函数所对应的dex文件进行编译优化生成的;
所述指令集编译环境是所述电子设备从部署的指令集编译环境中,查找的与编译相关信息中的各种类型的eabi标识匹配的指令集编译环境;
所述编译相关信息是所述电子设备接收的至少一种测试终端设备发送的多个编译相关信息;所述dex2oat编译环境是所述电子设备接收的终端厂商设备发送的至少一种终端设备的dex2oat编译环境;所述第一安装包是所述电子设备接收的安装包管理设备发送的所述目标应用程序的第一安装包;所述编译相关信息包括profile文件、framework版本号和eabi标识,所述profile文件包括应用程序标识;
所述热点函数集是所述电子设备通过将所述framework版本号一致、且具有所述目标应用程序的应用程序标识的所述profile文件内的热点函数进行合并得到的。
10.根据权利要求9所述的方法,其特征在于,所述目标配置参数还包括所述目标终端设备的目标终端厂商信息,所述目标安装包为所述第二安装包中,与所述目标终端厂商信息、所述目标framework版本号和所述目标eabi标识均匹配的安装包。
11.根据权利要求9所述的方法,其特征在于,所述目标安装包还包括所述第一安装包,所述第一安装包包括所述编译优化文件对应的dex文件,以及未进行编译优化的dex文件;
或者,所述目标安装包还包括第三安装包,所述第三安装包包括未进行编译优化的dex文件。
12.根据权利要求9所述的方法,其特征在于,在所述目标终端设备向电子设备发送针对所述目标应用程序的下载请求之前,还包括:
所述目标终端设备向所述电子设备发送针对所述目标应用程序的版本检测请求;所述版本检测请求包括所述目标终端设备内已安装的所述目标应用程序的第二版本号;
当所述电子设备内的所述目标应用程序的第一版本号高于所述第二版本号时,所述目标终端设备接收所述电子设备发送的所述第一版本号。
13.根据权利要求9所述的方法,其特征在于,在所述目标终端设备向电子设备发送针对所述目标应用程序的下载请求之前,还包括:
所述目标终端设备向所述电子设备发送针对所述目标应用程序的版本查询请求;
所述目标终端设备接收所述电子设备根据所述版本查询请求查找到的所述目标应用程序的第一版本号;
所述目标终端设备将所述第一版本号与所述目标终端设备内已安装的所述目标应用程序的第二版本号进行对比;
当所述第一版本号高于所述第二版本号时,所述目标终端设备生成所述下载请求。
14.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求1至8中任一项所述的应用程序更新方法。
15.一种终端设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求9至13中任一项所述的应用程序更新方法。
16.一种应用程序更新系统,其特征在于,所述应用程序更新系统包括如权利要求14所述的电子设备,以及如权利要求15所述的终端设备。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如如权利要求1至8中任一项所述的应用程序更新方法,或者实现如权利要求9至13中任一项所述的应用程序更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110997012.6A CN113885870B (zh) | 2021-08-27 | 2021-08-27 | 应用程序更新方法、电子设备、终端设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110997012.6A CN113885870B (zh) | 2021-08-27 | 2021-08-27 | 应用程序更新方法、电子设备、终端设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113885870A CN113885870A (zh) | 2022-01-04 |
CN113885870B true CN113885870B (zh) | 2022-09-20 |
Family
ID=79011316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110997012.6A Active CN113885870B (zh) | 2021-08-27 | 2021-08-27 | 应用程序更新方法、电子设备、终端设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885870B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116088888B (zh) * | 2022-07-22 | 2023-10-31 | 荣耀终端有限公司 | 应用程序更新方法及相关装置 |
CN115543334B (zh) * | 2022-09-19 | 2023-10-27 | 荣耀终端有限公司 | 编译优化方法及电子设备 |
CN116700768B (zh) * | 2022-10-20 | 2024-04-02 | 荣耀终端有限公司 | 一种应用的处理方法及相关装置 |
CN117130617A (zh) * | 2023-01-19 | 2023-11-28 | 荣耀终端有限公司 | 一种应用程序的编译方法和装置 |
CN116643778B (zh) * | 2023-07-27 | 2024-03-19 | 荣耀终端有限公司 | 一种应用程序优化方法及电子设备 |
CN116932012A (zh) * | 2023-09-15 | 2023-10-24 | 合肥康芯威存储技术有限公司 | 一种基于数据校验的存储器固件升级方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387045A (zh) * | 2011-09-30 | 2012-03-21 | 北京信息科技大学 | 嵌入式p2p流量监控系统及方法 |
CN106502740A (zh) * | 2016-10-31 | 2017-03-15 | 北京小米移动软件有限公司 | 应用安装方法和装置 |
CN110569040A (zh) * | 2019-09-17 | 2019-12-13 | 深圳市优创亿科技有限公司 | 一种在嵌入式系统内安装、运行应用程序的方法 |
CN111061484A (zh) * | 2019-11-28 | 2020-04-24 | Oppo广东移动通信有限公司 | 代码编译方法、装置、服务器、用户终端及可读介质 |
CN112559088A (zh) * | 2020-12-29 | 2021-03-26 | Oppo广东移动通信有限公司 | 配置文件的优化方法、装置、服务器以及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
CN106293849B (zh) * | 2016-08-18 | 2020-01-31 | 华为技术有限公司 | 一种应用更新方法和终端 |
US11237843B2 (en) * | 2018-03-05 | 2022-02-01 | Beijing Zhanxinzhanli Information Technology Co., Ltd. | Application-level runtime environment for executing applications native to mobile devices without full installation |
CN112631622A (zh) * | 2020-12-29 | 2021-04-09 | Oppo广东移动通信有限公司 | 应用安装方法、装置、服务器及计算机可读介质 |
-
2021
- 2021-08-27 CN CN202110997012.6A patent/CN113885870B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387045A (zh) * | 2011-09-30 | 2012-03-21 | 北京信息科技大学 | 嵌入式p2p流量监控系统及方法 |
CN106502740A (zh) * | 2016-10-31 | 2017-03-15 | 北京小米移动软件有限公司 | 应用安装方法和装置 |
CN110569040A (zh) * | 2019-09-17 | 2019-12-13 | 深圳市优创亿科技有限公司 | 一种在嵌入式系统内安装、运行应用程序的方法 |
CN111061484A (zh) * | 2019-11-28 | 2020-04-24 | Oppo广东移动通信有限公司 | 代码编译方法、装置、服务器、用户终端及可读介质 |
CN112559088A (zh) * | 2020-12-29 | 2021-03-26 | Oppo广东移动通信有限公司 | 配置文件的优化方法、装置、服务器以及存储介质 |
Non-Patent Citations (2)
Title |
---|
基于Android的4over6技术驱动程序设计与实现;陈煜驰;《软件》;20150215(第02期);118-126 * |
基于热点函数的代码体积优化;黄昕;《软件导刊》;20190630;第18卷(第6期);42-45 * |
Also Published As
Publication number | Publication date |
---|---|
CN113885870A (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113885870B (zh) | 应用程序更新方法、电子设备、终端设备及系统 | |
US10606739B2 (en) | Automated program code analysis and reporting | |
US9201632B2 (en) | Systems and methods for incremental software development | |
US9852015B2 (en) | Automatic discovery of a JavaScript API | |
US8533691B2 (en) | Managing non-common features for program code translation | |
CN102279765A (zh) | 预编译托存托管代码 | |
US20170177330A1 (en) | Logical level difference detection between software revisions | |
CN109284126B (zh) | 类库自动更新方法、装置、电子设备、存储介质 | |
CN111506904B (zh) | 漏洞在线修复的方法和装置 | |
CN111654495A (zh) | 用于确定流量产生来源的方法、装置、设备及存储介质 | |
US20200117443A1 (en) | Selective application updates based on usage analytics | |
CN114637529A (zh) | 基于机器学习的弃用的软件标识 | |
CN114115884B (zh) | 一种编程服务的管理方法以及相关装置 | |
CN110334031B (zh) | 内存分配代码检测方法、装置、计算机设备及存储介质 | |
CN110297639B (zh) | 用于检测代码的方法和装置 | |
CN111435328B (zh) | 应用测试方法、装置、电子设备及可读存储介质 | |
CN110990833A (zh) | 一种sdk安全检测方法及相关设备 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
CN112764796A (zh) | 安装包生成系统 | |
CN112068895B (zh) | 代码配置方法、装置、视频播放设备及存储介质 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
EP3379409B1 (en) | Automated program code analysis and reporting | |
KR20170020366A (ko) | 구독자 정의 동적 이벤팅 기법 | |
US20240329983A1 (en) | Development environment integrated with infrastructure cost estimation system | |
US20240338185A1 (en) | Automatic runtime execution hardening through static system application programming interface (api) data mapping |
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 |