Android 系统架构
Android系统架构主要有四个大的层次(由上到下):
- 应用程序(Application)
- 应用程序框架(Application Framework)
- 本地框架类库(Libraries)和Java在Android上的运行环境
- Linux内核和驱动
应用程序(Application)
应用程序即平常我们所说的app,是用户可以直接使用的应用。比如说是联系人、电话拨号、浏览器、相机等等…
应用程序框架(Application Framework)
应用程序框架是给应用程序提供一些组件之类服务的一个程序层,它主要的目标是服务于我们开发者,提供了调用AndroidAndroid基本功能和手机系统的应用程序接口(API)以及系统提供的开箱即用的应用界面组件(View、Button等)。使开发者在应用程序框架之上可以快速的开发出漂亮高效的应用程序。
应用程序框架层给开发者提供一些开发应用程序所必需的一些组件:活动管理器、窗口管理器、内容提供者、视图系统、通知管理器、软件包管理器、电话管理器、资源管理器、位置管理器、传感器管理器…
本地框架类库(Libraries)和Java在Android上的运行环境
本地框架类库:
主要提供一些基础库:媒体框架、SQLite(嵌入式数据库)、OpenGL/ES(给游戏开发提供相应系统底层接口)、FreeType、WebKit(浏览器内核)、SGL、SSL、Libc…
Java在Android上的运行环境:
电脑上的java是运行在java虚拟机(JVM)之上的,Android中的Java也是运行在Android的虚拟环境上的,当然,Android的运行环境和java在电脑上的运行环境是不一样的,它是由Google公司专门为手机系统而定制的一个java虚拟机,它只是JVM的一个子集,也就是说只能运行一部分的内容,这样做主要是为了满足移动设备在存储、电量、CPU等“小而精”的概念。
Java在Android上的运行环境包括Android的核心库、Dalvik虚拟机。Dalvik虚拟机其实就是java虚拟机的一个子集的实现,专门用来运行应用程序和应用程序框架。
Linux内核和驱动
Android系统是构建在开源Linux系统内核之上而挂接出来的一个移动手机操作系统。
涉及到硬件相关的底层服务,基于Linux内核的核心系统功能。
各个手机厂商在Linux内核上有不同表现,它们会在这一层进行相应的修改,它们推出的硬件各不相同,自然而然就得对不同的硬件推出不同的驱动程序,以及进行相应的安全性管理、内存管理、进程管理、网络堆栈管理、硬件驱动程序管理。
Linux内核提供了和硬件设备打交道的一些驱动和底层的核心操作,里面有:显示驱动程序、蓝牙驱动程序、相机驱动程序、闪存驱动程序、Binder(IPC)驱动程序、键盘驱动程序、USB驱动程序、WIFI驱动程序、音频驱动程序、电源管理…