CN112313620A - 安卓系统启动的方法、装置、设备及存储介质 - Google Patents
安卓系统启动的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112313620A CN112313620A CN201980040209.1A CN201980040209A CN112313620A CN 112313620 A CN112313620 A CN 112313620A CN 201980040209 A CN201980040209 A CN 201980040209A CN 112313620 A CN112313620 A CN 112313620A
- Authority
- CN
- China
- Prior art keywords
- service
- init
- loading
- java
- lazy
- 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
- 238000000034 method Methods 0.000 title claims abstract description 183
- 238000013515 script Methods 0.000 claims abstract description 118
- 239000007858 starting material Substances 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims description 118
- 238000004590 computer program Methods 0.000 claims description 72
- 238000004891 communication Methods 0.000 claims description 4
- 239000010410 layer Substances 0.000 description 50
- 230000018109 developmental process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 239000011230 binding agent Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000012792 core layer Substances 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种安卓系统启动的方法、装置、终端设备、拍摄装置以及存储介质,包括:所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,第一init服务包括java启动服务(S101);在加载java启动服务后,加载第一java服务(S102);在加载第一java服务完成后,启动桌面启动器完成安卓系统的启动;第二init服务和第二java服务能够在安卓系统启动完成后被加载(S103)。
Description
技术领域
本申请涉及操作系统技术领域,尤其涉及一种安卓系统启动的方法、装置、终端设备、拍摄装置及存储介质。
背景技术
安卓(Android)系统具有开机慢的问题。该问题在使用Android系统的设备中是常见问题。
现在已经有一些相近的技术可以加快Android系统启动速度。例如:延迟加载应用程序(APP,Application)技术(即将不必开机启动的APP延迟启动),异步加载框架(即将框架层中相互无依赖关系的模块异步加载)技术。
但是,延迟加载APP技术不适用于只具备极少数APP的设备软件系统(例如相机软件系统),无法从更底层对系统进行启动优化;异步加载框架技术受限于CPU个数。
发明内容
基于此,本申请提供一种安卓系统启动的方法、装置、终端设备、拍摄装置及存储介质。
第一方面,本申请提供了一种安卓系统启动的方法,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述方法包括:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
第二方面,本申请提供了一种安卓系统启动的装置,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述装置包括:存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
第三方面,本申请提供了一种终端设备,所述终端设备的操作系统包括安卓系统,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述终端设备包括:处理器、和与所述处理器连接的存储器、输入输出设备及通信电路;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
第四方面,本申请提供了一种拍摄装置,所述拍摄装置的操作系统包括安卓系统,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述拍摄装置包括:处理器、和存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
第五方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上所述的安卓系统启动的方法。
本申请实施例提供了一种安卓系统启动的方法、装置、终端设备、拍摄装置及存储介质,安卓系统中的init服务包括第一init服务和第二init服务;安卓系统的java服务包括第一java服务和第二java服务,所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中第一init服务包括java启动服务;在加载java启动服务后,加载第一java服务;在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载。相比较于安卓系统的正常启动流程,由于本申请实施例的安卓系统启动时,仅加载init服务中的第一init服务和java服务中的第一java服务,并没有加载全部的init服务和java服务,在加载第一java服务完成后启动桌面启动器,即完成安卓系统的启动,通过这种方式,能够大幅度加快安卓系统的启动速度,同时没有增加系统启动阶段内的进程/线程切换开销;由于另一部分第二init服务和第二java服务能够在安卓系统启动完成后被加载,通过这种方式,能够保障安卓系统的完整性;本申请实施例的启动方法是从更底层(框架层和本地库/运行时)对系统进行启动优化,其启动过程与设备软件系统具有的APP数量没有关系,特别是对仅包含少量APP的定制安卓系统(例如相机),本申请能够达到更加突出的启动优化效果;其启动过程与CPU个数没有关系,因此不受APP数量的限制,也不受限于CPU个数。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是安卓系统的架构一划分方式的示意图;
图2是安卓系统的正常启动流程示意图;
图3是安卓系统正常启动流程中init脚本分散加载示意图;
图4是本申请安卓系统启动的方法一实施例的流程示意图;
图5是本申请安卓系统启动的方法另一实施例的流程示意图;
图6是本申请安卓系统启动的方法又一实施例的流程示意图;
图7是本申请安卓系统启动的方法又一实施例的流程示意图;
图8是本申请安卓系统启动的方法又一实施例的流程示意图;
图9是本申请安卓系统启动的方法又一实施例的流程示意图;
图10是本申请安卓系统启动的装置一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
安卓(Android)系统开机慢是使用Android系统的设备的常见问题。现在可以加快Android系统启动速度的方法包括:延迟加载APP技术和异步加载框架技术。但是,延迟加载APP技术不适用于只具备极少数APP的设备软件系统,无法从更底层对系统进行启动优化;异步加载框架技术受限于CPU个数。
为了更好地说明和理解本申请实施例的相关内容,先介绍一下有关安卓系统的架构、安卓系统的正常启动流程等相关内容。
参见图1,图1是安卓系统的架构一划分方式的示意图。在本实施例划分方式的架构模型中,Android系统自上而下分为5个层次:应用层1、框架层2、本地库/运行时3、硬件抽象层4以及内核层5。框架层2和本地库/运行时3是安卓系统的核心部分,每个安卓应用的开发者都是在此基础上进行应用开发的。
应用层1指在Android系统上安装并运行的各类应用程序APP,是安卓系统直接面向用户的部分。它不仅包括通话、短信、联系人等系统应用(随安卓系统一起预装在安卓的设备上),还包括其他后续安装到设备中的第三方应用。
框架层2,即应用程序框架层,是安卓系统中最核心的部分。主要包含两部分:android SDK和安卓系统的Java服务,二者之间通过Binder通信机制进行跨进程交互。android SDK用于提供构建应用程序可能用到的各种API(Application ProgrammingInterface,应用程序接口),Android自带的一些核心应用和开发者构建的应用程序就是使用这些API完成的,用来支持应用层1中的程序的运行;安卓系统的Java服务是指安卓系统的框架层2向应用层1所能够提供的相对完整的系统服务。通常情况下,安卓系统的Java服务包括官方提供的安卓系统的框架层2向应用层1所能够提供的系统服务(通常也是较为完整的)。安卓系统的Java服务包括:活动管理服务(Activity Manager)、窗口管理服务(Window Manager)、内容提供服务(Content Providers)、视图系统(View System)、通知管理服务(Notification Manager)、安装包管理服务(Package Manager)、电话管理服务(Telephony Manager)、资源管理服务(Resource Manager)、位置管理服务(LocationManager)、电源管理服务、通话管理服务、Wifi管理服务、账号管理服务、状态栏通知管理服务、硬件服务等。它们有各自的功能,例如:活动管理服务(Activity Manager)用来管理程序的生命周期,跳转回退等功能;比如开启应用程序需要的资源、退出应用程序时所需要的释放资源。窗口管理服务(Window Manager)主要用来管理所有开启的窗口程序。内容提供服务(Content Providers)使应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们的数据。视图系统(View System)可以用来构建应用程序,包括列表显示listview、网格显示gridview、文本框textbox、按钮button、图形绘制等,以及可嵌入的web浏览器。
本地库/运行时3包含安卓系统的初始化init服务、系统运行所需的基础运行库,以及运行Java程序所需的ART虚拟机。安卓系统的init服务是指安卓系统所能够提供的相对完整的init脚本(即*.rc配置文件)中记录的服务。通常情况下,安卓系统的init服务包括官方提供的安卓系统所能够提供的init脚本(即*.rc配置文件,通常也是较为完整的)中记录的服务。安卓系统的init服务包括:core服务(包括:ueventd、logd、healthd、adbd(disabled)、lmkd(LowMemoryKiller)、servicemanager、vold、debuggerd、surfaceflinger、bootanim(disabled)等)、main服务、zygote服务等。
硬件抽象层4主要包含一些驱动程序的用户层封装,向上提供符合Android规范的硬件抽象层接口,在一些资料中也被认为和“本地库/运行时3”为同一层。
内核层5包含一个Linux内核,提供基本的进程管理、内存管理、进程调度等操作系统功能。
在Android系统中,用户通过触摸屏、按键、语音等方式与APP交互,而APP则通过框架层2的android SDK访问java服务或init服务,而java服务或init服务则继续通过Binder或Socket或其他方式与设备更底层进行交互,从而实现APP访问系统资源的目的。
结合参见图2,图2是安卓系统的正常启动流程示意图。如图所示,在所述安卓系统的内核层启动完成后,Android系统的启动流程主要涉及三个层面,按照启动顺序依次是:本地库/运行时、框架层以及应用层。
本地库/运行时,第一个进程init最先启动,它解析系统中的各类init脚本(*.rc文件),并加载记录在这些*.rc文件中的init服务。
在init进程启动阶段的中后期,会启动一个名为孵化(zygote)的init服务,它会启动一个名为app_process64的可执行程序。app_process64开始运行后,会加载ART虚拟机,进入java的世界。从此系统进入框架层继续启动。
在框架层中,app_process64将自身进程改名为zygote进程,并复制出一份自身进程,执行系统服务器(SystemServer)进程的初始化流程。而zygote进程本身,则等待其他进程连接,确定是否复制出新的子进程去执行APP的启动过程。SystemServer进程是Android系统中众多java服务运行所在的进程。SystemServer中会启动许多java服务,比如:网络服务、电话服务、蓝牙服务等。这些诸多java服务和一些init服务共同构建Android系统丰富的功能。
在SystemServer进程加载java服务结束后,会启动系统中应用层的第一个APP,即桌面启动器launcher。Launcher启动第一个activity启动完成后,整个Android系统启动完成。
结合参见图3,图3是安卓系统正常启动流程中init脚本分散加载示意图。Android系统的init进程是个极特殊的进程:它是系统中第一个被启动的进程,同时也是很多系统进程的父进程。如图所示,init进程在启动阶段,会依次读取/init.rc、/system/etc/init/*.rc、/vendor/etc/init/*.rc等多个*.rc文件,并加载记录在这些*.rc文件中的init服务。
相比较于安卓系统的正常启动流程,由于本申请实施例的安卓系统启动时,仅加载init服务中的第一init服务和java服务中的第一java服务,并没有加载全部的init服务和java服务,在加载第一java服务完成后启动桌面启动器,即完成安卓系统的启动,通过这种方式,能够大幅度加快安卓系统的启动速度,同时没有增加系统启动阶段内的进程/线程切换开销;由于另一部分第二init服务和第二java服务能够在安卓系统启动完成后被加载,通过这种方式,能够保障安卓系统的完整性;本申请实施例的启动方法是从更底层(框架层和本地库/运行时)对系统进行启动优化,其启动过程与设备软件系统具有的APP数量没有关系,特别是对仅包含少量APP的定制安卓系统(例如相机),本申请能够达到更加突出的启动优化效果;其启动过程与CPU个数没有关系,因此不受APP数量的限制,也不受限于CPU个数。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
参见图4,图4是本申请安卓系统启动的方法一实施例的流程示意图,在本实施例中,安卓系统中的init服务包括第一init服务和第二init服务;安卓系统的java服务包括第一java服务和第二java服务,安卓系统启动过程中,仅加载init服务中的第一init服务和java服务中的第一java服务。
该方法包括:
步骤S101:所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中第一init服务包括java启动服务。
步骤S102:在加载java启动服务后,加载第一java服务。
步骤S103:在加载第一java服务完成后,启动桌面启动器,从而完成安卓系统的启动;其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载。
本申请实施例将安卓系统中的init服务划分为两部分,一部分init服务(即第一init服务)跟随安卓系统一起加载,其对应的脚本即为第一init脚本;另一部分init服务(即第二init服务)不跟随安卓系统一起加载,其能够在安卓系统启动完成后被加载。本申请实施例将安卓系统中的java服务划分为两部分,一部分java服务(即第一java服务)跟随安卓系统一起加载,另一部分java服务(即第二java服务)不跟随安卓系统一起加载,其能够在安卓系统启动完成后被加载。由于java启动服务属于init服务,由于java启动服务启动后,才能加载跟随安卓系统一起加载的第一java服务,因此,第一init服务包括java启动服务。java启动服务通常是名为zygote的init服务。
其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载的时机可以有很多种方式。例如:安卓系统启动完成后,可以在空闲时间自动触发加载第二init服务和第二java服务。或者,安卓系统启动完成后,在系统检测到新应用程序被启动时,触发加载新应用程序可能需要使用的第二init服务和第二java服务。或者,安卓系统启动完成后,根据来自应用程序的指令触发加载指定的第二init服务和第二java服务,等等;其中应用程序的指令可以有以下实现方式:专门开发一个应用程序,该应用程序可以包括分别触发各个第二init服务和第二java服务的按钮,按钮的数量等于第二init服务和第二java服务的总数量,每个第二init服务或第二java服务对应一个按钮,当用户点击按钮时触发对应的第二init服务或第二java服务进行加载;或者,该应用程序可以包括一个复选框,每个复选框对应一个第二init服务或第二java服务,用户可以一次性选择多个第二init服务和第二java服务,从而可以一次性加载多个第二init服务和第二java服务,等等。
至于划分init服务为两部分的依据、划分java服务为两部分的依据是由开发者决定的,而开发者通常是根据具体的应用程序的要求和功能来决定的。通常可以将开发的应用程序不需要用到的init服务和java服务分别划分为第二init服务和第二java服务;而开发的应用程序需要用到的init服务和java服务分别划分为第一init服务和第一java服务;例如,对于一个没有拍照功能的设备,其安卓系统可以将相机相关服务划分为不跟随安卓系统一起加载的服务(即第二java服务);对于一个仅仅是拍照的相机设备,其安卓系统可以将电话相关服务划分为不跟随安卓系统一起加载的服务(即第二java服务)。又如,可以将所有应用程序都需要用到的init服务和java服务分别划分为第一init服务和第一java服务,而将只有部分、特定的应用程序才用到的init服务和java服务分别划分为第二init服务和第二java服务;等等。例如,活动管理服务、窗口管理服务、资源管理服务、电源管理服务等能够为所有应用程序所使用,将这些java服务分别划分为跟随安卓系统一起加载的第一java服务,而电话管理服务、视图系统等只为部分、特定的应用程序所使用,将这些java服务分别划分为不跟随安卓系统一起加载的第二java服务。
其中,步骤S101中所述安卓系统的内核层启动完成后解析并加载第一init脚本记录的第一init服务的实现方式很多,通常需要在编译阶段预先准备。通常情况下,所述安卓系统的内核层启动完成后,init进程是第一个启动的进程,init进程负责解析并加载第一init脚本记录的第一init服务。
例如:在android系统源码的编译阶段,开发者可以将第二init脚本(不跟随安卓系统一起加载的第二init服务对应的脚本)进行标记,标记成LOCAL_LAZY_INIT_RC,该标记的脚本记录的init服务为第二init服务,没有标记的第一init脚本(跟随安卓系统一起加载的第一init服务对应的脚本)记录的init服务为第一init服务,从而在机器层面将第二init脚本和第一init脚本区分开来,所述安卓系统的内核层启动完成后,需要init进程识别和区分,只解析并加载第一init脚本记录的第一init服务。
由于init进程识别和区分需要花费时间,在一实施例中,为了进一步加快启动时间,步骤S101中,解析并加载第一ini脚本记录的第一init服务,可以包括:自动解析并加载默认路径中的第一init脚本记录的第一init服务。即,仅将第一init脚本对应的文件存放在init进程能够自动解析并加载的默认路径中,例如:将第一init脚本对应的*.rc文件存放在/init.rc、/system/etc/init/*.rc、/vendor/etc/init/*.rc等中的至少一个默认路径中。
第二ini脚本对应的文件可以存放在另外非默认路径的空间中,也可以放在第二ini脚本记录的第二init服务可以被单独解析并加载的位置。存放在其它地方的第二ini脚本记录的第二init服务可以通过init进程进行解析和加载,也可以通过其它方式解析和加载,例如直接由应用程序临时调用并执行。
第二ini脚本记录的第二init服务通过其它方式解析和加载,通常难以保证系统的安全性,通过init进程解析和加载第二ini脚本记录的第二init服务能够保证系统的安全性,因此,在一实施例中,第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
例如:修改编译系统源码,对于带有前述标记的第二init脚本,可以将其对应的*.rc文件打包到/[system|vendor]/etc/lazy_init/目录,一方面可以避免在系统启动过程中init进程自动加载它们,另一方面,由于保存在系统目录中,可以在需要加载的时候,向init进程指定加载路径,init进程也能够解析并加载的这些第二ini脚本记录的第二init服务。
其中,步骤S102中,加载第一java服务的实现方式很多,通常需要在编译阶段预先准备。
例如:将第二java服务转移至其它位置;或者,不转移第二java服务,对不跟随安卓系统启动加载的第二java服务进行标记,以示与第一java服务区别,加载第一java服务而不加载第二java服务;或者,添加一个专门java服务,由该java服务专门管理不跟随安卓系统启动加载的第二java服务;等等。
通常情况下,java启动服务,即zygote服务加载后,它会启动一个名为app_process64的可执行程序。app_process64开始运行后,会加载ART虚拟机,进入java的世界。app_process64将自身进程改名为zygote进程,并复制出一份自身进程,执行SystemServer进程的初始化流程。SystemServer进程是Android系统中众多java服务运行所在的进程。
需要说明的是,本申请实施例中第二init服务的数量可以为零或者第二java服务的数量可以为零,第二init服务的数量与第二java服务的数量之和大于零,第一init服务的数量与第一java服务的数量之和小于安卓系统中的init服务的数量与java服务的数量之和。
本申请实施例安卓系统中的init服务包括第一init服务和第二init服务;安卓系统的java服务包括第一java服务和第二java服务,所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中第一init服务包括java启动服务;在加载java启动服务后,加载第一java服务;在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载。相比较于安卓系统的正常启动流程,由于本申请实施例的安卓系统启动时,仅加载init服务中的第一init服务和java服务中的第一java服务,并没有加载全部的init服务和java服务,在加载第一java服务完成后启动桌面启动器,即完成安卓系统的启动,通过这种方式,能够大幅度加快安卓系统的启动速度,同时没有增加系统启动阶段内的进程/线程切换开销;由于另一部分第二init服务和第二java服务能够在安卓系统启动完成后被加载,通过这种方式,能够保障安卓系统的完整性;本申请实施例的启动方法是从更底层(框架层和本地库/运行时)对系统进行启动优化,其启动过程与设备软件系统具有的APP数量没有关系,特别是对仅包含少量APP的定制安卓系统(例如相机),本申请能够达到更加突出的启动优化效果;其启动过程与CPU个数没有关系,因此不受APP数量的限制,也不受限于CPU个数。
为了保证安卓系统中的第二init服务和第二java服务在安卓系统启动完成后被加载的安全性问题,也为了最大限度简化开发步骤、最大限度保证安卓系统的完整性,在一实施例中,在编译阶段添加一个专门java服务,该专门java服务跟随安卓系统的启动而加载,为后续加载第二init服务和第二java服务提供专门服务,具体相关内容说明如下。
该专门java服务称为懒加载服务管理器,在步骤S102中,加载第一java服务,具体可以包括:使SystemServer进程加载第一java服务,第一java服务包括懒加载服务管理器和其它第一java服务,第二init服务和第二java服务能够在安卓系统启动完成后通过懒加载服务管理器被加载。
由于第二init服务和第二java服务能够在安卓系统启动完成后通过懒加载服务管理器被加载,通过这种方式,一方面可以为保证安卓系统的安全性,简化开发步骤、保证安卓系统的完整性提供支持,另一方面也可以为需要加载第二init服务和第二java服务时,提高第二init服务和第二java服务的加载速度提供支持。
参见图5,一具体应用中,在步骤S102中,使SystemServer进程加载第一java服务,还可以包括:子步骤S1021和子步骤S1022。
子步骤S1021:使SystemServer进程加载懒加载服务管理器。
子步骤S1022:通过懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
在本实施例中,第二java服务包括进行懒加载的java服务,第二init服务包括需要进行懒加载的init服务。SystemServer进程加载第一java服务时,同时加载新添加的载懒加载服务管理器,载懒加载服务管理器加载完成后,载懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。通过这种方式,能够在用户需要加载的时候,及时通过载懒加载服务管理器加载用户需要的第二init服务和第二java服务。
下面分两种情况说明在完成安卓系统的启动后,用户请求加载第二java服务和第二init服务的具体细节。
参见图6,在一实施例中,该方法还包括:步骤S201和步骤S202。
步骤S201:安卓系统启动完成后,通过懒加载服务管理器接收加载指定java服务的第一请求。
其中,懒加载服务管理器能够与应用程序通信,可以直接通过安卓系统提供的软件开发包与应用程序进行通信。通过这种方式,能够减小开发复杂度。在一应用中,第一请求来自应用程序。
步骤S202:根据第一请求,加载指定java服务。
具体地,上述标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系。通过这种方式,在接到第一请求时,能够快速响应快速加载指定java服务。
参见图7,此时步骤S202具体可以包括:子步骤S2021和子步骤S2022。
子步骤S2021:根据第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及懒加载java服务名称对应的加载代码。
子步骤S2022:加载懒加载java服务名称对应的加载代码。
在本实施例中,第一请求中携带的指定java服务的名称通常是面向用户的,简洁直观,而懒加载java服务名称通常是机器可以识别安卓系统中的java服务名称。根据已建立的指定java服务的名称与懒加载java服务名称之间的关系,再根据懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系,即可快速加载指定java服务。
在另一实施例中,懒加载服务管理器能够与init进程进行通信,通过这种方式,为使init进程加载第二init服务提供支持。
在一应用中,懒加载服务管理器能够通过init进程的ctrl.loadrc属性接口与init进程进行通信,init进程能够加载ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。在本实施例中,预先给init进程增加一个新属性接口ctrl.loadrc,懒加载服务管理器将请求加载指定第二init服务的相关参数发给属性接口ctrl.loadrc,属性接口ctrl.loadrc将这些相关参数附在属性中,init进程根据ctrl.loadrc属性接口的属性携带的参数,即可加载对应的第二init服务。
其中,参见图8,该方法还包括:步骤S301和步骤S302。
步骤S301:安卓系统启动完成后,通过懒加载服务管理器接收加载指定init服务的第二请求。
其中,懒加载服务管理器能够与应用程序通信,可以直接通过安卓系统提供的软件开发包与应用程序进行通信。通过这种方式,能够减小开发复杂度。在一应用中,第二请求来自应用程序。
步骤S302:根据第二请求,通过懒加载服务管理器使init进程解析并加载对应的第二init脚本记录的指定init服务。
具体地,上述标记的第二init服务包括懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;通过这种方式,在接到第二请求时,能够快速响应快速加载指定init服务。
参见图9,此时步骤S302具体可以包括:子步骤S3021和子步骤S3022。
子步骤S3021:根据第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径。
子步骤S3022:通过懒加载服务管理器使init进程按照懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
在本实施例中,第二请求中携带的指定init服务的名称通常是面向用户的,简洁直观,而懒加载init服务名称通常是机器可以识别安卓系统中的init服务名称。根据已建立的指定init服务的名称与懒加载init服务名称之间的关系,再根据懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系,即可快速获得指定init服务的名称的懒加载路径,将指定init服务的名称的懒加载路径(参数)发送给属性接口ctrl.loadrc,属性接口ctrl.loadrc将指定init服务的名称的懒加载路径作为属性携带,init进程即可快速按照懒加载路径解析并加载对应的懒加载init脚本记录的懒加载init服务。
在一具体实际应用中,在无损android系统完整性的前提下,能够获得更快的系统启动速度,具体是:在参考开发板hikey960上,基于A53 1.8GHz×3的处理器配置,通过将网络服务和Wifi服务(network/wifi)相关框架层服务延迟启动后,启动时间从4.6s降到了4.4s。
参见图10,图10是本申请安卓系统启动的装置一实施例的结构示意图,需要说明的是,本实施例的装置能够实现上述安卓系统启动的方法,相关内容的详细说明,请参见上述安卓系统启动的方法部分,在此不再赘叙。
安卓系统中的init服务包括第一init服务和第二init服务;安卓系统的java服务包括第一java服务和第二java服务,安卓系统启动的装置10包括:存储器11和处理器12;存储器11和处理器12通过总线13连接。
其中,处理器12可以是微控制单元、中央处理单元或数字信号处理器,等等。
其中,存储器11可以是Flash芯片、只读存储器、磁盘、光盘、U盘或者移动硬盘等等。
存储器11用于存储计算机程序;处理器12用于执行计算机程序并在执行计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中第一init服务包括java启动服务;在加载java启动服务后,加载第一java服务;在加载第一java服务完成后,启动桌面启动器,从而完成安卓系统的启动;其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载。
其中,处理器在执行计算机程序时,实现如下步骤:自动解析并加载默认路径中的第一init脚本记录的第一init服务。
其中,第二init服务的第二init脚本对应的文件放置在非默认路径中。
其中,第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
其中,处理器在执行计算机程序时,实现如下步骤:使SystemServer进程加载第一java服务,第一java服务包括懒加载服务管理器和其它第一java服务,第二init服务和第二java服务能够在安卓系统启动完成后通过懒加载服务管理器被加载。
其中,处理器在执行计算机程序时,实现如下步骤:使SystemServer进程加载懒加载服务管理器;通过懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
其中,处理器在执行计算机程序时,实现如下步骤:安卓系统启动完成后,通过懒加载服务管理器接收加载指定java服务的第一请求;根据第一请求,加载指定java服务。
其中,标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;处理器在执行计算机程序时,实现如下步骤:根据第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及懒加载java服务名称对应的加载代码;加载懒加载java服务名称对应的加载代码。
其中,懒加载服务管理器能够与init进程进行通信。
其中,处理器在执行计算机程序时,实现如下步骤:安卓系统启动完成后,通过懒加载服务管理器接收加载指定init服务的第二请求;根据第二请求,通过懒加载服务管理器使init进程解析并加载对应的第二init脚本记录的指定init服务。
其中,标记的第二init服务包括懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;处理器在执行计算机程序时,实现如下步骤:根据第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;通过懒加载服务管理器使init进程按照懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
其中,懒加载服务管理器能够通过init进程的ctrl.loadrc属性接口与init进程进行通信,init进程能够加载ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
其中,懒加载服务管理器能够与应用程序通信。
其中,第一请求或第二请求来自应用程序。
其中,懒加载服务管理器能够通过软件开发包与应用程序进行通信。
本申请还提供一种终端设备,该终端设备的操作系统包括安卓系统,该终端设备能够实现上述安卓系统启动的方法,相关内容的详细说明,请参见上述安卓系统启动的方法部分,在此不再赘叙。本申请实施例的终端设备包括但不限于:数码相机、移动设备、智能终端,等等。
安卓系统中的init服务包括第一init服务和第二init服务;安卓系统的java服务包括第一java服务和第二java服务,该终端设备包括:处理器、和与处理器连接的存储器、输入输出设备及通信电路;存储器用于存储计算机程序;处理器用于执行计算机程序并在执行计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中第一init服务包括java启动服务;在加载java启动服务后,加载第一java服务;在加载第一java服务完成后,启动桌面启动器,从而完成安卓系统的启动;其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载。
其中,输入输出设备包括显示屏、键盘、USB接口、耳机接口、摄像头、扬声器以及听筒。
其中,处理器在执行计算机程序时,实现如下步骤:自动解析并加载默认路径中的第一init脚本记录的第一init服务。
其中,第二init服务的第二init脚本对应的文件放置在非默认路径中。
其中,第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
其中,处理器在执行计算机程序时,实现如下步骤:使SystemServer进程加载第一java服务,第一java服务包括懒加载服务管理器和其它第一java服务,第二init服务和第二java服务能够在安卓系统启动完成后通过懒加载服务管理器被加载。
其中,处理器在执行计算机程序时,实现如下步骤:使SystemServer进程加载懒加载服务管理器;通过懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
其中,处理器在执行计算机程序时,实现如下步骤:安卓系统启动完成后,通过懒加载服务管理器接收加载指定java服务的第一请求;根据第一请求,加载指定java服务。
其中,标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;处理器在执行计算机程序时,实现如下步骤:根据第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及懒加载java服务名称对应的加载代码;加载懒加载java服务名称对应的加载代码。
其中,懒加载服务管理器能够与init进程进行通信。
其中,处理器在执行计算机程序时,实现如下步骤:安卓系统启动完成后,通过懒加载服务管理器接收加载指定init服务的第二请求;根据第二请求,通过懒加载服务管理器使init进程解析并加载对应的第二init脚本记录的指定init服务。
其中,标记的第二init服务包括懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;处理器在执行计算机程序时,实现如下步骤:根据第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;通过懒加载服务管理器使init进程按照懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
其中,懒加载服务管理器能够通过init进程的ctrl.loadrc属性接口与init进程进行通信,init进程能够加载ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
其中,懒加载服务管理器能够与应用程序通信。
其中,第一请求或第二请求来自应用程序。
其中,懒加载服务管理器能够通过软件开发包与应用程序进行通信。
本申请还提供一种拍摄装置,该拍摄装置的操作系统包括安卓系统,该终端设备能够实现上述安卓系统启动的方法,相关内容的详细说明,请参见上述安卓系统启动的方法部分,在此不再赘叙。
安卓系统中的init服务包括第一init服务和第二init服务;安卓系统的java服务包括第一java服务和第二java服务,该拍摄装置包括:处理器、和存储器;存储器用于存储计算机程序;处理器用于执行计算机程序并在执行计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中第一init服务包括java启动服务;在加载java启动服务后,加载第一java服务;在加载第一java服务完成后,启动桌面启动器,从而完成安卓系统的启动;其中,第二init服务和第二java服务能够在安卓系统启动完成后被加载。
其中,处理器在执行计算机程序时,实现如下步骤:自动解析并加载默认路径中的第一init脚本记录的第一init服务。
其中,第二init服务的第二init脚本对应的文件放置在非默认路径中。
其中,第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
其中,处理器在执行计算机程序时,实现如下步骤:使SystemServer进程加载第一java服务,第一java服务包括懒加载服务管理器和其它第一java服务,第二init服务和第二java服务能够在安卓系统启动完成后通过懒加载服务管理器被加载。
其中,处理器在执行计算机程序时,实现如下步骤:使SystemServer进程加载懒加载服务管理器;通过懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
其中,处理器在执行计算机程序时,实现如下步骤:安卓系统启动完成后,通过懒加载服务管理器接收加载指定java服务的第一请求;根据第一请求,加载指定java服务。
其中,标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;处理器在执行计算机程序时,实现如下步骤:根据第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及懒加载java服务名称对应的加载代码;加载懒加载java服务名称对应的加载代码。
其中,懒加载服务管理器能够与init进程进行通信。
其中,处理器在执行计算机程序时,实现如下步骤:安卓系统启动完成后,通过懒加载服务管理器接收加载指定init服务的第二请求;根据第二请求,通过懒加载服务管理器使init进程解析并加载对应的第二init脚本记录的指定init服务。
其中,标记的第二init服务包括懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;处理器在执行计算机程序时,实现如下步骤:根据第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;通过懒加载服务管理器使init进程按照懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
其中,懒加载服务管理器能够通过init进程的ctrl.loadrc属性接口与init进程进行通信,init进程能够加载ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
其中,懒加载服务管理器能够与应用程序通信。
其中,第一请求或第二请求来自应用程序。
其中,懒加载服务管理器能够通过软件开发包与应用程序进行通信。
本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时使处理器实现如上任一项的安卓系统启动的方法。相关内容的详细说明请参见上述安卓系统启动的方法部分,在此不再赘叙。
其中,该计算机可读存储介质可以是上述任一装置、设备的内部存储单元,例如装置、设备的硬盘或内存。该计算机可读存储介质也可以是装置、设备的外部存储设备,例如装置、设备上配备的插接式硬盘、智能存储卡、安全数字卡、闪存卡,等等。
应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
以上所述,仅为本申请的具体实施例,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (62)
1.一种安卓系统启动的方法,其特征在于,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述方法包括:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
2.根据权利要求1所述的方法,其特征在于,所述解析并加载第一ini脚本记录的第一init服务,包括:
自动解析并加载默认路径中的第一init脚本记录的第一init服务。
3.根据权利要求2所述的方法,其特征在于,所述第二init服务的第二init脚本对应的文件放置在非默认路径中。
4.根据权利要求3所述的方法,其特征在于,所述第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
5.根据权利要求1所述的方法,其特征在于,所述加载第一java服务,包括:
使SystemServer进程加载第一java服务,所述第一java服务包括懒加载服务管理器和其它第一java服务,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后通过所述懒加载服务管理器被加载。
6.根据权利要求5所述的方法,其特征在于,所述使SystemServer进程加载第一java服务,包括:
使SystemServer进程加载所述懒加载服务管理器;
通过所述懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定java服务的第一请求;
根据所述第一请求,加载所述指定java服务。
8.根据权利要求7所述的方法,其特征在于,所述标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;
所述根据所述第一请求,加载所述指定java服务,包括:
根据所述第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及所述懒加载java服务名称对应的加载代码;
加载所述懒加载java服务名称对应的加载代码。
9.根据权利要求6所述的方法,其特征在于,所述懒加载服务管理器能够与init进程进行通信。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定init服务的第二请求;
根据所述第二请求,通过所述懒加载服务管理器使所述init进程解析并加载对应的第二init脚本记录的指定init服务。
11.根据权利要求10所述的方法,其特征在于,所述标记的第二init服务包括懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;
所述根据所述第二请求,通过所述懒加载服务管理器使所述init进程解析并加载对应的第二init脚本记录的指定init服务,包括:
根据所述第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;
通过所述懒加载服务管理器使所述init进程按照所述懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
12.根据权利要求9-11任一项所述的方法,其特征在于,所述懒加载服务管理器能够通过所述init进程的ctrl.loadrc属性接口与所述init进程进行通信,所述init进程能够加载所述ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
13.根据权利要求7或10所述的方法,其特征在于,所述懒加载服务管理器能够与应用程序通信。
14.根据权利要求13所述的方法,其特征在于,所述第一请求或所述第二请求来自所述应用程序。
15.根据权利要求13所述的方法,其特征在于,所述懒加载服务管理器能够通过软件开发包与所述应用程序进行通信。
16.一种安卓系统启动的装置,其特征在于,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述装置包括:存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
17.根据权利要求16所述的装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
自动解析并加载默认路径中的第一init脚本记录的第一init服务。
18.根据权利要求17所述的装置,其特征在于,所述第二init服务的第二init脚本对应的文件放置在非默认路径中。
19.根据权利要求18所述的装置,其特征在于,所述第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
20.根据权利要求16所述的装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
使SystemServer进程加载第一java服务,所述第一java服务包括懒加载服务管理器和其它第一java服务,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后通过所述懒加载服务管理器被加载。
21.根据权利要求20所述的装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
使SystemServer进程加载所述懒加载服务管理器;
通过所述懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
22.根据权利要求21所述的装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定java服务的第一请求;
根据所述第一请求,加载所述指定java服务。
23.根据权利要求22所述的装置,其特征在于,所述标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;
所述处理器在执行所述计算机程序时,实现如下步骤:
根据所述第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及所述懒加载java服务名称对应的加载代码;
加载所述懒加载java服务名称对应的加载代码。
24.根据权利要求21所述的装置,其特征在于,所述懒加载服务管理器能够与init进程进行通信。
25.根据权利要求24所述的装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定init服务的第二请求;
根据所述第二请求,通过所述懒加载服务管理器使所述init进程解析并加载对应的第二init脚本记录的指定init服务。
26.根据权利要求25所述的装置,其特征在于,所述标记的第二init服务包括懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;
所述处理器在执行所述计算机程序时,实现如下步骤:
根据所述第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;
通过所述懒加载服务管理器使所述init进程按照所述懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
27.根据权利要求24-26任一项所述的装置,其特征在于,所述懒加载服务管理器能够通过所述init进程的ctrl.loadrc属性接口与所述init进程进行通信,所述init进程能够加载所述ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
28.根据权利要求22或25所述的装置,其特征在于,所述懒加载服务管理器能够与应用程序通信。
29.根据权利要求28所述的装置,其特征在于,所述第一请求或所述第二请求来自所述应用程序。
30.根据权利要求28所述的装置,其特征在于,所述懒加载服务管理器能够通过软件开发包与所述应用程序进行通信。
31.一种终端设备,其特征在于,所述终端设备的操作系统包括安卓系统,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述终端设备包括:处理器、和与所述处理器连接的存储器、输入输出设备及通信电路;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
32.根据权利要求31所述的终端设备,其特征在于,所述输入输出设备包括显示屏、键盘、USB接口、耳机接口、摄像头、扬声器以及听筒。
33.根据权利要求31所述的终端设备,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
自动解析并加载默认路径中的第一init脚本记录的第一init服务。
34.根据权利要求33所述的终端设备,其特征在于,所述第二init服务的第二init脚本对应的文件放置在非默认路径中。
35.根据权利要求34所述的终端设备,其特征在于,所述第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
36.根据权利要求31所述的终端设备,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
使SystemServer进程加载第一java服务,所述第一java服务包括懒加载服务管理器和其它第一java服务,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后通过所述懒加载服务管理器被加载。
37.根据权利要求36所述的终端设备,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
使SystemServer进程加载所述懒加载服务管理器;
通过所述懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
38.根据权利要求37所述的终端设备,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定java服务的第一请求;
根据所述第一请求,加载所述指定java服务。
39.根据权利要求38所述的终端设备,其特征在于,所述标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;
所述处理器在执行所述计算机程序时,实现如下步骤:
根据所述第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及所述懒加载java服务名称对应的加载代码;
加载所述懒加载java服务名称对应的加载代码。
40.根据权利要求37所述的终端设备,其特征在于,所述懒加载服务管理器能够与init进程进行通信。
41.根据权利要求40所述的终端设备,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定init服务的第二请求;
根据所述第二请求,通过所述懒加载服务管理器使所述init进程解析并加载对应的第二init脚本记录的指定init服务。
42.根据权利要求41所述的终端设备,其特征在于,所述标记的第二init服务包括懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;
所述处理器在执行所述计算机程序时,实现如下步骤:
根据所述第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;
通过所述懒加载服务管理器使所述init进程按照所述懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
43.根据权利要求40-42任一项所述的终端设备,其特征在于,所述懒加载服务管理器能够通过所述init进程的ctrl.loadrc属性接口与所述init进程进行通信,所述init进程能够加载所述ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
44.根据权利要求38或41所述的终端设备,其特征在于,所述懒加载服务管理器能够与应用程序通信。
45.根据权利要求44所述的终端设备,其特征在于,所述第一请求或所述第二请求来自所述应用程序。
46.根据权利要求44所述的终端设备,其特征在于,所述懒加载服务管理器能够通过软件开发包与所述应用程序进行通信。
47.一种拍摄装置,其特征在于,所述拍摄装置的操作系统包括安卓系统,所述安卓系统中的init服务包括第一init服务和第二init服务;所述安卓系统的java服务包括第一java服务和第二java服务,所述拍摄装置包括:处理器、和存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序并在执行所述计算机程序时,实现如下步骤:
所述安卓系统的内核层启动完成后,解析并加载第一init脚本记录的第一init服务,其中所述第一init服务包括java启动服务;
在加载所述java启动服务后,加载第一java服务;
在加载第一java服务完成后,启动桌面启动器,从而完成所述安卓系统的启动;其中,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后被加载。
48.根据权利要求47所述的拍摄装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
自动解析并加载默认路径中的第一init脚本记录的第一init服务。
49.根据权利要求48所述的拍摄装置,其特征在于,所述第二init服务的第二init脚本对应的文件放置在非默认路径中。
50.根据权利要求49所述的拍摄装置,其特征在于,所述第二init脚本对应的文件放置在init进程能够解析并加载的非默认路径中。
51.根据权利要求47所述的拍摄装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
使SystemServer进程加载第一java服务,所述第一java服务包括懒加载服务管理器和其它第一java服务,所述第二init服务和所述第二java服务能够在所述安卓系统启动完成后通过所述懒加载服务管理器被加载。
52.根据权利要求51所述的拍摄装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
使SystemServer进程加载所述懒加载服务管理器;
通过所述懒加载服务管理器将需要进行懒加载的java服务进行标记,得到标记的第二java服务,将需要进行懒加载的init服务进行标记,得到标记的第二init服务。
53.根据权利要求52所述的拍摄装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定java服务的第一请求;
根据所述第一请求,加载所述指定java服务。
54.根据权利要求53所述的拍摄装置,其特征在于,所述标记的第二java服务包括懒加载java服务名称以及懒加载java服务名称对应的加载代码之间的对应关系;
所述处理器在执行所述计算机程序时,实现如下步骤:
根据所述第一请求中携带的指定java服务的名称,确定对应的懒加载java服务名称以及所述懒加载java服务名称对应的加载代码;
加载所述懒加载java服务名称对应的加载代码。
55.根据权利要求52所述的拍摄装置,其特征在于,所述懒加载服务管理器能够与init进程进行通信。
56.根据权利要求55所述的拍摄装置,其特征在于,所述处理器在执行所述计算机程序时,实现如下步骤:
所述安卓系统启动完成后,通过所述懒加载服务管理器接收加载指定init服务的第二请求;
根据所述第二请求,通过所述懒加载服务管理器使所述init进程解析并加载对应的第二init脚本记录的指定init服务。
57.根据权利要求56所述的拍摄装置,其特征在于,所述标记的第二init服务包括懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径之间的对应关系;
所述处理器在执行所述计算机程序时,实现如下步骤:
根据所述第二请求中携带的指定init服务的名称,确定对应的懒加载init服务名称、所述懒加载init服务名称对应的懒加载init脚本以及懒加载init脚本对应的懒加载路径;
通过所述懒加载服务管理器使所述init进程按照所述懒加载路径解析并加载懒加载init脚本记录的懒加载init服务。
58.根据权利要求55-57任一项所述的拍摄装置,其特征在于,所述懒加载服务管理器能够通过所述init进程的ctrl.loadrc属性接口与所述init进程进行通信,所述init进程能够加载所述ctrl.loadrc属性接口的属性携带的参数中的第二init初始化脚本。
59.根据权利要求53或56所述的拍摄装置,其特征在于,所述懒加载服务管理器能够与应用程序通信。
60.根据权利要求59所述的拍摄装置,其特征在于,所述第一请求或所述第二请求来自所述应用程序。
61.根据权利要求59所述的拍摄装置,其特征在于,所述懒加载服务管理器能够通过软件开发包与所述应用程序进行通信。
62.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1-15任一项所述的安卓系统启动的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/119522 WO2021097683A1 (zh) | 2019-11-19 | 2019-11-19 | 安卓系统启动的方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112313620A true CN112313620A (zh) | 2021-02-02 |
Family
ID=74336508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980040209.1A Pending CN112313620A (zh) | 2019-11-19 | 2019-11-19 | 安卓系统启动的方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112313620A (zh) |
WO (1) | WO2021097683A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114047961A (zh) * | 2021-11-15 | 2022-02-15 | 合众新能源汽车有限公司 | 安卓系统开机优化方法、智能终端和计算机可读介质 |
CN116048629A (zh) * | 2022-08-22 | 2023-05-02 | 荣耀终端有限公司 | 系统服务切换方法及控制装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050001A (zh) * | 2014-06-24 | 2014-09-17 | 中科创达软件股份有限公司 | 基于Android系统的资源处理方法、装置和设备 |
CN104598254A (zh) * | 2015-02-17 | 2015-05-06 | 福州瑞芯微电子有限公司 | 一种安卓系统快速开机的方法及装置 |
KR20170005536A (ko) * | 2015-07-06 | 2017-01-16 | 주식회사 인프라웨어테크놀러지 | 안드로이드 시스템의 부팅 성능을 향상시키기 위한 방법, 컴퓨팅 장치 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램 |
-
2019
- 2019-11-19 CN CN201980040209.1A patent/CN112313620A/zh active Pending
- 2019-11-19 WO PCT/CN2019/119522 patent/WO2021097683A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050001A (zh) * | 2014-06-24 | 2014-09-17 | 中科创达软件股份有限公司 | 基于Android系统的资源处理方法、装置和设备 |
CN104598254A (zh) * | 2015-02-17 | 2015-05-06 | 福州瑞芯微电子有限公司 | 一种安卓系统快速开机的方法及装置 |
KR20170005536A (ko) * | 2015-07-06 | 2017-01-16 | 주식회사 인프라웨어테크놀러지 | 안드로이드 시스템의 부팅 성능을 향상시키기 위한 방법, 컴퓨팅 장치 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114047961A (zh) * | 2021-11-15 | 2022-02-15 | 合众新能源汽车有限公司 | 安卓系统开机优化方法、智能终端和计算机可读介质 |
CN116048629A (zh) * | 2022-08-22 | 2023-05-02 | 荣耀终端有限公司 | 系统服务切换方法及控制装置、电子设备和存储介质 |
CN116048629B (zh) * | 2022-08-22 | 2024-04-05 | 荣耀终端有限公司 | 系统服务切换方法及控制装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021097683A1 (zh) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8555280B2 (en) | Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform | |
US8490070B2 (en) | Unified mobile platform | |
US9367331B2 (en) | Multi-environment operating system | |
CN103488466B (zh) | 用于执行应用程序的方法和装置 | |
US8739147B2 (en) | Class isolation to minimize memory usage in a device | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
KR101015573B1 (ko) | Rtos 기반의 안드로이드 어플리케이션 실행 장치 | |
CN106502717B (zh) | 应用程序运行方法及装置 | |
CN111767090A (zh) | 小程序的启动方法、装置、电子设备以及存储介质 | |
CN112313620A (zh) | 安卓系统启动的方法、装置、设备及存储介质 | |
CN112965794A (zh) | 算法调用方法、电子设备及存储介质 | |
CN112256421A (zh) | 通信处理方法、装置、存储介质及电子设备 | |
US12056479B2 (en) | Mobile service upgrade method and apparatus, and terminal | |
CN109522111A (zh) | 异构生态系统的调用方法、装置、电子设备及存储介质 | |
CN115291933A (zh) | 小程序数据包构建方法、装置、设备及存储介质 | |
US11314500B2 (en) | System and method for modularizing update environment in life cycle manager | |
KR20110108143A (ko) | 스크립트 프로그래밍 언어 기반의 임베디드 시스템 및 그 구동 방법 | |
WO2012055176A1 (zh) | 移动终端处理方法及移动终端 | |
KR20140039779A (ko) | 안드로이드 운영 체제의 부팅 성능 향상 방법 | |
WO2024017278A1 (en) | Method, device and program carrier for cross-platform porting of applications | |
CN117555645B (zh) | 基于多端应用平台的数据处理方法、装置、设备及介质 | |
CN117931237A (zh) | 软件升级方法、装置、智能电视设备及介质 | |
CN118605960A (zh) | 一种实例的启动加速方法及相关装置 | |
CN114895937A (zh) | 应用更新方法、装置、电子设备和存储介质 | |
CN113590166A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210202 |