Android 是基于 Linux 的移动操作系统。先甩张图过个眼,下文的内容是针对该图自下而上介绍的。
新的架构图添加了 HAL 层、并且将 Android Runtime 中的 Dalvik 改为 ART 。本质上没有太大的改变。
在所有层的最底下是 Linux(包括大约115个补丁的 Linux 3.6)。它提供了基本的系统功能,比如进程管理,内存管理,设备管理(如摄像头,键盘,显示器)。同时,内核处理所有 Linux 所擅长的工作,如网络和大量的设备驱动,从而避免兼容大量外围硬件接口带来的不便。
向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机、传感器、音频和蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
这一层通过一些 C/C++ 库来为 Android 系统提供了主要的特性支持。包括开源的 Web 浏览器引擎 Webkit ,知名的 libc 库,用于仓库存储和应用数据共享的 SQLite 数据库,用于播放、录制音视频的库,用于网络安全的 SSL 库等。
主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。另外,Android 运行时库中还包含了Dalvik虚拟机(5.0系统之后改为ART运行环境),它使得每一个 Android 应用都能运行在独立的进程当中,并且拥有一个自己的 Dalvik 虚拟机实例。相较于 Java 虚拟机,Dalvik 是专门为移动设备定制的,它针对手机内存、CPU 性能有限等情况做了优化处理。
Android 运行时库同时提供一系列核心的库来为 Android 应用程序开发者使用标准的 Java 语言来编写 Android 应用程序。
这一层主要提供了构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是使用这些 API 完成的,开发者也可以通过使用这些 API 来构建自己的应用程序,且被允许在应用中使用这些服务。
你需要了解到,所有安装在手机上的应用程序都是属于这一层的,包括手机自带的联系人啊、短信、备忘录这些程序,或者是我们从应用商店所下载的一系列热门app,比如王者荣耀啊,QQ、微信等程序,但如果你是一名技术爱好者,自己开发的程序当然也算在内,比如市面上有很多私人的脚本apk,用来抢红包啊,抢抽奖名额啊,抢飞天茅台大家都懂吧,99%都是机器脚本狗。