1.2 And roid架构

无论是从事Android哪个层面的开发和学习,都应该熟悉图1-1所示的Android架构图,这样才能对整个Android系统有所了解。

图1-1 Android架构

1.Linux Kernel(Linux内核)

Android系统是基于Linux操作系统之上的,采用Linux内核,Android很多底层管理,如安全性、内存管理、进程管理、网络协议栈和驱动模型等管理是依赖于Linux。Linux内核也是硬件和软件之间的硬件抽象层。运行于Android中的Linux是经过裁剪的,适合于低能耗的移动设备。

2.Libraries(本地库)

Android本地库包括一个被Android系统中各种组件所使用的C/C++库集。该库通过Android应用程序框架为开发者提供服务。这些库很多都不是在Android系统下编写的,大部分都是开源的库。

❏ OpenGL ES:开发3D图形技术。

❏ SQLite:嵌入式数据库。

❏ WebKit:Web浏览器引擎。

❏ Media Framework:支持音频视频解码,音频视频录制等。

❏ Surface Manager:Android平台绘制窗口和控件,以及绘制一些图形和视频输出等。

3.Android Runtime(Android运行时)

虽然Android应用程序是用Java编写的,但却不是使用Java Runtime来执行程序,而是自行研发Android Runtime来执行程序。Runtime(运行时环境)主要是由两部分组件组成——Core Libraries(核心库)和VM(虚拟机)。JVM是由Sun开发的(现在是Oracle公司),由于版权问题谷歌自己编写了VM,即Dalvik Virtual Machine(Dalvik VM)。编写Dalvik VM除了版权的问题,更重要的是Dalvik VM是为低耗能、低内存等手持移动设备而设计的,在一台设备上可以运行多个实例。Dalvik VM对于很多底层处理还要依赖于Linux操作系统。

4.Application Framework(应用程序框架)

Android应用程序框架提供了一套开发Android应用的API,其中包括:

❏ View System:一套用户图形界面开发组件,如Button、对话框等。

❏ ActivityManager:管理Activity的周期等。

❏ Content Providers:管理数据共享。

❏ Resource Manager:管理资源文件,如国际化、布局文件等。

❏ Location Manager:管理定位服务。

❏ TelephonyManager:管理电话服务。

5.Application(应用程序)

应用程序开发,在这里可以是自动编写的应用程序、第三方开发的应用程序和谷歌自带的应用程序,如通讯录、短信息、浏览器等。一个应用可以全部用Java语言编写,也可以是用Java编写一部分,再用C或C++编写一部分,然后使用Java JNI技术调用。例如,对于一个游戏应用程序,为了提高速度,有些处理使用C或C++编写,再用JNI调用。不要简单地认为所有应用都一定是Java语言编写的。