CN114860327A - 一种安卓兼容环境中安卓应用的快速启动方法 - Google Patents
一种安卓兼容环境中安卓应用的快速启动方法 Download PDFInfo
- Publication number
- CN114860327A CN114860327A CN202210792238.7A CN202210792238A CN114860327A CN 114860327 A CN114860327 A CN 114860327A CN 202210792238 A CN202210792238 A CN 202210792238A CN 114860327 A CN114860327 A CN 114860327A
- Authority
- CN
- China
- Prior art keywords
- android application
- android
- package
- starting
- application
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种安卓兼容环境中安卓应用的快速启动方法,通过减少APK的扫描、加速启动服务及预启动服务等方式优化了安卓兼容环境中安卓应用的启动过程中APK扫描、硬件初始化以及各服务的启动等过程,有效缩短了安卓应用的启动时间,改善了用户体验。
Description
技术领域
本发明属于桌面操作系统上安卓应用的开发技术领域,具体涉及一种安卓兼容环境中安卓应用的快速启动方法。
背景技术
Linux或Windows等桌面操作系统上的安卓兼容环境(下文简称安卓兼容环境)是一种在Linux或Windows操作系统上运行安卓应用的技术,对丰富操作系统应用生态有着重要的意义。通常情况下,典型的安卓兼容环境主要包括安卓应用显示单元和安卓应用兼容服务,安卓应用显示单元用于在桌面操作系统上实现安卓应用的用户界面,安卓应用兼容服务用于提供运行于桌面操作系统上的安卓兼容环境,通过安卓应用显示单元与安卓应用兼容服务的相互配合实现安卓应用在桌面操作系统上的有效运行,例如,现有安卓兼容环境的实现方案有xDroid,它包括xDroidUI和xDroidServer,xDroidUI为安卓应用显示单元,xDroidServer为安卓应用兼容服务。
现有安卓兼容环境中,在安卓应用完成安装后往往会在桌面系统中为该安卓应用生成快捷方式,用户通过双击该快捷方式即可启动该安卓应用。现有的安卓应用启动加载机制决定,安卓应用的启动需要依赖于安卓兼容环境的启动运行,即只有在安卓兼容环境处于运行状态时才可以完成安卓应用的启动,因此,如果用户双击启动安卓应用时安卓兼容环境未启动,则需要首先完成安卓兼容环境的启动才能启动安卓应用,由此将会延长安卓应用的启动时间,为用户的使用带来不便。
发明内容
有鉴于此,本发明提供了一种安卓兼容环境中安卓应用的快速启动方法,能够实现安卓兼容环境内安卓应用的快速启动。
本发明提供的一种安卓兼容环境中安卓应用的快速启动方法,包括以下步骤:
步骤1、启动第一安卓应用,将第一安卓应用的包名、LaunchActivity名及安装包文件全路径,作为第一包名、第一LaunchActivity名及第一全路径;
步骤2、若依赖关系列表中存在第一安卓应用,则将第一安卓应用所依赖的服务及安卓应用分别添加到待启动服务列表和待扫描应用列表中,启动安卓兼容环境的活动管理器服务及窗口管理器服务后,执行步骤3;否则执行步骤7;其中,所述依赖关系列表用于保存安卓应用与其所依赖的安卓应用和服务间的依赖关系;
步骤3、启动包管理服务,将待启动服务列表和待扫描应用列表中的安装包文件作为依赖包文件,将依赖包文件的信息加入待扫描包文件列表,其中,所述待扫描包文件列表用于保存第一安卓应用启动中所需扫描的依赖包文件;
步骤4、从包文件信息列表中获取依赖包文件的依赖包解析信息,所述依赖包解析信息包括依赖包文件的包名及包解析数据,将依赖包解析信息保存到依赖包解析信息列表中,所述包解析数据是类型为PackageParser.Package的数据结构;
步骤5、遍历待扫描包文件列表中的依赖包文件,若其也存在于依赖包解析信息列表中,则执行步骤6;否则,扫描依赖包文件后,将得到的依赖包解析信息更新到包文件信息列表和依赖包解析信息列表中后,执行步骤6;
步骤6、根据待启动服务列表启动安卓应用所依赖的服务,再根据第一包名、第一LaunchActivity名及第一全路径启动第一安卓应用,在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,若被依赖的安卓应用存在于包文件信息列表中则启动该安卓应用,否则扫描该安卓应用将扫描结果保存到包文件信息列表中后启动该安卓应用,结束本流程;
步骤7、启动安卓兼容环境后,在ART模式下获取第一安卓应用依赖的服务和安卓应用,将第一安卓应用及获取到的服务和安卓应用添加到依赖关系列表及包文件信息列表中;启动依赖关系列表中的服务,完成安卓应用的启动;
步骤8、在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,若被依赖的安卓应用存在于包文件信息列表中则启动该安卓应用,否则扫描该安卓应用将扫描结果保存到包文件信息列表中后启动该安卓应用,结束本流程。
进一步地,所述步骤7启动依赖关系列表中的服务时,将第一安卓应用设置为挂起状态,并将第一安卓应用加入挂起应用列表中,若此时安卓兼容环境中产生安卓应用响应超时消息且所述安卓应用响应超时消息相关的安卓应用存在于挂起应用列表中,则令该安卓应用重启活动,若重启失败则通知活动管理器服务重新启动该安卓应用;若不存在,则按照安卓系统的现有流程进行处理。
进一步地,所述步骤8中还包括:在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,若被依赖的安卓应用存在于包文件信息列表中则启动该安卓应用,同时将第一安卓应用设置为挂起状态,并将第一安卓应用加入挂起应用列表中,否则扫描该安卓应用将扫描结果保存到包文件信息列表中后启动该安卓应用,同时将第一安卓应用设置为挂起状态,并将第一安卓应用加入挂起应用列表中;若此时安卓兼容环境中产生安卓应用响应超时消息且所述安卓应用响应超时消息相关的安卓应用存在于挂起应用列表中,则令该安卓应用重启活动,若重启失败则通知活动管理器服务重新启动该安卓应用;若不存在,则按照安卓系统的现有流程进行处理。
进一步地,所述快速启动方法还包括在安卓兼容环境启动后启动第二安卓应用的过程:
S1、安卓应用显示单元将获取到的第二安卓应用的安装包文件全路径发送至安卓兼容环境内的包管理服务;
S2、包管理服务扫描安装包文件全路径得到第二安卓应用的包解析数据,将包解析数据中的包名和LaunchActivity名发送至安卓应用显示单元,并将包解析数据更新到包文件信息列表中;
S3、安卓应用显示单元将包名、LaunchActivity名及安装包文件全路径发送至安卓兼容环境内的活动管理服务完成第二安卓应用的启动。
进一步地,所述快速启动方法还包括在安卓应用的安装及更新过程提取安卓应用的包名及包解析数据,并将提取到的数据添加或更新到包文件信息列表中。
进一步地,所述步骤8中的若被依赖的安卓应用存在于包文件信息列表的判断方式为:在安卓系统的启动活动函数的执行过程中判断包管理服务是否已完成对待启动的安卓应用的扫描操作。
进一步地,所述扫描操作由包管理服务的scanPackageTracedLI实现。
进一步地,所述启动活动函数为startActivity。
进一步地,所述步骤7中的启动依赖关系列表中的服务的过程为:在安卓系统的获取服务函数执行过程中,通过服务名称判断依赖关系列表中的服务是否已被启动,如果是则执行安卓兼容环境的启动流程;如果不是则在启动服务后执行安卓兼容环境的启动流程。
进一步地,所述获取服务函数为getService或getSystemService。
有益效果:
本发明通过减少APK的扫描、加速启动服务及预启动服务等方式优化了安卓兼容环境中安卓应用的启动过程中APK扫描、硬件初始化以及各服务的启动等过程,有效缩短了安卓应用的启动时间,改善了用户体验。
附图说明
图1为本发明提供的一种安卓兼容环境中安卓应用的快速启动方法的流程图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
为了便于理解本发明提供的技术方案,现将与本发明相关的技术名词列举如下:
LXC容器(Linux Container),是一种Linux系统的内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
活动管理器服务(ActivityManagerService),是用于管理运行中Activity的安卓系统的系统服务。窗口管理器服务(WindowManagerService),是用于管理窗口、窗口动画和Surface的安卓系统的系统服务。包管理服务(PackageManagerService),是用于管理安卓系统中APK、jar包等文件的安卓系统的系统服务。其中,APK(Android Package)文件是指安卓安装包文件,是安卓系统应用格式文件;JAR(Java Archive)文件,即Java归档文件,是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
在安卓应用的安装与卸载过程中,包管理服务通过扫描安卓应用的APK文件生成类型为PackageParser.Package的数据结构,该数据结构中保存了该安卓应用的包名、ABI、版本号及launchActivity等信息,其中,ABI(Application Binary Interface)是用于定义函数库的调用及安卓应用的二进制文件(尤其是“.so”文件)如何在相应的系统平台上运行等细节的文件。本发明中,将类型为PackageParser.Package的数据结构称为包解析数据。
通过分析可以确定,安卓兼容环境中安卓应用的启动过程中,耗时的操作包括APK扫描、硬件初始化以及各服务的启动等,因此,本发明考虑通过优化上述过程实现安卓应用的快速启动。本发明提供的一种安卓兼容环境中安卓应用的快速启动方法,其核心思想是:通过减少APK的扫描、加速启动服务及预启动服务等方式缩短安卓应用的启动时间。
本发明提供的一种安卓兼容环境中安卓应用的快速启动方法,流程如图1所示,包括以下步骤:
步骤1、用户启动安卓应用时,安卓应用显示单元获取该安卓应用的包名、LaunchActivity名及安装包文件的全路径,作为安卓应用的待启动包名、待启动LaunchActivity名及待启动全路径。
步骤2、安卓应用显示单元根据待启动包名在安卓应用依赖关系列表中查找该安卓应用所依赖的服务和安卓应用,若存在则将其所依赖的服务和安卓应用的名称分别添加到待启动服务列表和待扫描应用列表中,再执行步骤3;若不存在则执行步骤6。其中,安卓应用依赖关系列表,用于保存安卓应用与其所依赖的服务及安卓应用之间的依赖关系,此外,为了提高执行效率安卓应用依赖关系列表中还可以包含其所依赖的服务和安卓应用的安装包文件的信息,安装包文件的信息包括安装包文件的包名、版本号和文件路径。
步骤3、按照安卓兼容环境的通用模式,正常启动安卓兼容环境的活动管理器服务及窗口管理器服务。
步骤4、启动包管理服务,包括以下步骤:
步骤4.1、按照待启动服务列表和待扫描应用列表在安卓应用依赖关系列表中查找安卓应用所依赖的服务和安卓应用的安装包文件作为依赖包文件,将获取的安装包文件的信息作为依赖包文件信息,将依赖包文件信息加入待扫描包文件列表。其中,待扫描包文件列表用于保存安卓应用的启动过程中需要扫描的包文件的信息。
步骤4.2、根据步骤4.1得到的依赖包文件信息在包文件信息列表中查找依赖包文件的解析信息作为依赖包解析信息,依赖包解析信息包括依赖包文件的包名、版本号及包解析数据,将依赖包解析信息保存到依赖包解析信息列表中。其中,包文件信息列表用于保存安卓系统中安装包文件的包名、版本号及包解析数据。
步骤4.3、遍历待扫描包文件列表中的依赖包文件,若该依赖包文件同时存在于依赖包解析信息列表中,则执行步骤4.4;否则,扫描该依赖包文件得到其对应的包名、版本号及包解析数据,再将包名、版本号及包解析数据更新到包文件信息列表和依赖包解析信息列表中,执行步骤4.4。
步骤4.4、根据待启动服务列表启动安卓应用所依赖的服务。
步骤5、根据待启动包名、待启动LaunchActivity名及待启动全路径启动安卓应用,在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,当被依赖的安卓应用启动时若其存在于包文件信息列表中,则直接启动被依赖的安卓应用,否则扫描被依赖的安卓应用,并将扫描结果保存到包文件信息列表中后启动被依赖的安卓应用,结束本流程。
步骤6、按照安卓兼容环境的通用模式正常启动安卓兼容环境,根据待启动包名、待启动LaunchActivity名及待启动全路径启动安卓应用,在ART模式下获取安卓应用依赖的服务和安卓应用,将安卓应用及获取到的服务和安卓应用增加到安卓应用依赖关系列表及包文件信息列表中。
步骤7、当启动依赖的服务时,若存在安卓应用依赖关系列表中的服务未启动,则启动依赖的服务后完成安卓应用的启动流程;若安卓应用依赖关系列表中的服务均已启动,则完成安卓应用的启动流程。
步骤8、在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,当被依赖的安卓应用启动时若被依赖的安卓应用存在于包文件信息列表中,则直接启动被依赖的安卓应用,否则扫描被依赖的安卓应用,并将扫描结果保存到包文件信息列表中后启动被依赖的安卓应用,结束本流程。
为了进一步地提高安卓应用的启动速度,本发明增加了在安卓应用的安装及更新过程中提取安卓应用的包名、版本号及包解析数据,并将提取到的数据添加或更新到包文件信息列表中。
在本发明中由于在安卓应用启动的过程中,其他服务和安卓应用的启动是根据是否实际需要来确定的,而且有些启动过程中可能还需要对安装包进行扫描,这些处理过程比通常情况下安卓应用的启动过程可能会花费稍长的时间,从而使安卓应用的启动过程发生调用超时的问题,进而导致安卓兼容环境误判安卓应用的进程产生故障而杀死安卓应用进程。进一步地,为了避免上述情况的出现,提高本发明提供的安卓兼容环境中安卓应用的快速启动方法执行的可靠性,将上述步骤7中增加以下处理机制:
在安卓应用的启动过程中,当启动依赖的服务时,若存在安卓应用依赖关系列表中的服务未启动,则将安卓应用设置为挂起状态,并将安卓应用加入挂起应用列表中后,启动依赖的服务;若安卓应用依赖关系列表中的服务均已启动,则完成依赖的服务的启动过程;
当启动依赖的安卓应用时,若依赖的安卓应用未被扫描,则扫描该安卓应用获取包名、版本号及包解析数据作为扫描结果,并将扫描结果保存到安卓应用依赖关系列表中,将安卓应用设置为挂起状态,并将安卓应用加入挂起应用列表中后,启动依赖的安卓应用;若依赖的安卓应用均已被扫描,则启动依赖的安卓应用;
当安卓兼容环境监测到安卓应用响应超时消息时,判断安卓应用响应超时消息相关的安卓应用是否存在于挂起应用列表中,若存在则忽略安卓应用响应超时消息,此时若安卓应用产生异常则调用该安卓应用的relaunchActivity方法,若执行后仍然发生异常则通知活动管理器服务重新启动安卓应用;若不存在,则按照安卓系统的现有流程进行处理。
进一步地,本发明还提供了针对安卓兼容环境启动后启动安卓应用这类情况安卓应用的快速启动方法,包括以下步骤:
步骤1-1、安卓应用显示单元获取安卓应用的安装包文件全路径;
步骤1-2、安卓应用显示单元将安装包文件全路径发送至安卓兼容环境内的包管理服务;
步骤1-3、包管理服务扫描安装包文件全路径得到安卓应用的包解析数据,根据包解析数据得到安卓应用的包名、版本号和LaunchActivity名,将包名和LaunchActivity名发送至安卓应用显示单元,同时将包名、版本号及包解析数据更新到包文件信息列表中;
步骤1-4、安卓应用显示单元将包名、LaunchActivity名及安装包文件全路径发送至安卓兼容环境内的活动管理服务完成安卓应用的启动。
实施例1:
本实施例在现有安卓兼容环境的实现方案xDroid中采用本发明提供的一种安卓兼容环境中安卓应用的快速启动方法实现了对安卓应用的快速启动,具体包括以下步骤:
S1、用户双击桌面系统中安卓应用的快捷方式启动安卓应用,启动的参数为安卓应用的PackageName和LaunchActivityName及APK的全路径。
S2、xDroidUI启动LXC容器,并在LXC容器中执行安卓兼容环境的初始化进程,修改SystemServer的启动过程以使启动过程仅启动必要的服务和安卓应用,具体包括以下步骤:
S2.1、采用PackageName从安卓应用依赖关系列表(命名为xDroidAppInfoList.conf)中查询安卓应用所依赖的服务和安卓应用,如果存在,则将其所依赖的服务及安卓应用的名称添加到待启动服务应用列表appNeededServices,则执行步骤S2.2;如果不存在,则执行S4;
S2.2、正常启动ActivityManagerService和WindowManagerService;
S2.3、启动PackageManagerService,采用PackageName查询xDroidAppInfoList.conf文件中的记录,得到安卓应用所依赖的服务和安卓应用的Apk文件列表,将Apk文件的信息添加到待扫描包文件列表apkListToScan中,Apk文件的信息包括包名、版本号、Apk文件路径等;
S2.4、将xDroidPackageInfoList.conf中记录的包信息读取到packageInfoList,每个包的信息为类型为PackageParser.Package的数据结构;
S2.5、遍历apkListToScan中的Apk,通过Apk对应的包名和版本号在packageInfoList中查询,如存在包名和版本号均一致的记录,则返回类型为PackageParser.Package的数据结构作为查询结果(packageResult);如果不存在,则调用scanPackageTracedLI函数解析Apk文件,生成类型为PackageParser.Package的数据结构作为查询结果(packageResult);
S2.6、将packageResult加入packageInfoList,并保存到xDroidPackageInfoList.conf中,返回packageResult;
S3、根据packageResult启动appNeededServices中的服务;
S4、通过ART获取安卓应用依赖的服务和安卓应用,包括以下步骤:
S4.1、当检测到对getService和getSystemService的调用后,提取这两个函数的服务名参数,并记录到xDroidAppInfoList.conf中;
S4.1、当检测到对Intent的创建操作后,提取package名称参数,并记录到xDroidAppInfoList.conf中;
S5、 按需启动服务和应用,包括以下步骤:
S5.1、修改系统的getService/getSystemService函数,执行以下步骤:
通过服务名判断该服务是否已启用,如果已启动则执行安卓的标准流程;如果未启动,则启动该服务,并将安卓应用的PackageName加入pendingAppList中,再将服务的信息添加到安卓应用依赖关系列表中;执行系统标准的getService/getSystemService步骤;
S5.2、修改系统的startActivity函数,执行以下步骤:
判断准备启动的应用是否已被PackageManagerService扫描,如果未被扫描则通知PackageManagerService调用scanPackageTracedLI扫描该应用对应的Apk,并通知PackageManagerService更新包文件信息列表;并将安卓应用的PackageName加入pendingAppList中,再将安卓应用的信息添加到安卓应用依赖关系列表中;执行系统标准的startActivity步骤;
S5.3、getService/getSystemService和startActivity的超时处理过程:
修改ActiveServices的ANR处理机制:当产生ANR后,判断ANR的安卓应用是否在pendingAppList中,如果在,则忽略ANR,如此时应用发生异常,则调用应用的relaunchActivity,如此时应用发生异常,则当安卓应用所依赖的服务及安卓应用均已启动后,通知活动管理服务重启此应用。
此外,本实施例中对PackageManagerService的更新应用和安装应用的函数进行了如下修改:
更新应用:在更新应用过程中,调用scanPackageTracedLI结束后,用scanPackageTracedLI的结果替代packageInfoList和xDroidPackageInfoList.conf中包名相同的记录;安装应用:在安装应用过程中,调用scanPackageTracedLI结束后,将scanPackageTracedLI的结果加入packageInfoList和xDroidPackageInfoList.conf中。
进一步地,在安卓兼容环境启动后,当用户启动安卓应用A时,执行以下步骤:
xDroidUI获取安卓应用A的Apk文件全路径apkFullPath;
xDroidUI通过RPC通知PackageManagerService,调用scanPackageTracedLI扫描apkFullPath,并从该函数的返回结果(PackageParser.Package)中获取PackageName和LaunchActivityName,并传递给xDroidUI,最后通知PackageManagerService更新当前包信息列表;
xDroidUI通过RPC获取的PackageName和LaunchActivityName传递给ActivityManagerService启动该应用。
通过实验过程可知,采用本发明提供的一种安卓兼容环境中安卓应用的快速启动方法启动安卓应用,能够将第一次启动的安卓应用的启动时间缩短为原有启动时间的30%,但是对于依赖为启动的服务的安卓应用来说,启动时间会增加7-10%。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种安卓兼容环境中安卓应用的快速启动方法,其特征在于,包括以下步骤:
步骤1、启动第一安卓应用,将第一安卓应用的包名、LaunchActivity名及安装包文件全路径,作为第一包名、第一LaunchActivity名及第一全路径;
步骤2、若依赖关系列表中存在第一安卓应用,则将第一安卓应用所依赖的服务及安卓应用分别添加到待启动服务列表和待扫描应用列表中,启动安卓兼容环境的活动管理器服务及窗口管理器服务后,执行步骤3;否则执行步骤7;其中,所述依赖关系列表用于保存安卓应用与其所依赖的安卓应用和服务间的依赖关系;
步骤3、启动包管理服务,将待启动服务列表和待扫描应用列表中的安装包文件作为依赖包文件,将依赖包文件的信息加入待扫描包文件列表,其中,所述待扫描包文件列表用于保存第一安卓应用启动中所需扫描的依赖包文件;
步骤4、从包文件信息列表中获取依赖包文件的依赖包解析信息,所述依赖包解析信息包括依赖包文件的包名及包解析数据,将依赖包解析信息保存到依赖包解析信息列表中,所述包解析数据是类型为PackageParser.Package的数据结构;
步骤5、遍历待扫描包文件列表中的依赖包文件,若其也存在于依赖包解析信息列表中,则执行步骤6;否则,扫描依赖包文件后,将得到的依赖包解析信息更新到包文件信息列表和依赖包解析信息列表中后,执行步骤6;
步骤6、根据待启动服务列表启动安卓应用所依赖的服务,再根据第一包名、第一LaunchActivity名及第一全路径启动第一安卓应用,在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,若被依赖的安卓应用存在于包文件信息列表中则启动该安卓应用,否则扫描该安卓应用将扫描结果保存到包文件信息列表中后启动该安卓应用,结束本流程;
步骤7、启动安卓兼容环境后,在ART模式下获取第一安卓应用依赖的服务和安卓应用,将第一安卓应用及获取到的服务和安卓应用添加到依赖关系列表及包文件信息列表中;启动依赖关系列表中的服务,完成安卓应用的启动;
步骤8、在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,若被依赖的安卓应用存在于包文件信息列表中则启动该安卓应用,否则扫描该安卓应用将扫描结果保存到包文件信息列表中后启动该安卓应用,结束本流程。
2.根据权利要求1所述的快速启动方法,其特征在于,所述步骤7启动依赖关系列表中的服务时,将第一安卓应用设置为挂起状态,并将第一安卓应用加入挂起应用列表中,若此时安卓兼容环境中产生安卓应用响应超时消息且所述安卓应用响应超时消息相关的安卓应用存在于挂起应用列表中,则令该安卓应用重启活动,若重启失败则通知活动管理器服务重新启动该安卓应用;若不存在,则按照安卓系统的现有流程进行处理。
3.根据权利要求1所述的快速启动方法,其特征在于,所述步骤8中还包括:在安卓应用的执行过程中监测其所依赖的安卓应用的启动过程,若被依赖的安卓应用存在于包文件信息列表中则启动该安卓应用,同时将第一安卓应用设置为挂起状态,并将第一安卓应用加入挂起应用列表中,否则扫描该安卓应用将扫描结果保存到包文件信息列表中后启动该安卓应用,同时将第一安卓应用设置为挂起状态,并将第一安卓应用加入挂起应用列表中;若此时安卓兼容环境中产生安卓应用响应超时消息且所述安卓应用响应超时消息相关的安卓应用存在于挂起应用列表中,则令该安卓应用重启活动,若重启失败则通知活动管理器服务重新启动该安卓应用;若不存在,则按照安卓系统的现有流程进行处理。
4.根据权利要求1所述的快速启动方法,其特征在于,所述快速启动方法还包括在安卓兼容环境启动后启动第二安卓应用的过程:
S1、安卓应用显示单元将获取到的第二安卓应用的安装包文件全路径发送至安卓兼容环境内的包管理服务;
S2、包管理服务扫描安装包文件全路径得到第二安卓应用的包解析数据,将包解析数据中的包名和LaunchActivity名发送至安卓应用显示单元,并将包解析数据更新到包文件信息列表中;
S3、安卓应用显示单元将包名、LaunchActivity名及安装包文件全路径发送至安卓兼容环境内的活动管理服务完成第二安卓应用的启动。
5.根据权利要求1所述的快速启动方法,其特征在于,所述快速启动方法还包括在安卓应用的安装及更新过程提取安卓应用的包名及包解析数据,并将提取到的数据添加或更新到包文件信息列表中。
6.根据权利要求1所述的快速启动方法,其特征在于,所述步骤8中的若被依赖的安卓应用存在于包文件信息列表的判断方式为:在安卓系统的启动活动函数的执行过程中判断包管理服务是否已完成对待启动的安卓应用的扫描操作。
7.根据权利要求6所述的快速启动方法,其特征在于,所述扫描操作由包管理服务的scanPackageTracedLI实现。
8.根据权利要求6所述的快速启动方法,其特征在于,所述启动活动函数为startActivity。
9.根据权利要求1所述的快速启动方法,其特征在于,所述步骤7中的启动依赖关系列表中的服务的过程为:在安卓系统的获取服务函数执行过程中,通过服务名称判断依赖关系列表中的服务是否已被启动,如果是则执行安卓兼容环境的启动流程;如果不是则在启动服务后执行安卓兼容环境的启动流程。
10.根据权利要求9所述的快速启动方法,其特征在于,所述获取服务函数为getService或getSystemService。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210792238.7A CN114860327B (zh) | 2022-07-07 | 2022-07-07 | 一种安卓兼容环境中安卓应用的快速启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210792238.7A CN114860327B (zh) | 2022-07-07 | 2022-07-07 | 一种安卓兼容环境中安卓应用的快速启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114860327A true CN114860327A (zh) | 2022-08-05 |
CN114860327B CN114860327B (zh) | 2022-09-23 |
Family
ID=82625790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210792238.7A Active CN114860327B (zh) | 2022-07-07 | 2022-07-07 | 一种安卓兼容环境中安卓应用的快速启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860327B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115292721A (zh) * | 2022-10-09 | 2022-11-04 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境适配多Linux内核的启动方法 |
CN115879098A (zh) * | 2023-02-20 | 2023-03-31 | 北京麟卓信息科技有限公司 | 一种基于原子事务操作的安卓应用安装优化方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130111202A1 (en) * | 2010-08-06 | 2013-05-02 | Zte Corporation | Method and device for cold starting android mobile terminal |
CN106775876A (zh) * | 2016-12-21 | 2017-05-31 | 海马云(天津)信息技术有限公司 | 安卓系统快速启动应用的方法 |
CN113254154A (zh) * | 2021-05-21 | 2021-08-13 | 技德技术研究所(武汉)有限公司 | 一种在Linux上兼容运行Android系统的应用启动方法及装置 |
US20210294623A1 (en) * | 2018-12-07 | 2021-09-23 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and server |
CN113849200A (zh) * | 2021-12-01 | 2021-12-28 | 北京麟卓信息科技有限公司 | 一种安卓应用在安卓兼容环境中的安装优化方法及系统 |
CN113934464A (zh) * | 2021-12-14 | 2022-01-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中启动安卓应用的方法、装置和电子设备 |
CN114201087A (zh) * | 2022-02-17 | 2022-03-18 | 北京麟卓信息科技有限公司 | 一种安卓应用图标在Linux任务栏的显示方法 |
CN114217879A (zh) * | 2021-12-23 | 2022-03-22 | 湖南小算科技信息有限公司 | 一种用于程序启动运行突破安卓幽灵进程限制的方法 |
CN114546717A (zh) * | 2022-01-17 | 2022-05-27 | 北京讯通安添通讯科技有限公司 | 安卓智能终端开机的方法、装置、智能终端和存储介质 |
CN114579209A (zh) * | 2022-05-06 | 2022-06-03 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中应用启动时屏幕显示方式的设置方法 |
-
2022
- 2022-07-07 CN CN202210792238.7A patent/CN114860327B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130111202A1 (en) * | 2010-08-06 | 2013-05-02 | Zte Corporation | Method and device for cold starting android mobile terminal |
CN106775876A (zh) * | 2016-12-21 | 2017-05-31 | 海马云(天津)信息技术有限公司 | 安卓系统快速启动应用的方法 |
US20210294623A1 (en) * | 2018-12-07 | 2021-09-23 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and server |
CN113254154A (zh) * | 2021-05-21 | 2021-08-13 | 技德技术研究所(武汉)有限公司 | 一种在Linux上兼容运行Android系统的应用启动方法及装置 |
CN113849200A (zh) * | 2021-12-01 | 2021-12-28 | 北京麟卓信息科技有限公司 | 一种安卓应用在安卓兼容环境中的安装优化方法及系统 |
CN113934464A (zh) * | 2021-12-14 | 2022-01-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中启动安卓应用的方法、装置和电子设备 |
CN114217879A (zh) * | 2021-12-23 | 2022-03-22 | 湖南小算科技信息有限公司 | 一种用于程序启动运行突破安卓幽灵进程限制的方法 |
CN114546717A (zh) * | 2022-01-17 | 2022-05-27 | 北京讯通安添通讯科技有限公司 | 安卓智能终端开机的方法、装置、智能终端和存储介质 |
CN114201087A (zh) * | 2022-02-17 | 2022-03-18 | 北京麟卓信息科技有限公司 | 一种安卓应用图标在Linux任务栏的显示方法 |
CN114579209A (zh) * | 2022-05-06 | 2022-06-03 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中应用启动时屏幕显示方式的设置方法 |
Non-Patent Citations (2)
Title |
---|
NAMEYUXIANG: "Android深度性能优化--启动优化(一篇就够)", 《HTTPS://ZHUANLAN.COM/P/111435857》 * |
XIAODONG LIU等: "KMRE:An Efficient and Compatible Runtime to Execute Android Application on Linus System", 《2021 7TH INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATIONS(ICCC)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115292721A (zh) * | 2022-10-09 | 2022-11-04 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境适配多Linux内核的启动方法 |
CN115879098A (zh) * | 2023-02-20 | 2023-03-31 | 北京麟卓信息科技有限公司 | 一种基于原子事务操作的安卓应用安装优化方法 |
CN115879098B (zh) * | 2023-02-20 | 2023-05-05 | 北京麟卓信息科技有限公司 | 一种基于原子事务操作的安卓应用安装优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114860327B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114860327B (zh) | 一种安卓兼容环境中安卓应用的快速启动方法 | |
US11106446B2 (en) | Preinstalled application management method for mobile terminal and mobile terminal | |
US6353928B1 (en) | First run installer | |
US8056072B2 (en) | Rebootless display driver upgrades | |
US8234359B2 (en) | System and method for remotely re-imaging a computer system | |
KR101516504B1 (ko) | 인스톨 방법 및 장치 | |
US20090094596A1 (en) | Systems and methods for an adaptive installation | |
CN109614167B (zh) | 一种管理插件的方法和系统 | |
US7146531B2 (en) | Repairing applications | |
CN107220074B (zh) | 对支撑层软件功能的访问、升级方法及装置 | |
KR20120139692A (ko) | 가상화를 위한 확장 포인트 선언적 등록 | |
US11379250B2 (en) | Selective application and data offloading | |
US20070180433A1 (en) | Method to enable accurate application packaging and deployment with optimized disk space usage | |
US20130086572A1 (en) | Generation apparatus, generation method and computer readable information recording medium | |
CN116880877A (zh) | 虚拟机增强工具升级方法、装置、计算机设备和存储介质 | |
CN115129740B (zh) | 一种云原生环境下的分布式微服务数据库更新方法及系统 | |
CN111240589B (zh) | 基于分区隔离的系统管理方法、装置、设备及存储介质 | |
CN115562732A (zh) | 一种开机方法、电子设备及计算机存储介质 | |
CN116400945B (zh) | 一种动态链接库升级方法、电子设备及存储介质 | |
WO2020033112A1 (en) | Handling file commit and commit-delete operations in an overlay optimizer | |
CN116541104B (zh) | 程序管理方法、控制装置、平台、设备以及存储介质 | |
CN114143394B (zh) | 一种可卸载并且可恢复安装的应用预装与卸载方法 | |
US11436062B2 (en) | Supporting universal windows platform and Win32 applications in kiosk mode | |
US11340883B2 (en) | Installing, updating or reconfiguring an application without disabling a write filter | |
JP2009301472A (ja) | 情報端末、アプリケーション管理システム、端末アプリケーション管理方法及びアプリケーション管理方法 |
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 |