Android 系统架构
这是我参与「第四届青训营 」笔记创作活动的第1天
其百度定义:
以下这张图形象的展示了安卓的系统架构
Applications(应用程序)
android与核心应用程序包(email、map、calendar、browser...),应用程序编写语言为Java(Kotlin成为官方语言)
Application Framworks(应用程序框架)
大部分为Java编写,提供各种API。
Views
视图用来构建app,有按钮、文本框、网格、列表、可嵌入的web浏览器等等。
Content Providers
内容提供器:一个应用程序可以访问另一个的数据或者与之共享。
Resource Manager
资源管理器:访问如本地文本、图形和布局文件等非代码资源。
Notification Manager
通知管理器:状态栏显示自定义信息
Activity Manager
活动管理器:管理应用生命周期
Libraris
系统运行库:C/C++库,能被不同组件使用。 Bionic系统C库、媒体库(音视频回放及录制、图像文件)、Surface Manager、Webkit、SGL、SQLite...
Android Runtime
运行环境:Java核心库的大多数功能
每个应用都在其自己的进程中运行,都有自己的虚拟机实例。ART通过执行DEX文件可在设备运行多个虚拟机,DEX文件是一种专为Android设计的字节码格式文件,经过优化,使用内存很少。ART主要功能包括:预先(AOT)和即时(JIT)编译,优化的垃圾回收(GC),以及调试相关的支持。
HAL
硬件抽象层:
提供标准接口,HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一组接口,比如WIFI/蓝牙模块,当框架API请求访问设备硬件时,Android系统将为该硬件加载相应的库模块。
主要提供硬件组件的封装,包括相机、传感器和蓝牙等。当框架API要求访问设备硬件时,
Android系统将为该硬件组件加载库模块。
Linux Kernel
Linux内核:作为软硬件之间的抽象层。支持安卓的核心系统服务如安全性、内存管理、进程管理、网络协议栈和驱动模块。Binder(IPC)和电源管理部分修改。
安卓启动架构
Boot Leader引导开机 -> Kernel -> Native -> Framework -> app
总结:
通过对Android系统框架的学习,我初步认识了安卓框架及每部分的作用,为之后进步学习打下体系上的基础。