Android整体架构
主要分为五层
应用层 Applications:主要是用户界面,通常以Java程序编写,其中还包含各种资源文件,经过编译后生成APK包。Android本身就提供了一些核心的应用。
应用程序框架 Application Framework:为应用层的开发者提供API,实际上是一个应用程序的框架,本层包含了UI中各种控件,WebView等
核心库 Libraries:一些嵌入式库,如多媒体框架,图像引擎,嵌入式数据库,浏览器核心等
运行环境层 Runtime:Dalvik(虚拟机技术)
Linux内核层 Linux Kerenl:Android对操作系统的使用包括核心和驱动程序两部分
Android系统的分区结构
Android设备中,常见的几个分区:
Boot Loader分区
在手机进入系统之前出事后会软硬件环境,加载硬件设备,最终让手机成功启动。(一般厂商都会进行加密,目的是仅能引到官方固件,故刷机有风险)
Boot分区
存储着Android的Boot镜像,其中包含Linux Kerenl(zImage)和 initrd 等文件
注:
zImage:zImage是可可运行的二进制内核镜像
intrid:Linux初始RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM磁盘卸载,并释放内存。
Splash分区
主要是存储系统启动后第一屏显示的内容,一般为公司logo或动画,存储在Boot Loader中
Radio分区
这个是基带所在的分区,主要存储着一些与通信质量相关的Linux驱动,如电话,蓝牙,GPS,Wifi驱动等
一般来说,常用的驱动是可以打包存在于Linux内核的Boot分区,但为了提高设备的通信质量,故单独开辟了Radio分区
Recovery分区
存储着一个mini型的Android Boot镜像文件,主要用于故障维修和系统恢复
System分区
存储着Android系统的镜像文件,包含Android的Framework,Libraries,Binaries和一些预装应用。系统挂载后即 /system 目录
Data分区
数据分区,是设备的内部存储分区,如应用产生的图片,声音等数据文件,系统挂载后即 /data 目录
Cache分区
用于存储各种实用的文件,如恢复日志,OTA下载的更新包等
Android启动过程
主要分为两个阶段,Linux启动阶段和Android启动阶段