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

链接

参考资料:
Android 进阶解密
第一行代码(第3版)