CN115826999A - 一种应用安装方法和电子设备 - Google Patents
一种应用安装方法和电子设备 Download PDFInfo
- Publication number
- CN115826999A CN115826999A CN202111093953.3A CN202111093953A CN115826999A CN 115826999 A CN115826999 A CN 115826999A CN 202111093953 A CN202111093953 A CN 202111093953A CN 115826999 A CN115826999 A CN 115826999A
- Authority
- CN
- China
- Prior art keywords
- application
- dex2
- dex2oat
- installation
- task
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用安装方法,应用于电子设备,该方法包括:确定待批量安装的多个应用;确定多个应用中的至少一个第一应用;对第一应用的应用程序包进行初步安装操作;将进行初步安装操作之后的应用程序包的dex2oat操作标识信息,添加至预设的dex2oat任务队列中生成dex2oat任务,以用于对应用程序包进行dex2oat操作异步处理,dex2oat操作是对应用程序包中的文件进行编译的操作;确定第一应用安装完成,以进行后续应用的安装,直至多个应用安装完成。如此,可以快速地完成一个应用的安装,以及开始后续应用的安装,可以有效地降低应用安装时间,提高应用安装的速度和效率。本申请还公开了一种电子设备。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种应用安装方法和电子设备。
背景技术
随着电子设备的发展,电子设备支持的应用程序(Application,App,以下简称“应用”,也可以称为应用软件)越来越多,并且应用也越来越复杂,应用程序包也越来越大。当前,在电子设备的使用过程中,存在应用安装速度慢、效率低的问题。尤其是在电子设备批量安装应用的场景中,电子设备安装应用速度慢、效率低的问题尤其显著。应用安装速度慢、效率低,会影响用户体验。
发明内容
本申请提供了一种应用安装方法和电子设备,用于解决现有技术中存在的应用安装速度慢、效率低的问题,可以更为快速地安装应用,提高应用安装速度和效率,从而可以提高用户体验。
为解决上述技术问题,第一方面,本申请的实施方式提供了一种应用安装方法,应用于电子设备,该方法包括:确定待批量安装的多个应用;确定多个应用中的至少一个第一应用;对第一应用的应用程序包进行初步安装操作;将进行初步安装操作之后的应用程序包的dex2oat操作标识信息,添加至预设的dex2oat任务队列中生成dex2oat任务,以用于对应用程序包进行dex2oat操作异步处理,dex2oat操作是对应用程序包中的文件进行编译的操作;确定第一应用安装完成,以进行后续应用的安装,直至多个应用安装完成。
即本实施方式提供的应用安装方法中,电子设备相当于将dex2oat操作的执行过程从整个应用安装过程中拆解出来,对第一应用的应用程序包进行初步安装操作之后,电子设备跳过dex2oat操作,直接确定第一应用安装完成,并且电子设备可以开始安装后续待安装的应用。如此,电子设备可以快速地完成一个应用的安装,以及开始后续应用的安装,可以有效地降低应用安装时间,提高应用安装的速度和效率。
在上述第一方面的一种可能的实现中,该方法还包括:若满足预设的dex2oat操作异步处理条件,则将进行初步安装操作之后的应用程序包的dex2oat操作标识信息添加至dex2oat任务队列中;若不满足dex2oat操作异步处理条件,则对进行初步安装操作之后的应用程序包直接进行dex2oat操作,确定第一应用安装完成。
如此,电子设备可以根据dex2oat操作异步处理条件或者需要确定是否对第一应用的应用程序进行dex2oat操作异步处理,可以满足电子设备不同的应用安装和使用需求,保证应用的正常使用,以及保证用户体验。
在上述第一方面的一种可能的实现中,dex2oat操作异步处理条件,包括以下任意一项:应用程序包对应应用的类型为预设的应用类型;应用程序包对应应用的历史使用频率小于预设的频率阈值;应用程序包对应应用为应用安装后预设时间内不会使用的应用;应用程序包对应应用为预设的用户非常用应用;应用程序包中的dex文件的文件大小大于等于预设的文件大小阈值;应用程序包中的dex文件的dex方法数的数值大于等于预设的数值阈值。
用户或者开发者可以根据需要设置dex2oat操作异步处理条件,以满足不同的应用安装场景或者不同类型应用的安装需求,可以提高应用安装效率,以及提高用户体验。
在上述第一方面的一种可能的实现中,dex2oat操作标识信息包括:应用程序包的标识信息和写入位置信息。
通过应用程序包的标识信息和写入位置信息可以方便、准确地标识各应用或者各应用对应的dex2oat操作。当然,dex2oat操作标识信息也可以是其他信息,其可以根据需要设置。
在上述第一方面的一种可能的实现中,对应用程序包进行dex2oat操作异步处理,包括:使得预设的至少一个dex2oat处理线程从dex2oat任务队列中获取dex2oat任务,并且执行dex2oat任务,以对dex2oat任务对应的应用程序包进行dex2oat操作。
通过dex2oat处理线程从dex2oat任务队列中获取并执行dex2oat任务,可以在电子设备对其他应用进行前述的初步安装操作等安装过程中,并行或者异步处理dex2oat任务队列中的dex2oat任务。既不会影响其他应用的初步安装操作等安装,也能保证完成dex2oat任务队列中的dex2oat任务。如此,可以有效地降低应用安装时间,提高应用安装的速度和效率,并且也不会影响应用的使用。另外,dex2oat处理线程的个数可以根据需要设置。
在上述第一方面的一种可能的实现中,使得dex2oat处理线程从dex2oat任务队列中获取dex2oat任务,包括:若dex2oat任务队列中存在待执行的dex2oat任务,则确定dex2oat处理线程是否启动;若dex2oat处理线程未启动,启动dex2oat处理线程;若dex2oat处理线程已启动,使得dex2oat处理线程等待任务队列,以从dex2oat任务队列中获取dex2oat任务。
根据dex2oat任务队列中是否存在待执行的dex2oat任务,确定dex2oat处理线程是否启动,以及执行dex2oat任务,可以根据需要启动和关闭dex2oat处理线程,在保证dex2oat任务可以被及时执行的基础上,可以降低电子设备的功耗等。
在上述第一方面的一种可能的实现中,该方法还包括:确定等待任务队列的dex2oat处理线程的任务空转信息;若根据任务空转信息确定dex2oat处理线程的任务空转未超时,则使得dex2oat处理线程从dex2oat任务队列中获取dex2oat任务;若根据任务空转信息确定dex2oat处理线程的任务空转超时,则关闭dex2oat处理线程。
根据任务空转是否超时,可以确定当前是否还存在未执行的dex2oat任务,如此可以方便地保证dex2oat任务可以被及时、全面地执行,避免遗漏dex2oat任务。并且,在任务空转超时时关闭dex2oat处理线程,可以降低电子设备的功耗。
在上述第一方面的一种可能的实现中,该方法还包括:确定dex2oat处理线程的处理间隔时间,并且使得执行完dex2oat任务的dex2oat处理线程,在处理间隔时间之后,重新等待任务队列,以执行下一次dex2oat任务,直至dex2oat任务队列中不存在待执行的dex2oat任务。
通过处理时间间隔的设置,可以避免dex2oat操作线程连续执行dex2oat任务,使得电子设备的温度过高,或者占用电子设备的其他业务资源等问题。
在上述第一方面的一种可能的实现中,该方法还包括通过以下任意一种信息确定处理间隔时间:用户预先设置的休息间隔时间信息;电子设备的硬件信息;电子设备的温度信息;电子设备的业务负载信息。
如此,可以使得处理间隔时间可以更为符合应用安装过程中的需求,在保证应用安装速率的基础上,避免电子设备的温度过高,或者占用电子设备的其他业务资源等问题。
在上述第一方面的一种可能的实现中,该方法还包括通过以下任意一种方式,从dex2oat任务队列中获取dex2oat任务:根据dex2oat操作标识信息加入dex2oat任务队列的时序,依次获取对应的dex2oat任务;如此,可以根据dex2oat任务的生成顺序方便地执行各dex2oat任务。根据dex2oat操作标识信息对应应用的历史使用频率,由高到低依次获取对应的dex2oat任务;如此,可以保证历史使用频率高的应用对应的dex2oat任务先被执行,使得该应用在安装完成后,可以满足用户及时使用的需求。根据dex2oat操作标识信息对应应用安装后的优先使用信息,依次获取优先使用的应用对应的dex2oat任务;如此,也可以保证应用安装后的优先使用的应用对应的dex2oat任务先被执行,使得该应用在安装完成后,可以满足用户及时使用的需求。
在上述第一方面的一种可能的实现中,确定多个应用中的至少一个第一应用,包括:根据预设的应用安装顺序,从多个应用中选择确定至少一个第一应用。
应用安装顺序可以是应用名称字母的排列顺序,或者也可以是应用安装后优先使用信息等,其可以根据需要具体设置。
第二方面,本申请的实施方式提供了一种应用安装方法,应用于电子设备,该方法包括:确定第一应用;对第一应用的应用程序包进行初步安装操作;将进行初步安装操作之后的应用程序包的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务,以用于对应用程序包进行dex2oat操作异步处理,dex2oat操作是对应用程序包中的文件进行编译的操作;确定第一应用安装完成。
在上述第一方面的一种可能的实现中,该方法还包括:若满足预设的dex2oat操作异步处理条件,则将进行初步安装操作之后的应用程序包的dex2oat操作标识信息添加至dex2oat任务队列中;若不满足dex2oat操作异步处理条件,则对进行初步安装操作之后的应用程序包直接进行dex2oat操作,确定第一应用安装完成。
第三方面,本申请的实施方式提供了一种电子设备,包括:存储器,用于存储计算机程序,计算机程序包括程序指令;处理器,用于执行程序指令,以使电子设备执行如上述第一方面和/或第一方面的任意一种可能的实现方式所提供的应用安装方法,或者以使电子设备执行如上述第二方面和/或第二方面的任意一种可能的实现方式所提供的应用安装方法。
第四方面,本申请的实施方式提供了一种计算机可读取存储介质,计算机可读取存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被电子设备运行以使电子设备执行如上述第一方面和/或第一方面的任意一种可能的实现方式所提供的应用安装方法,或者以使电子设备执行如上述第二方面和/或第二方面的任意一种可能的实现方式所提供的应用安装方法。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施方式描述中所使用的附图作简单介绍。
图1A是根据本申请的一些实施方式,示出了一种手机的数据模块大小示意图;
图1B-1D是根据本申请的一些实施方式,示出了手机在备份数据恢复场景中各阶段所需时间的时间分布示意图;
图2A是根据本申请的一些实施方式,示出了现有技术中的一种手机批量安装应用的过程示意图;
图2B是根据本申请的一些实施方式,示出了图2A所示的手机批量安装应用场景中,手机安装单个应用的过程示意图;
图3A是根据本申请的一些实施方式,示出了一种手机的结构示意图;
图3B是根据本申请的一些实施方式,示出了一种手机的软件结构框图;
图4A是根据本申请的一些实施方式,示出了一种手机批量安装应用的过程示意图;
图4B是根据本申请的一些实施方式,示出了一种对应于图4A的手机批量安装应用的过程示意图;
图5是根据本申请的一些实施方式,示出了另一种手机批量安装应用的过程示意图;
图6是根据本申请的一些实施方式,示出了另一种手机批量安装应用的过程示意图;
图7是根据本申请的一些实施方式,示出了另一种手机批量安装应用的过程示意图;
图8是根据本申请的一些实现方式,示出了一种电子设备的结构示意图;
图9是根据本申请的一些实现方式,示出了一种片上系统(SoC)的结构示意图。
具体实施方式
下面将结合附图对本申请的技术方案作进一步详细描述。
以手机为例,在手机的使用过程中,存在许多需要批量安装应用的场景,例如手机通常会从应用市场批量下载及安装大量应用;或者用户更换新手机后,通常会使用新手机克隆旧手机,此时手机通常需要从云端等服务器获取旧手机备份的数据,进行备份数据恢复,在恢复备份数据的过程中,手机也需要恢复及安装大量应用。
手机安装应用通常包括对应用程序包进行解析等安装操作。应用程序包例如可以是Android安装包(Android application package,APK),APK是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件,APK通常包括AndroidManifest.xml、资源文件、dex文件、签名信息等信息。另外,dex文件是java程序代码编译后生成字节码的文件,应用的所有代码都在一个dex文件里面。随着手机支持的应用越来越复杂,应用程序包也越来越大,当前很多应用程序包都超过了150MB。程序包太大使得手机安装应用的时间也变得越来越长,尤其是在批量安装应用的时候。
例如,在手机从应用市场批量下载应用并批量安装应用的场景中,即便是手机下载应用的速度足够快,但是由于应用安装耗时,也会导致应用批量安装比较慢、效率比较低的问题,导致用户体验变差。又如,在手机进行备份数据恢复的场景中,因为手机进行备份数据恢复的整个过程中,通常需要恢复及安装的应用数量较多,也会遇到类似的应用批量安装比较慢、效率比较低的问题。即应用恢复及安装要占用备份数据恢复整个过程中的大量时间。
以手机进行备份数据恢复的场景为例,在手机进行备份数据恢复的场景中,应用安装阶段涉及到文件复制(copy)、解析,安装(install)、权限、存储、用户身份证明(UserIdentification,UID)分配等关键资源访问,多个进程之间的通信,以及数据传递等多个过程,通常需要大量时间。所以,手机进行批量应用恢复及安装的整个过程中,大量的时间都消耗在应用恢复及安装过程中,而恢复及安装应用的时间又主要消耗在应用安装阶段。
基于上述情况,本申请的一种实现方式提供了一种应用安装方法,可以应用于手机批量安装多个应用的场景。该应用安装方法包括,手机在批量安装应用的过程中,确定待批量安装的多个应用,然后从待批量安装的多个应用中确定至少一个第一应用。接着,对第一应用的应用程序包进行初步安装操作,初步安装操作包括将应用程序包复制写入至指定位置、解析该应用程序包、进行资源注入和创建等操作。然后,对于进行完初步安装操作之后的应用程序包,手机可以直接将应用程序包对应的dex2oat操作标识信息(例如应用程序包的标识信息(例如UID)和写入位置信息)添加至预设的dex2oat任务队列中生成dex2oat任务,以用于预设的dex2oat处理线程对应用程序包进行dex2oat操作异步处理。其中,dex2oat操作是指对应用的APK文件的运行前编译操作(Ahead Of Time,AOT),其生成是一个本地可执行的文件,可以直接被本地处理器执行,以提高执行效率。例如,dex2oat操作可以是指将APK文件中的dex文件进行编译的操作,即是将dex文件的字节码编译成oat格式的可执行文件的操作。dex2oat操作可以认为是对应用程序包的一种优化操作,因此也可以称为dex2oat优化处理,或者dex2oat系统优化等。然后,对于应用程序包的初步安装操作已完成、且dex2oat任务已添加至dex2oat任务队列中的第一应用,手机确定该第一应用安装完成,以进行后续应用的安装。后续每个应用的安装分别包括进行前述的初步安装操作,以及将进行初步安装操作之后的应用程序包的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务。
即本实现方式提供的应用安装方法中,手机相当于将dex2oat操作的执行过程从整个应用安装过程中拆解出来,对第一应用的应用程序包进行初步安装操作之后,手机跳过dex2oat操作,直接确定第一应用安装完成,并且手机可以开始安装后续待安装的应用。如此,手机可以快速地完成一个应用的安装,以及开始后续应用的安装,可以有效地降低应用安装时间,提高应用安装的速度和效率。
本申请的另一种实现方式还提供了一种应用安装方法,该应用安装方法包括,手机在批量安装应用的过程中,对第一应用的应用程序包进行初步安装操作之后,先判断是否满足预设的dex2oat操作异步处理条件(也可以称为dex2oat操作并行处理条件),以确定是否需要对应用程序包的dex2oat操作进行异步处理。例如,dex2oat操作异步处理条件可以是应用为安装后短时间内不会使用的应用,则若手机确定第一应用为安装后短时间内不会使用的应用,则确定需要进行dex2oat操作异步处理。若手机确定第一应用为安装后需要立即使用的应用,则确定不需要进行dex2oat操作异步处理。
进一步地,若确定需要进行dex2oat操作异步处理,则手机将应用程序包对应的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务,以用于预设的dex2oat处理线程对应用程序包进行dex2oat操作异步处理。然后,对于应用程序包的初步安装操作已完成、且dex2oat任务已添加至dex2oat任务队列中的第一应用,手机直接确定第一应用安装完成,结束第一应用的安装,以进行后续应用的安装。若不需要进行dex2oat操作异步处理,则手机直接对初步安装操作之后的应用程序包进行dex2oat操作。然后,对于应用程序包的初步安装操作和dex2oat操作都已完成的第一应用,手机确定该第一应用安装完成,结束第一应用的安装,以进行后续应用的安装。后续每个应用的安装分别包括进行前述的初步安装操作,以及确定是否进行dex2oat操作异步处理并进行对应处理等。如此,使得手机可以根据需要确定是否对第一应用的应用程序进行dex2oat操作异步处理,可以满足手机不同的应用安装和使用需求,保证应用的正常使用,以及保证用户体验。
另外,本申请的实现方式中,由dex2oat处理线程异步处理dex2oat操作,可以保证dex2oat操作的处理,并且不会影响整个应用安装过程。并且,dex2oat处理线程异步处理dex2oat操作,可以是在手机安装其他应用的过程中同步进行,在应用批量安装场景中,也可以有效地降低整个应用安装的时间,提高应用安装的速度和效率。
进一步地,手机在运行应用的过程中,对于应用程序包已经经过dex2oat操作的应用,手机直接执行dex2oat操作后得到的可执行文件;对于应用程序包未经过dex2oat操作的应用,手机一边对应用程序包进行dex2oat操作,一边执行dex2oat操作后得到的可执行文件。即应用的运行,并不依赖于其应用程序包是否已经经过dex2oat操作。因此,在应用安装过程中,在对应用程序包进行初步安装操作之后,即使对应用程序包未做dex2oat操作,在应用安装完后之后,实际上也不影响应用的正常运行。即,即使对应用程序包不做dex2oat操作,应用也能够正常运行。而且,因为dex2oat操作依赖于手机中应用运行过程中收集的热点函数,热点函数是指应用运行过程中使用次数较多或者经常使用的运行函数,应用没有运行时还没有热点函数,执行dexopt操作本身对应用运行速率提升的作用很小,所以对应用进行初步安装操作之后立即进行dex2oat操作,对应用性能的实际提高并不十分明显。并且,手机批量安装应用的场景中,手机安装应用后,在短时间内通常是不会打开及使用大部分应用的,因此即使在应用安装过程中不及时执行dex2oat操作,也不会影响大部分应用的使用。所以,本申请的实现方式中,将dex2oat操作的执行过程从整个应用安装过程中拆解出来,由dex2oat处理线程异步处理dex2oat操作,可以做到dex2oat操作并行化处理,并不会影响应用安装过程,也不会影响应用安装后的正常使用。
以下对本申请的实施例结合实例进行具体的说明。
以下,以在手机进行备份数据恢复的场景中为例进行说明。请参见图1A,手机待恢复的备份数据(包括所有待恢复及安装应用的应用程序包数据文件以及其他例如图片等数据文件)的大小例如可以约为100GB,各数据模块的数据大小如图1A所示,视频模块的数据大小为27GB,图片模块的数据大小为36GB,文档模块的数据大小为1.1GB,音频模块的数据大小为6.3GB,社交应用聊天记录模块的数据大小为7.5GB,应用模块的数据大小为20G,其他模块的数据大小为2GB。其中,应用模块的数据大小占手机整体数据模型的占比较大,约为五分之一,则说明在手机恢复备份数据的过程中,恢复及安装应用需要消耗的时间较长。
进一步地,分别对手机1、手机2、手机3、手机4进行备份数据恢复及测试,可以得到备份数据恢复过程中各阶段所需的时间。手机进行备份数据恢复的时间,包括手机获取(例如从云端获取,或者从旧手机获取等)备份数据的传输时间,以及包括在手机中恢复备份数据的数据恢复时间。例如,请参见图1B,如图1B中虚线圆圈内部分所示,可以确定在备份数据恢复过程中,除了传输时间之外,数据恢复时间是整个业务流程中的瓶颈点之一,即数据恢复时间在整个数据传输和恢复整体时间中所占的时间较长。另外,请参见图1C,如图1C中虚线圆圈内部分所示,可以确定在数据恢复时间中,由于需要将所有应用进行恢复及安装,并且应用安装时间较长,所以应用恢复及安装时间在整个数据恢复时间中所占的时间较长,并且导致整体数据恢复时间较长。以及,请参见图1D,如图1D中虚线圆圈内部分所示,可以确定在单个应用恢复的时间中,应用安装的时间在整个应用恢复及安装时间中所占的时间较长。即在手机恢复备份数据的过程中,应用安装耗时较长,在一定程度上导致了整个备份数据恢复的过程时间过长。
下面对应用安装耗时较长的原因进行进一步说明。
请参见图2A,目前基于Android系统的手机,进行应用批量安装的过程包括以下步骤:
第一步,手机确定待批量安装的多个应用,启动应用安装进程以用于批量安装该多个应用。
请参见图2B,该步骤可以由手机应用程序层中的备份数据恢复应用(即图示的应用,也可以称为备份数据恢复服务)执行。具体的,备份数据恢复应用从备份数据中确定备份数据恢复过程中需要批量安装的多个应用。然后,备份数据恢复应用启动应用安装进程以用于批量安装多个应用。
第二步,手机从待批量安装的多个应用中选择一个应用作为第一应用,并且启动安装该单个第一应用。
请参见图2B,该步骤可以由手机应用程序层中的备份数据恢复应用、应用程序框架(framwork)层中的包安装服务(PackageInstallerService,PIS)和包管理服务(PackageManagerService,PMS)配合执行。具体的,备份数据恢复应用按照备份数据中应用的排列顺序,确定第一个安装的第一应用,然后创建第一应用对应的应用安装Session。应用安装Session中包括第一应用的安装过程中需要的第一应用对应的APK的标识信息(例如UID)、APK的写入位置信息等一些信息。然后,备份数据恢复应用将应用安装Session发送给PIS。PIS接收到应用安装Session后,对应用安装Session进行合法性等验证,然后PIS向PMS提交应用安装Session。
PMS用于管理应用程序信息(ApplicationInfo),以及进行应用安装、权限管理等。第一应用的安装过程从PMS真正开始,即PMS接收到应用安装Session后,启动安装第一应用。具体的,PMS根据应用安装Session中的APK的标识信息,确定需要安装的APK,并且根据应用安装Session中的APK的写入位置信息确定APK的写入地址。然后,PMS调用应用程序框架层中的Installd,执行应用的初步安装操作,初步安装操作包括以下第三步和第四步。
第三步,手机复制该第一应用的APK文件至指定位置。
请参见图2B,该步骤可以由PMS调用Installd执行。具体的,Installd根据应用安装Session中的写入位置信息先对APK文件进行复制写入操作,例如将APK文件复制写入至data/app目录(作为指定位置的一种示例)下。
第四步,手机解析该APK文件,并进行资源注入和创建。
请参见图2B,该步骤可以由Installd继续执行。具体的,Installd解析APK文件中的AndroidManifest.xml文件,并将从AndroidManifest文件中解析出的组件信息及其他信息注册到PMS中,从而实现资源注入和创建。
第五步,手机执行dex2oat操作。
请参见图2B,该步骤可以由Installd和dex2oat配合执行。具体的,Installd执行完上述的应用初步安装操作之后,Installd向dex2oat发送dex2oat操作指令。dex2oat接收到dex2oat操作指令之后,对APK进行dex2oat操作,即对APK文件中的dex文件进行编译操作,以将dex文件的字节码编译成oat格式的可执行文件,并且可以将编译后的可执行文件保存到例如dalvik-cache目录下。
第六步,手机确定第一应用安装完成,结束第一应用的安装,即第一应用安装结束。
请参见图2B,该步骤可以由dex2oat、PMS和备份数据恢复应用配合执行。具体的,dex2oat执行完dex2oat操作之后,向PMS发送dex2oat操作结束通知信息,以通知PMS该dex2oat操作已结束。PMS接收到dex2oat发送来的dex2oat操作结束通知信息后,确定第一应用安装完成,并且基于广播的方式向备份数据恢复应用发送dex2oat操作结束通知信息,以通知备份数据恢复应用第一应用安装完成。备份数据恢复应用接收到第一应用安装完成的通知信息后,确定第一应用安装完成。
然后,手机接着执行第二步,从需要批量安装的多个应用中选择待安装的后续应用,即确定下一个应用,并接着执行第三步至第六步,直至安装完所有待安装的多个应用。
需要说明的是,本实现方式中,备份数据恢复应用位于应用程序层,PIS、PMS、installd和dex2oat皆位于应用程序框架层,并且都是独立的进程(也可以称为线程)。
如上所述,手机是通过PMS采用持锁串行的方式(也可以称为串行阻塞的方式)执行应用安装,即手机安装单个应用的整个过程中,PMS必须先完成APK文件的复制写入、解析等初步安装操作后,才能进行dex2oat操作,以及在dex2oat操作完成之后,才能确定应用安装完成,以及可以开始下一个应用的安装操作。在此期间,由于PMS已经持锁,所以正在安装的应用如果没有完成安装,其他应用的安装请求无法被执行,即只有等待该应用安装完成后,手机才能安装其他应用。在批量安装应用的场景中,各待安装的应用的APK文件通常已经准备好,但是手机必须等待上个应用安装完成,才能安装下一个应用,使得整体应用安装缓慢,即会导致应用安装速度慢、效率低的问题。
另外,纵观单个应用安装过程,dex2oat操作涉及读取dex->以类为粒度编译->生成许多中间文件->合并为.oat文件等多个处理过程,相当于执行一次编译工作,即将APK原文件中的dex文件抽出来,校验并逐个指令的判断,然后进行校验编译优化,并生成大量的中间内容,产生新的文件oat格式的可执行文件(该文件也可以称为odex文件)。由于dex2oat操作涉及多个处理过程,则dex2oat操作耗时通常较长,其在一定程度上使得应用安装耗时较长。
并且,手机的嵌入式多媒体控制器(Embedded Multi Media Card,EMMC)性能,中央处理器(central processing unit,简称CPU)性能,swap分区大小等硬件性能在一定程度上也决定了dex2oat操作的速度,影响dex2oat操作的耗时。
因此,dex2oat操作阶段为应用安装(或者应用恢复及安装)的主要耗时阶段,其占据的安装过程耗时占比约为整个应用安装耗时的40%。尤其对于批量安装应用的场景,dex2oat操作会明显导致应用安装耗时增加。
综上,由于应用越来越复杂,应用程序包越来越大,以及dex2oat操作执行时间较长,同时在批量应用安装过程中需要持锁阻塞等待,导致手机在批量安装应用的过程中,存在应用安装速度慢、效率低的问题。
基于上述情况,本申请的实现方式提供了前述的应用安装方法,可以应用于手机批量安装多个应用的场景。即本申请的实现方式提供的应用安装方法中,手机可以根据需要将dex2oat操作的执行过程从整个应用安装过程中拆解出来,对待安装的应用的应用程序包进行初步安装操作之后,手机跳过dex2oat操作,直接确定应用安装完成,并且手机可以开始安装下一个待安装的应用。如此,手机可以快速地完成一个应用的安装,以及开始下一个应用的安装,可以有效地降低应用安装时间,提高应用安装的速度和效率。
下面对本申请实现方式提供的作为电子设备的示例的手机的结构进行说明。
请参见图3A,图3A示出了手机的一种结构示意图。
手机可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接头130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对手机的具体限定。在本申请另一些实施例中,手机可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-networkprocessing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的速率。另外,本实现方式中,前述的备份数据恢复应用、PIS、PMS、installd和dex2oat皆基于处理器110实现。
手机通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现手机的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行手机的各种功能应用以及数据处理。例如,执行本申请实现方式提供的应用安装方法。
请参见图3B,图3B示出了手机的一种软件结构框图。
手机的软件系统可以采用分层架构,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
本实现方式以分层架构的Android系统为例,示例性说明手机的软件结构。通常将Android系统分为四层,从上至下分别包括图4B所示的应用程序层和应用程序框架层,另外还包括安卓运行时(Android runtime)、系统库层和操作系统(operating system,OS)层(也可以称为内核层)(图中未示出)。
其中,应用程序层可以包括一系列应用程序包。应用程序包可以包括前述的数据备份恢复应用(即图示的应用),以及相机、图库等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。例如包括图示的PIS、PMS、installd、dex2oat等。
本实现方式中,对于数据备份恢复应用、PIS和PMS与前述图3B所示的软件系统中的数据备份恢复应用、PIS和PMS的功能相同的部分,此处不再赘述。相比于前述图3B所示的软件系统,本实现方式中,installd还用于在执行完第一应用的初步安装操作后,直接将第一应用对应的APK的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务,以用于dex2oat操作异步处理。并且,installd通知PMS第一应用安装完成,以使PMS通知数据备份恢复应用第一应用安装完成。另外,本实现方式中,installd将第一应用的APK对应的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务之后,installd还用于调用dex2oat执行dex2oat操作,以对第一应用的应用程序包执行dex2oat操作异步处理。
当然,应用程序框架层还可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等服务,其可以根据需要设置。
另外,Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
操作系统层是硬件和软件之间的层。操作系统层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动等。
下面对本申请实现方式提供的应用安装方法进行进一步详细说明。
请参见图4A,在本申请的一种实现方式中,手机批量安装应用的过程包括以下步骤:
S101,当手机需要批量安装应用时,手机确定待批量安装的多个应用,并且启动应用安装进程,以用于批量安装多个应用。然后,手机执行步骤S102。
本实现方式中,该步骤可以由前述的手机应用程序层中的备份数据恢复应用执行。具体的,备份数据恢复应用从备份数据中确定备份数据恢复过程中需要批量安装的多个应用。然后,备份数据恢复应用启动应用安装进程以用于批量安装应用。
S102,手机从待安装的多个应用中,根据预设的应用安装顺序,选择一个应用作为第一应用,并且调用单个应用安装进程,以启动安装该单个第一应用。然后,手机执行步骤S103。
应用安装顺序例如可以是根据应用名称的首字母排序的顺序,也可以是应用在安装后的使用优先级的排序。当然,应用安装顺序也可以是其他顺序,其可以根据需要进行选择和设置。
本实现方式中,该步骤可以由备份数据恢复应用、PIS和PMS配合执行。具体的,请参见图4B,备份数据恢复应用(即应用)执行步骤S11,按照备份数据中应用的排列顺序,确定第一个安装的第一应用。然后创建第一应用对应的应用安装Session。如前所述,应用安装Session中包括第一应用的安装过程中需要的第一应用对应的APK的标识信息(例如UID)、APK的写入地址信息等一些信息。然后,备份数据恢复应用执行步骤S12,将应用安装Session发送给PIS。PIS接收到应用安装Session后,对应用安装Session进行合法性等验证,然后执行步骤S13,向PMS提交应用安装Session。PMS接收到应用安装Session后,执行步骤S14,根据应用安装Session中的APK的标识信息,确定需要安装的APK,并且根据应用安装Session中的APK的写入地址信息确定APK的写入地址,,以启动安装第一应用。即执行应用的初步安装操作,初步安装操作包括以下步骤S103和S104。
S103,手机复制第一应用的APK文件,将APK文件复制写入至例如data/app目录下。然后,手机执行步骤S104。
本实现方式中,该步骤可以由PMS和Installd配合执行。具体的,请参见图4B,PMS执行步骤S15,向Installd发送应用安装指令,以调用Installd执行应用初步安装操作。Installd接收到应用安装指令之后,执行步骤S16进行应用初步安装操作,即Installd先根据应用安装Session中的写入位置信息对APK文件进行复制写入操作,例如将APK文件复制写入至data/app目录(作为指定位置的一种示例)下。另外,Installd可以利用Binder机制实现应用的解析等安装处理请求。
S104,手机解析APK文件,并进行资源注入和创建。
本实现方式中,该步骤可以由Installd继续执行。具体的,请参见图4B,Installd继续执行步骤S16,调用installPackage方法对应用安装包的APK文件进行解析操作,解析APK的AndroidManifinest.xml文件,提取出APK的例如APK的包名、应用安装时分配的用于标识应用的UID、版本信息、签名信息、组件信息等重要信息写入到或者注册到PMS的packages.xml文件中,从而实现资源注入和创建。然后,手机确定第一应用的初步安装操作已完成,手机执行步骤S105。
S105,手机判断当前安装的APK文件是否满足预设的dex2oat操作异步处理条件,若不满足,手机确定不执行dex2oat操作异步处理,即手机执行S106;若满足,手机确定执行dex2oat操作异步处理,即手机执行S107。
dex2oat操作异步处理条件例如可以是APK文件对应应用为应用安装后预设时间内不会使用的应用,即短时间内不会使用的应用。例如,该应用可以是音乐应用。则若手机确定第一应用为音乐应用,则确定需要进行dex2oat操作异步处理。若手机确定第一应用为社交应用,则确定不需要进行dex2oat操作异步处理。另外,该预设时间的取值范围可以是30min~60min,例如可以是30min、45min、60min等。当然,该预设时间也可以根据需要设置为其他任意值。
本实现方式中,该步骤可以继续由Installd执行,即Installd判断当前安装的APK文件是否满足预设的dex2oat操作异步处理条件。另外,若不满足,Installd确定不执行dex2oat操作异步处理,即Installd执行图4B所示的步骤S17,向dex2oat发送dex2oat操作指令,以使dex2oat直接执行步骤S18以执行dex2oat操作。若满足,Installd确定执行dex2oat操作异步处理,即Installd执行步骤S20,将APK对应的dex2oat操作标识信息添加至dex2oat任务队列中,即添加dex2oat任务。
S106,手机对应用程序包直接执行dex2oat操作。然后,手机执行步骤S108。
本实现方式中,该步骤可以继续由Installd调用dex2oat执行,即dex2oat执行步骤S18以执行dex2oat操作。然后dex2oat执行图4B所示的步骤S19,通过PMS向备份数据恢复应用发送第一应用安装完成的通知信息,或者发送dex2oat操作结束通知信息,以通知备份数据恢复应用第一应用安装完成。
S107,手机将APK文件的包名、UID、版本信息等标识信息,以及其写入位置信息“data/app”,或者其他一些dex2oat操作标识信息,添加至预设的dex2oat任务队列中生成dex2oat任务,以实现将dex2oat操作对应的dex2oat任务添加至预设的dex2oat任务队列中,以用于预设的dex2oat处理线程对应用程序包进行dex2oat操作异步处理。然后,手机执行步骤S108。
本实现方式中,该步骤可以继续由Installd执行,即Installd先执行图4B所示的步骤S20,将APK对应的dex2oat操作标识信息添加至dex2oat任务队列中以实现dex2oat任务的添加。然后Installd执行步骤S21,向备份数据恢复应用发送第一应用安装完成的通知信息。
S108,手机确定第一应用安装完成,结束该第一应用的安装。
本实现方式中,若手机执行完前述的步骤S106之后,执行该步骤S108,则该步骤可以由dex2oat、PMS和备份数据恢复应用配合执行。即如前所述,dex2oat执行完dex2oat操作之后,向PMS发送dex2oat操作结束通知信息,以通知PMS该dex2oat操作已结束。PMS接收到dex2oat发送来的dex2oat操作结束通知信息后,确定第一应用安装完成,并且基于广播的方式向备份数据恢复应用发送dex2oat操作结束通知信息,以通知备份数据恢复应用第一应用安装完成。备份数据恢复应用接收到第一应用安装完成的通知信息后,确定第一应用安装完成。
若手机执行完前述的步骤S107之后,执行该步骤S108,则该步骤可以由Installd、PMS和备份数据恢复应用配合执行。具体的,PMS接收到Installd发送来的第一应用安装完成的通知信息(或者也可以是第一应用初步安装操作完成的通知信息)之后,确定第一应用安装完成,并且基于广播的方式向应用程序层的备份数据恢复应用发送dex2oat操作结束通知信息,以通知备份数据恢复应用该第一应用安装完成。备份数据恢复应用接收到第一应用安装完成的通知信息后,确定第一应用安装完成。
手机完成第一应用的安装后,手机继续依次执行前述的步骤S102~S108,即手机根据前述预设的应用安装顺序依次选择确定及安装后续应用,直至安装完所有待安装的多个应用。在手机安装待安装的多个应用的过程中,手机分别对各应用对应的dex2oat操作进行前述步骤S105的处理,以确定是否需要进行dex2oat操作异步处理,并且执行对应的处理。
请继续参见图4A,dex2oat任务队列例如可以包括待执行的dex2oat任务1、dex2oat任务2、dex2oat任务3等数个dex2oat任务。本实现方式中,手机在确定dex2oat任务队列中存在待执行的dex2oat任务之后,执行dex2oat任务的过程包括以下步骤:
S201,手机确定dex2oat任务队列中存在待执行的dex2oat任务,则确定需要进行dex2oat操作。然后,手机执行步骤S202。
本实现方式中,该步骤可以继续由Installd执行,即由Installd执行步骤S22,确定dex2oat任务队列中是否存在待执行的dex2oat任务。具体的,Installd可以包括dex2oat任务队列管理服务。例如,dex2oat任务队列服务确定dex2oat任务队列中存在待执行的dex2oat任务,向Installd发送通知(notify)信息以通知需要进行dex2oat操作。
S202,手机确定预设的dex2oat处理线程(也可以称为任务工作线程)是否已启动。若未启动,手机执行步骤S203;若已启动,手机执行步骤S204。
本实现方式中,该步骤可以继续由Installd执行,即由Installd继续执行步骤S22,获取dex2oat处理线程的标志位信息,并根据标志位信息确定dex2oat处理线程是否启动。例如,若dex2oat处理线程的标志位为“true”,则确定dex2oat处理线程已启动。若dex2oat处理线程的标志位为“false”,则确定dex2oat处理线程未启动。
S203,手机启动dex2oat处理线程,以用于执行dex2oat任务。然后,手机执行步骤S204。
本实现方式中,该步骤可以继续由Installd执行,即由Installd继续执行步骤S22,启动dex2oat处理线程。
S204,手机使得dex2oat处理线程等待任务队列。
本实现方式中,该步骤可以继续由Installd执行,即由Installd继续执行步骤S22,使得dex2oat处理线程等待任务队列。
S205,手机判断dex2oat处理线程的任务空转是否超时,即dex2oat处理线程的任务空转是否超过预设的任务空转时间阈值,其中任务空转是指dex2oat处理线程未执行任务的时间。
本实现方式中,该步骤可以继续由Installd执行,即由Installd继续执行图4B所示的步骤S22,判断dex2oat处理线程的任务空转是否超时。
任务空转时间阈值的取值范围可以是5min~20min,例如可以为5min、10min、15.5min、20min等。当然,任务空转时间阈值也可以根据需要设置为其他任意值。
并且,若超时,说明当前任务队列中不存在待执行的dex2oat任务,手机执行步骤S210;若未超时,说明当前任务队列中存在待执行的dex2oat任务,手机执行步骤S206。
另外,手机可以通过设置定时器,并且定时器的时间设置为任务空转时间阈值,从而通过定时器确定dex2oat处理线程的任务空转是否超时。
S206,手机使得dex2oat处理线程从前述的dex2oat任务队列中,按照dex2oat任务加入dex2oat任务队列的时序,依次获取dex2oat任务。然后,手机执行步骤S207。
本实现方式中,该步骤可以继续由Installd执行,即Installd执行图4B所示的步骤S23,向dex2oat发送dex2oat操作指令,以使得dex2oat处理线程依次获取dex2oat任务。
S207,手机执行dex2oat任务,以对dex2oat任务对应的APK文件进行dex2oat操作。然后,手机执行步骤S208。
本实现方式中,该步骤可以由dex2oat执行,即dex2oat接收dex2oat操作指令之后,执行图4B所示的步骤S24,通过dex2oat处理线程执行dex2oat任务。
S208,手机结束dex2oat任务,即完成对APK文件的dex2oat操作。然后,手机执行步骤S209。
本实现方式中,该步骤可以继续由dex2oat执行,即dex2oat结束dex2oat任务。
S209,手机使得dex2oat操作线程休息预设的处理时间间隔。然后,使得该dex2oat处理线程继续执行前述的S204,等待任务队列,以执行下一个dex2oat任务。
本实现方式中,该步骤可以继续由Installd执行,即Installd使得dex2oat操作线程休息预设的处理时间间隔。
本实现方式中,处理时间间隔可以根据用户预先设置的休息间隔时间信息确定,该休息时间间隔的取值范围可以是8min~15min,例如可以是8min、10.5min、12min、15min等。当然,该休息时间间隔的取值也可以根据需要设置为其他任意值。
另外,手机可以通过设置定时器,并且定时器的时间设置为处理时间间隔,从而通过定时器实现dex2oat操作线程的休息。
本实现方式中,通过处理时间间隔的设置,可以避免dex2oat操作线程连续执行dex2oat任务,使得手机的温度过高,或者占用手机的其他业务资源等问题。
另外,本实现方式中,dex2oat处理线程可以只有一个,也可以有多个。即手机通过dex2oat处理线程异步处理dex2oat操作的过程中,可以采用单线程调度处理dex2oat任务,也可以采用多线程并行调度处理dex2oat任务,以加速完成dex2oat操作优化过程。若dex2oat处理线程只有一个,则手机使得该dex2oat处理线程依次执行所有的dex2oat任务。若dex2oat处理线程有多个,则手机可以从多个dex2oat处理线程中依次选择未执行dex2oat任务的dex2oat处理线程,多线程并行执行待执行的dex2oat任务。并且如果采用多线程并行调度处理dex2oat操作,预计能够优化安装时长接近30%。
S210,手机确定当前任务队列中不存在待执行的dex2oat任务,结束dex2oat处理线程。
本实现方式中,该步骤可以继续由Installd执行,即Installd判断当前任务队列中是否存在待执行的dex2oat任务。
本实现方式提供的应用安装方法,是一种批量应用快速安装方法。在手机批量安装应用的过程中,手机可以先对APK文件进行初步安装操作,然后根据需要确定是否需要将对APK文件的dex2oat操作对应的dex2oat操作标识信息添加至预设的dex2oat任务队列中,以用于预设的dex2oat处理线程对APK文件进行dex2oat操作异步处理。如此,采用动态处理策略,确定是否需要对APK文件进行dex2oat操作异步处理,即确定是否将dex2oat过程从整个安装过程中剥离出来进行并行处理,可以满足手机不同的应用安装和使用需求,保证应用的正常安装和使用,可以有效地提高应用的安装速度,提高用户体验。
请参见图5,在本申请的另一种实现方式中,手机安装应用的过程,相比于前述图4A所示的方式,在步骤S104之后,手机可以不用判断是否满足前述的dex2oat操作异步处理条件,直接执行图5所示的步骤S107,即直接将dex2oat任务添加至预设的dex2oat任务队列中,以用于预设的dex2oat处理线程对APK文件进行dex2oat操作异步处理。然后,手机接着执行S108,结束第一应用的安装。并且,手机继续依次执行步骤S102~S108,即手机确定及安装下一个待安装的应用,直至安装完所有待安装的应用。
本实现方式提供的应用安装方法,在手机进行应用批量安装的过程中,手机可以先对APK文件进行初步安装操作,然后直接将对APK文件的dex2oat操作对应的dex2oat操作标识信息添加至预设的dex2oat任务队列中,以用于预设的dex2oat处理线程对APK文件进行dex2oat操作异步处理。即当手机批量应用安装时,将dex2oat过程从整个安装过程中剥离出来,在每个应用安装过程中仅提交dex2oat任务并行执行操作,并释放安装结束通知,确保后续应用可以正常请求安装,dex2oat根据队列任务情况合理执行dex2oat操作。可以有效地提高应用的安装速度,加快批量应用安装的过程,提高用户体验。
请参见图6,在本申请的另一种实现方式中,相比于前述图4A或者图5所示的方式,手机在执行步骤S204之后,也可以直接执行S206,即使得dex2oat处理线程获取dex2oat任务,并执行dex2oat任务。而不需要判断dex2oat处理线程的空转是否超时。然后,手机可以在通过其他方式确定dex2oat任务队列中的dex2oat任务都执行完成后,直接结束dex2oat处理线程。
请参见图7,在本申请的另一种实现方式中,相比于前述图4A或者图5所示的方式,手机在执行完步骤S208之后,也可以使dex2oat处理线程不用执行步骤S209,直接执行步骤S204,即等待任务队列,以执行下一个dex2oat任务,即使得dex2oat处理线程连续执行dex2oat任务。如此,可以有效地提高整个应用批量安装的速度和效率。
在本申请的另一些实现方式中,手机在确定dex2oat处理线程已启动之后,手机也可以确定当前是否存在执行中的dex2oat任务,若手机确定当前不存在执行中的dex2oat任务,则手机可以使得dex2oat处理线程直接执行步骤S206。若手机确定已有执行中的dex2oat任务,则使得dex2oat处理线程执行步骤S204,等待任务队列。
在申请的另一种实现方式中,前述的dex2oat操作异步处理条件例如可以是APK文件对应应用的类型为预设的应用类型。例如,预设的应用类型例如可以是地图应用、音乐应用。则若APK文件对应应用的类型为音乐应用,则手机确定满足dex2oat操作异步处理条件,需要对该APK文件进行dex2oat操作异步处理。若APK文件对应应用的类型为社交应用,则手机确定不满足dex2oat操作异步处理条件,对该APK文件直接进行dex2oat操作。
在本申请的另一种实现方式中,dex2oat操作异步处理条件例如可以是APK文件对应应用的历史使用频率小于预设的频率阈值。例如,在进行备份数据恢复场景中,手机确定某一应用的历史使用频率小于预设的频率阈值,则手机确定满足dex2oat操作异步处理条件,需要对该APK文件进行dex2oat操作异步处理。否则手机确定不满足dex2oat操作异步处理条件,对该APK文件直接进行dex2oat操作。
在本申请的另一种实现方式中,dex2oat操作异步处理条件例如可以是APK文件对应应用为预设的用户非常用应用。例如,预设的用户非常用应用可以是地图应用。则若APK文件对应应用为地图应用,则手机确定满足dex2oat操作异步处理条件,需要对该APK文件进行dex2oat操作异步处理。若APK文件对应应用为社交应用,则手机确定不满足dex2oat操作异步处理条件,对该APK文件直接进行dex2oat操作。
在本申请的另一种实现方式中,dex2oat操作异步处理条件例如可以是APK文件中的dex文件的文件大小大于等于预设的文件大小阈值。例如,文件大小阈值的取值范围可以是1GB~2GB,例如可以是1GB、1.5GB、2GB等;当然,文件大小阈值的取值范围也可以根据需要设置为其他任意值。即若APK文件中的dex文件的文件大小大于等于文件大小阈值,则手机确定满足dex2oat操作异步处理条件,需要对该APK文件进行dex2oat操作异步处理。否则,手机确定不满足dex2oat操作异步处理条件,对该APK文件直接进行dex2oat操作。
在本申请的另一种实现方式中,dex2oat操作异步处理条件例如可以是APK文件中的dex文件的dex方法数(或者也可以是dex文件值)的数值大于等于预设的数值阈值。例如,数值阈值的取值范围可以是10~20,例如可以是10、15、20等;当然,数值阈值的取值范围也可以根据需要设置为其他任意值。即若APK文件中的dex文件的dex方法数的数值大于等于数值阈值,则手机确定满足dex2oat操作异步处理条件,需要对该APK文件进行dex2oat操作异步处理。否则,手机确定不满足dex2oat操作异步处理条件,对该APK文件直接进行dex2oat操作。
当然,在本申请的另一些实现方式中,dex2oat操作异步处理条件也可以为其他条件,其可以根据需要设置和选择。
在本申请的另一种实现方式中,手机也可以根据手机的硬件信息确定处理时间间隔,硬件信息可以是指前述的EMMC性能、CPU性能、swap分区大小等硬件性能信息。并且,若手机的硬件配置较高,则可以将处理时间间隔设置的较短,例如处理时间间隔的取值范围可以是5min~10min,如此可以避免手机安装应用过程中出现卡顿、死机等情况。或者,手机也可以根据手机的温度信息确定处理时间间隔。例如,若手机检测到手机的温度过高,则手机可以根据当前温度设置处理时间间隔,以使得dex2oat处理线程暂停执行dex2oat任务,可以使得手机进行降温之后,再启动dex2oat处理线程执行dex2oat任务。处理时间间隔可以根据手机温度高低具体设置,如此可以避免手机温度过高。或者,手机也可以根据手机的业务负载信息确定处理时间间隔,例如,若手机根据手机的业务负载信息确定手机的当前业务负载较大,可以使得手机休息处理时间间隔之后,再执行dex2oat任务。处理时间间隔可以根据业务负载大小具体设置。如此可以避免手机安装应用过程中出现卡顿、死机等情况。
当然,在本申请的另一些实现方式中,也可以根据其他信息确定处理时间间隔。
在本申请的另一种实现方式中,手机从dex2oat任务队列中获取dex2oat任务,也可以根据dex2oat操作标识信息(即dex2oat任务)对应应用的历史使用频率,由高到低依次获取对应的dex2oat任务。或者,根据dex2oat操作标识信息对应应用安装后的优先使用信息,依次获取优先使用的应用对应的dex2oat任务。当然,手机也可以根据其他信息或者方式,从dex2oat任务队列中获取dex2oat任务,其可以根据需要选择和设置。
需要说明的是,在本申请的一些实现方式中,手机批量安装应用的过程中,具体可以由前述的应用程序层、PIS、PMS、installd、dex2oat配合完成相关的应用安装处理。通过本实现方式提供的应用安装方法,在手机进行应用批量安装的过程中,可以有效地提高应用的安装速度,提高用户体验。
在本申请的另一些实现方式中,前述的APK文件也可以是其他类型的应用程序包,其可以根据需要选择和设置。
在本申请的另一些实现方式中,本申请提供的应用安装方法,也可以应用于其他例如1+8+N等手机及相关设备批量安装应用的场景等应用安装场景,以提高应用安装速度和效率。
需要说明的是,手机在批量安装应用的过程中,可以如前所述每次只安装一个应用,当然也可以同时安装多个应用,其可以根据需要选择和设置。
在本申请的另一些实现方式中,还提供另一种应用安装方法,该应用安装方法可以应用于手机安装单个应用的场景。该应用安装方法包括:确定第一应用,该第一应用为待安装的应用。先对第一应用的应用程序包进行初步安装操作,然后如前所述,直接将进行初步安装操作之后的应用程序包的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务,以用于对应用程序包进行dex2oat操作异步处理,dex2oat操作是对应用程序包中的文件进行编译的操作,然后确定第一应用安装完成,并结束第一应用的安装。如此,手机可以快速地完成一个应用的安装,以及开始后续应用的安装,可以有效地降低应用安装时间,提高应用安装的速度和效率。后续每个应用的安装分别包括进行前述的初步应用安装,以及将进行初步安装操作之后的应用程序包的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务的操作。
或者,也可以是如前所述先判断是否满足预设的dex2oat操作异步处理条件,以确定是否需要对应用程序包的dex2oat操作进行异步处理。进一步地,若确定需要进行dex2oat操作异步处理,则手机将对应的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务,以用于预设的dex2oat处理线程对应用程序包进行dex2oat操作异步处理。然后,手机确定第一应用安装完成,直接结束该第一应用的安装,并进行后续应用的安装。若不需要进行dex2oat操作异步处理,则手机直接对初步安装操作之后的应用程序包进行dex2oat操作,然后,手机确定第一应用安装完成,结束该第一应用的安装,并进行后续应用的安装。后续每个应用的安装分别包括进行前述的初步安装操作,以及确定是否进行dex2oat操作异步处理并进行对应处理等。如此,使得手机可以根据需要确定是否对第一应用的应用程序进行dex2oat操作异步处理,可以满足手机不同的应用安装和使用需求,保证应用的正常使用,以及保证用户体验。
需要说明的是,单个应用安装场景中,应用安装的具体过程以及dex2oat任务处理的具体过程,与前述的应用批量安装场景中单个应用的具体安装过程以及dex2oat任务处理的具体过程相同或者类似,此处不再赘述。
在本申请的另一些实现方式中,前述的手机,也可以是其他例如平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如包括:智能手表、智能手环、计步器等)、个人数字助理、便携式媒体播放器、导航设备、视频游戏设备、机顶盒、虚拟现实和/或增强现实设备、物联网设备、工业控制设备、流媒体客户端设备、机器人等电子设备。
请参见图8,图8所示为根据本申请的一实施方式提供的电子设备900的结构示意图。电子设备900可以包括耦合到控制器中枢904的一个或多个处理器901。对于至少一个实施例,控制器中枢904经由诸如前端总线(Front Side Bus,FSB)之类的多分支总线、诸如快速通道互连(QuickPath Interconnect,QPI)之类的点对点接口、或者类似的连接与处理器901进行通信。处理器901执行控制一般类型的数据处理操作的指令。在一实施例中,控制器中枢904包括,但不局限于,图形存储器控制器中枢(Graphics Memory controller hub,GMCH)(图中未示出)和输入/输出中枢(IOH)(其可以在分开的芯片上)(图中未示出),其中GMCH包括存储器和图形控制器并与IOH耦合。
电子设备900还可包括耦合到控制器中枢904的协处理器906和存储器902。或者,存储器902和GMCH中的一个或两者可以被集成在处理器901内(如本申请中所描述的),存储器902和协处理器906直接耦合到处理器901以及控制器中枢904,控制器中枢904与IOH处于单个芯片中。
存储器902可以是例如动态随机存取存储器(Dynamic Random Access Memory,DRAM)、相变存储器(Phase Change Memory,PCM)或这两者的组合。
在一个实施例中,协处理器906是专用处理器,诸如例如高吞吐量众核(ManyIntegrated Core,MIC)处理器、网络或通信处理器、压缩引擎、图形处理器、通用图形处理器(General Purpose Graphics Processing Units,GPGPU)、或嵌入式处理器等等。协处理器906的任选性质用虚线表示在图8中。
在一个实施例中,电子设备900可以进一步包括网络接口(Network InterfaceCard,NIC)903。网络接口903可以包括收发器,用于为电子设备900提供无线电接口,进而与任何其他合适的设备(如前端模块,天线等)进行通信。在各种实施例中,网络接口903可以与电子设备900的其他组件集成。网络接口903可以实现上述实施例中的通信单元的功能。
电子设备900可以进一步包括输入/输出(I/O)设备905。输入/输出(I/O)设备905可以包括:用户界面,该设计使得用户能够与电子设备900进行交互;外围组件接口的设计使得外围组件也能够与电子设备900交互;和/或传感器设计用于确定与电子设备900相关的环境条件和/或位置信息。
值得注意的是,图8仅是示例性的。即虽然图8中示出了电子设备900包括处理器901、控制器中枢904、存储器902等多个器件,但是,在实际的应用中,使用本申请各方法的设备,可以仅包括电子设备900各器件中的一部分器件,例如,可以仅包含处理器901和NIC903。图8中可选器件的性质用虚线示出。
在该电子设备900的存储器中可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。
本申请中,该电子设备900具体可以是手机、平板电脑、个人数字助理(PersonalDigital Assistant,PDA)或台式电脑等终端设备。该电子设备的存储器中存储的指令可以包括:由处理器中的至少一个单元执行时导致电子设备实施如前述提到的应用安装方法的指令。
请参见图9,图9所示为根据本申请的一实施方式提供的片上系统(System onChip,SoC)1000的结构示意图。在图9中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC 1000的可选特征。该SoC 1000可以被用于根据本申请的任一电子设备,根据其所在的设备不同以及其内所存储的指令的不同,可以实现相应的功能。
在图9中,SoC1000包括:互连单元1002,其被耦合至处理器1001;系统代理单元1006;总线控制器单元1005;集成存储器控制器单元1003;一组或一个或多个协处理器1007,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(Static Random-Access Memory,SRAM)单元1008;直接存储器存取(Direct MemoryAccess,DMA)单元1004。在一个实施例中,协处理器1007包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
SRAM单元1008中可以包括用于存储数据和/或指令的一个或多个计算机可读介质。计算机可读存储介质中可以存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器1001中的至少一个单元执行时导致电子设备实施如前述所提到的应用安装方法的指令。
需要说明的是,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
虽然通过参照本申请的某些优选实施方式,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。本领域技术人员可以在形式上和细节上对其作各种改变,包括做出若干简单推演或替换,而不偏离本申请的精神和范围。
Claims (15)
1.一种应用安装方法,其特征在于,应用于电子设备,所述方法包括:
确定待批量安装的多个应用;
确定所述多个应用中的至少一个第一应用;
对所述第一应用的应用程序包进行初步安装操作;
将进行所述初步安装操作之后的所述应用程序包的dex2oat操作标识信息,添加至预设的dex2oat任务队列中生成dex2oat任务,以用于对所述应用程序包进行dex2oat操作异步处理,所述dex2oat操作是对所述应用程序包中的文件进行编译的操作;
确定所述第一应用安装完成,以进行后续应用的安装,直至所述多个应用安装完成。
2.根据权利要求1所述的应用安装方法,其特征在于,所述方法还包括:
若满足预设的dex2oat操作异步处理条件,则将进行所述初步安装操作之后的所述应用程序包的dex2oat操作标识信息添加至所述dex2oat任务队列中;
若不满足所述dex2oat操作异步处理条件,则对进行所述初步安装操作之后的所述应用程序包直接进行dex2oat操作,确定所述第一应用安装完成。
3.根据权利要求2所述的应用安装方法,其特征在于,所述dex2oat操作异步处理条件,包括以下任意一项:
所述应用程序包对应应用的类型为预设的应用类型;
所述应用程序包对应应用的历史使用频率小于预设的频率阈值;
所述应用程序包对应应用为应用安装后预设时间内不会使用的应用;
所述应用程序包对应应用为预设的用户非常用应用;
所述应用程序包中的dex文件的文件大小大于等于预设的文件大小阈值;
所述应用程序包中的dex文件的dex方法数的数值大于等于预设的数值阈值。
4.根据权利要求1-3任意一项所述的应用安装方法,其特征在于,所述dex2oat操作标识信息包括:所述应用程序包的标识信息和写入位置信息。
5.根据权利要求1-4任意一项所述的应用安装方法,其特征在于,对所述应用程序包进行dex2oat操作异步处理,包括:
使得预设的至少一个dex2oat处理线程从所述dex2oat任务队列中获取dex2oat任务,并且执行所述dex2oat任务,以对所述dex2oat任务对应的所述应用程序包进行dex2oat操作。
6.根据权利要求5所述的应用安装方法,其特征在于,使得所述dex2oat处理线程从所述dex2oat任务队列中获取dex2oat任务,包括:
若所述dex2oat任务队列中存在待执行的dex2oat任务,则确定所述dex2oat处理线程是否启动;
若所述dex2oat处理线程未启动,启动所述dex2oat处理线程;
若所述dex2oat处理线程已启动,使得所述dex2oat处理线程等待任务队列,以从所述dex2oat任务队列中获取dex2oat任务。
7.根据权利要求6所述的应用安装方法,其特征在于,所述方法还包括:
确定等待任务队列的所述dex2oat处理线程的任务空转信息;
若根据所述任务空转信息确定所述dex2oat处理线程的任务空转未超时,则使得所述dex2oat处理线程从所述dex2oat任务队列中获取dex2oat任务;
若根据所述任务空转信息确定所述dex2oat处理线程的任务空转超时,则关闭所述dex2oat处理线程。
8.根据权利要求5-7任意一项所述的应用安装方法,其特征在于,所述方法还包括:
确定所述dex2oat处理线程的处理间隔时间,并且使得执行完dex2oat任务的所述dex2oat处理线程,在所述处理间隔时间之后,重新等待任务队列,以执行下一次dex2oat任务,直至所述dex2oat任务队列中不存在待执行的dex2oat任务。
9.根据权利要求8所述的应用安装方法,其特征在于,所述方法还包括通过以下任意一种信息确定所述处理间隔时间:
用户预先设置的休息间隔时间信息;
所述电子设备的硬件信息;
所述电子设备的温度信息;
所述电子设备的业务负载信息。
10.根据权利要求5-9任意一项所述的应用安装方法,其特征在于,所述方法还包括通过以下任意一种方式,从所述dex2oat任务队列中获取dex2oat任务:
根据所述dex2oat操作标识信息加入所述dex2oat任务队列的时序,依次获取对应的dex2oat任务;
根据所述dex2oat操作标识信息对应应用的历史使用频率,由高到低依次获取对应的dex2oat任务;
根据所述dex2oat操作标识信息对应应用安装后的优先使用信息,依次获取优先使用的应用对应的dex2oat任务。
11.根据权利要求1-10任意一项所述的应用安装方法,其特征在于,确定所述多个应用中的至少一个第一应用,包括:
根据预设的应用安装顺序,从所述多个应用中选择确定至少一个所述第一应用。
12.一种应用安装方法,其特征在于,应用于电子设备,所述方法包括:
确定第一应用;
对所述第一应用的应用程序包进行初步安装操作;
将进行所述初步安装操作之后的所述应用程序包的dex2oat操作标识信息添加至预设的dex2oat任务队列中生成dex2oat任务,以用于对所述应用程序包进行dex2oat操作异步处理,所述dex2oat操作是对所述应用程序包中的文件进行编译的操作;
确定所述第一应用安装完成。
13.根据权利要求12所述的应用安装方法,其特征在于,所述方法还包括:
若满足预设的dex2oat操作异步处理条件,则将进行所述初步安装操作之后的所述应用程序包的dex2oat操作标识信息添加至所述dex2oat任务队列中;
若不满足所述dex2oat操作异步处理条件,则对进行所述初步安装操作之后的所述应用程序包直接进行dex2oat操作,确定所述第一应用安装完成。
14.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序,所述计算机程序包括程序指令;
处理器,用于执行所述程序指令,以使所述电子设备执行如权利要求1-11任意一项所述的应用安装方法,或者以使所述电子设备执行如权利要求12或13所述的应用安装方法。
15.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被电子设备运行以使所述电子设备执行如权利要求1-11任意一项所述的应用安装方法,或者以使所述电子设备执行如权利要求12或13所述的应用安装方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111093953.3A CN115826999A (zh) | 2021-09-17 | 2021-09-17 | 一种应用安装方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111093953.3A CN115826999A (zh) | 2021-09-17 | 2021-09-17 | 一种应用安装方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115826999A true CN115826999A (zh) | 2023-03-21 |
Family
ID=85515271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111093953.3A Pending CN115826999A (zh) | 2021-09-17 | 2021-09-17 | 一种应用安装方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115826999A (zh) |
-
2021
- 2021-09-17 CN CN202111093953.3A patent/CN115826999A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360884B2 (en) | Reserved memory in memory management system | |
US20140282508A1 (en) | Systems and methods of executing multiple hypervisors | |
US11822958B2 (en) | Method and a device for data transmission between an internal memory of a system-on-chip and an external memory | |
CN115629884A (zh) | 一种线程调度方法、电子设备及存储介质 | |
EP2504759A1 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
US10474512B1 (en) | Inter-process intra-application communications | |
CN116721007B (zh) | 任务控制方法、系统及装置、电子设备和存储介质 | |
US10817224B2 (en) | Preemptive decompression scheduling for a NAND storage device | |
CN115826999A (zh) | 一种应用安装方法和电子设备 | |
CN114327508A (zh) | 一种软件加载方法及相关装置 | |
US10956210B2 (en) | Multi-processor system, multi-core processing device, and method of operating the same | |
CN108733401B (zh) | 一种实现浏览器兼容的方法及装置 | |
CN116643778B (zh) | 一种应用程序优化方法及电子设备 | |
CN116661882B (zh) | 预加载小程序的方法、电子设备及存储介质 | |
US12020065B2 (en) | Hierarchical processor selection | |
CN113900825A (zh) | 基于人工智能的App耗时任务优化方法、装置及相关设备 | |
WO2023185684A1 (zh) | 一种应用程序的进程查杀方法及电子设备 | |
WO2023061014A1 (zh) | 任务管理方法及装置 | |
WO2023202406A1 (zh) | 显示方法及电子设备 | |
CN116225632A (zh) | 线程调度方法、设备及相关装置 | |
CN117793525A (zh) | 图像处理方法、可读介质、电子设备及程序产品 | |
CN118034889A (zh) | 插件进程映射方法及相关装置 | |
CN117891647A (zh) | 日志处理方法、电子设备和计算机可读存储介质 | |
CN117724828A (zh) | 一种内存管理器的管理方法及电子设备 |
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 |