Android系统源码导读:AOSP是什么,系统如何一步步启动?

📅 2026/7/9 3:23:16
Android系统源码导读:AOSP是什么,系统如何一步步启动?
一、AOSP是什么AOSP就是谷歌公开出来的安卓系统源代码全集任何人都能免费下载、随便改然后装到自己的设备上。但是改完不一定能叫安卓分了两个级别AOSP兼容只要满足最基础的兼容性定义文档要求就行能跑起来用但是用不了谷歌官方服务。Android兼容除了基础文档要求还必须通过谷歌的CTS等要求通过了认证才能预装谷歌服务、应用商店。二、安卓系统的分层架构第一层Linux Kernel最底层和硬件交互负责CPU调度、内存分配、外设、电源等。安卓的最底层就是基于Linux内核的第二层HAL硬件抽象层为了隔离上层系统和底层硬件驱动定义了一套标准接口硬件厂商按接口写驱动这样上层调用HAL接口就不用管底层是什么硬件了。第三层Native C/C Libraries和Android RuntimeNative C/C Libraries一般用C/C实现的原生程序和工具库ART虚拟机每个应用都在自己的进程中运行并且有自己的ARTART把Java代码编译成DEX在Android平台运行第四层Android Framework安卓框架层提供应用开发调用的API,如画界面调相机最顶层用户看到的各种应用分三类普通安卓应用普通的第三方App只用公开的Android API开发特权应用能调用一部分系统API权限更高一般是系统预装应用如短信、电话设备制造商应用厂商做的系统级App权限最高能直接调用框架层的内部接口Android API给所有第三方开发者用的公开接口System API只给设备厂商、合作伙伴用的隐藏接口三、安卓开机流程启动电源Bootloader引导加载程序Linux内核Init进程Zygote进程孵化进程其他Native服务SystemServer进程Zygote孵化的第一个进程启动各种系统服务如AMS、WMS、PMS第一阶段启动电源与引导加载程序 (Bootloader)第二阶段Linux内核启动Linux kernel启动初始化CPU、内存、存储等硬件加载显示、触摸、电源管理等驱动挂载根文件系统启动init进程PID1第三阶段init进程与Zygote孵化进程init进程上线后先读取init.rc配置文件按顺序启动各项服务其中Zygote进程是最重要Zygote进程主要做以下两件事预加载把2000系统类、资源文件、共享库文件全部加载进内存。Socket监听循环随时接收“创建新应用进程”的请求。创建并初始化Java虚拟机ART。Zygote的优势所有APP都是从Zygote中复制出一个进程不用再从零加载系统资源所有APP共用一份内存启动更快节省资源。每个APP都是独立进程一个APP崩了不会带崩整个系统。第四阶段SystemServer启动Zygote孵化进程先启动SystemServer进程这个进程分三批启动系统服务引导服务AMS管理App的生命周期PMS管理APP的安装和卸载电池管理服务。核心服务电池服务使用统计服务。其他服务WMS窗口管理页面显示IMS输入管理管触摸按键等。第五阶段系统准备就绪启动SystemUI状态栏、导航栏、通知栏等。启动Launcher。发送BOOT_COMPLETED广播给全系统发通知开机完成。