1 启动流程概述
Android
启动流程跟 Linux
启动类似,大致分为如下五个阶段。
- 1.开机上电,加载固化的
ROM
。 - 2.加载
BootLoader
,拉起Android OS
。 - 3.加载
Uboot
,初始外设,引导Kernel
启动等。 - 4.启动
Kernel
,加载驱动,硬件。 - 5.启动
Android
,挂载分区,加载驱动、服务,init
进程等。
2. 了解安卓Runtime 运行时
Android5.0(API 21)以上,每个应用都运行在自己的进程中,有其自己的Android Runtime(ART)实例,ART编写为通过执行Dex文件在低内存设备上运行多个虚拟机,Dex文件是一种专为Android设计的字节码格式,经过优化使用的内存很少。编译工具链(例如Jack)将Java源代码编译为Dex字节码,使其可在Android平台上运行。
ART的部分主要功能包括:
-
预先(AOT)和即时(JIT)编译
-
优化的垃圾回收(GC)
-
Android 9(API 28)及更高版本的系统中,支持将应用软件包中的Dalvik Executable格式(Dex)文件转化为更紧凑的机器代码。
-
更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段。
在5.0之前,Dalvik是Android Runtime。如果您的应用在ART上运行效果很好,那么它应该也可在Dalvik上运行,但反过来不一定。 Android还包含一套核心运行时库,可提供Java API框架所使用的Java编程中年的大部分功能,包括一些Java8语言功能。
3.Android启动的大概流程
从开机到桌面的过程为:
Bootloader ➪Kernel ➪Init进程 ➪ Zygote ➪ SystemServer ➪ ServiceManager ➪ Home Launcher
Android服务包括系统服务和应用服务,系统服务是指Android系统在启动过程就已经启动实现了的服务,对于系统服务又分为Java服务和本地服务,Java服务是由Java代码编写而成,由SystemServer进程提供,而本地服务是由C/C++实现的服务,由Init进程在系统启动时启动的服务。应用服务是由开发者自行实现的某些特定服务。
1) Bootloader
手机中的ROM 和 RAM 分别对应电脑的硬盘和内存, 内存负责程序的运行以及数据交换 有了它 电脑中的软件才能运行;
而硬盘就是一块存储空间 它可以存储各种各样的文件 包括视频 、 照片 、音乐 、 软件等
Boot Rom: 当长按开机键的时候,引导芯片开始从固化在ROM的预设代码开始执行。然后加载引导程序到RAM。