Android 系统架构
Android 系统架构
Android 大致可分为 4 层架构:
Linux 内核层(Linux Kernel)
Android 系统是基于 Linux 内核的,这一层为 Android 设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi 驱动、电源管理等。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。
硬件抽象层(HAL)
算上它为 5 层架构。通俗的讲,就是将控制硬件的动作放在硬件抽象层中。
系统运行库层(Native)
这一层通过一些 C/C++ 库为 Android 系统提供了主要的特性支持。如 SQLite 库提供了数据库的支持,OpenGL|ES 库提供了 3D 绘图的支持,Webkit 库提供了浏览器内核的支持等。
在这一层还有 Android 运行时库,它主要提供了一些核心库,允许开发者使用 Java 语言来编写 Android 应用。另外,Android 运行时库中还包含了 Dalvik 虚拟机(5.0 系统之后改为 ART 运行环境),它使得每一个 Android 应用都能运行在独立的进程中,并且拥有一个自己的虚拟机实例。相较于 Java 虚拟机,Dalvik 和 ART 都是专门为移动设备定制的,它针对手机内存、CPU 性能有限等情况做了优化方案。
应用框架层(Java API Framework)
这一层主要提供了构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是使用这些 API 完成的,开发者可使用这些 API 来构建自己的应用程序。
应用层(System Apps)
所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是从 Google Play 上下载的小游戏,当然还包括自己开发的程序,负责与用户进行直接交互。
Activity 源码阅读
对应目录:
- 应用层部分
packages 目录 - 应用框架层部分
主要实现代码在 frameworks/base 和 frameworks/av 目录下 - C/C++ 程序库部分
几个常用且比较重要的有:bionic、frameworks/av/media、frameworks/native/opengl、frameworks/native/services/surfaceflinger、external/sqlite。 - Android 运行时库
art 目录 - 硬件抽象层
hardware 目录
阅读方式分两种:
- 在线阅读
推荐网站:源码阅读 - 本地阅读
推荐工具:Source Insight
链接