一.什么是Android
Android是一种基于Linux内核的、代码开源的且可定制的操作系统,其系统结构如下:


Android系统结构的说明:
通过上图我们可以发现Android系统的结构一共分了4层:从下到上依次是最下面的Linux内核层、系统库与Android运行时环境层(中间层)、应用程序框架层和最上面的应用程序层。

Linux内核层: Android以Linux2.6作为其操作系统内核,该层主要用于驱动Android操作系统的硬件和软件: 1、Display Driver——显卡驱动,用于驱动Android系统的GPU(Graphics Processing Unit,即图形处理器); 2、Camera Driver——摄像头驱动,用于驱动Android系统的摄像头; 3、Bluetooth Driver——蓝牙驱动,用于驱动Android系统的蓝牙功能; 4、Flash Memory Driver——闪存驱动,用于驱动Android系统闪存卡(比如CF卡、SD卡、TF卡或记忆棒等闪存卡,Android系统中表现为SD卡); 5、Binder(IPC) Driver——进程间通信驱动。IPC即Inter-Process Communication(驱动),在Linux内核中使用C语言实现了多种进程间通信的方法,比如半双工Unix管道方法、命名管道(name pipe)方法、消息队列(message queue)方法、信号(signal)方法和共享内存share memory方法等方法,Android操作系统的Linux内核使用了一种新的方法,即Binder方法。用于驱动Android操作系统进程间的通信; 6、USB Driver——Universal Serial Bus(通用串行总线)驱动,用于驱动Android系统和第三方设备(如移动硬盘)建立连接; 7、Keypad Driver——键盘驱动,用于驱动Android系统的键盘; 8、WiFi Driver——WiFi驱动,用于驱动Android系统的WIFi; 9、Audio Driver——音频驱动,用于驱动Android系统听筒和话筒; 10、Power Management——电源管理,用于Android系统与电池间的驱动;

系统库与Android运行时环境层(中间层):
该层分为系统库和Android运行时环境两部分:
系统库:该库基本使用C和C++语言实现,分为九部分:
1、Surface Manager——界面管理,当系统同时运行多个应用程序时,Surface Manager负责管理应用程序界面显示与存取操作间的互动,同时也负责将2D绘图与3D绘图进行显示上的合成;
2、Media Framework——多媒体框架,该框架是一个开源的、用C++语言实现的并基于PackerVideo的OpenCore(Android的多媒体核心),从功能上该框架分为两部分:①PVPlayer——各种音频(Audio)、视频(Video)流的回放(Play Back);②PVAuthor——各种音频(Audio)、视频(Video)流的以及静态图像捕获(或称为记录);
3、SQLite——一款轻量级的、采用C语言编写的且功能强大的开源嵌入式关系数据库;
4、OpenGL|ES——即Open Graphics Library for Embedded Systems,它是OpenGL三维图形API的子集;OpenGL是一个开放的用于绘制2D和3D图形图像的库;
5、FreeType——渲染位图(bitmap)及矢量(vector)字体
6、WebKit——一个开源的浏览器引擎,包含WebCore排版引擎和JSCore引擎;
7、SGL——2D图形引擎库,提供对2D图像的解析、组合等功能;
8、SSL——即Secure Socket Layer(安全套接层),位于TCP/IP协议与各种应用层协议之间,用于保障在Internet上数据传输安全;
9、libc——一个系统最底层的C语言标准库,该通过Linux系统来调用;
Android运行时环境:该运行时环境部分依赖于系统库,它分为Core Libraries(核心库)和Dalvik Virtual Machine(Dalvik虚拟机)两部分:
1、Core Libraries(核心库):该库不仅包括了Java语言所需要的大多数API,也包括了Android的核心库,比如:
a、Android.app——提供高层的程序模型和基本的运行环境。
b、Android.content——包含对各种设备上的数据进行访问和发布。
c、Android.database——通过内容提供者浏览和操作数据库。
d、Android.graphics——底层的图形库,包括画布、颜色过滤、点、矩形等,可以将它们直接绘制到屏幕上。
e、Android.location——定位和相关服务的类。
f、Android.media——提供一些管理多种音频、视频和媒体的接口。
g、Android.net——提供帮助网络访问的类,其功能比java.net.*接口更强大。
h、Android.os——提供了系统服务、消息传输和IPC(Inter-Process Communication,进程间通信 )机制。
i、Android.opengl——提供OpenGL的工具。
j、Android.provider——提供访问Android内容提供者的类。
k、Android.telephony——提供与拨打电话相关的API。
l、Android.view——提供基础的用户界面接口框架。
m、Android.util——提供工具性的方法,例如时间日期的操作。
n、Android.webkit——提供默认浏览器操作接口。
o、Android.widget——提供各种UI元素(大部分是可见的),应用于应用程序的布局中
2、Dalvik Virtual Machine(Dalvik虚拟机):一种基于寄存器的Java虚拟机(JVM是一个基于栈的Java虚拟机)。Dalvik虚拟机主要是完成对生命周期的管理(比如Activity的生命周期)、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,该虚拟机只能执行扩展名为.dex(Dalvik Exceutable)的文件(.dex的文件生成过程:将一个或多个Java文件编译成一个或多个字节码文件(即.class文件),再通过SDK中的dx工具将应用程序中所有的字节码文件转换成一个名为classes.dex的文件,Dalvik虚拟机会从该文件中读取指令和数据。这与JVM不同:将一个或多个Java文件编译成一个或多个字节码文件(即.class文件),然后打包到jar文件,最后Java虚拟机会从相应的字节码文件和jar文件中获取相应的字节码;
应用程序框架层
我们开发的应用程序大多运行在该层,该层共分为10个部分:
1、Activity Manager——活动管理器,与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等;
2、Window Manager——窗口管理器,提供了获取窗口宽高等信息的方法;
3、Content Providers——内容提供者,提供了访问不同应用程序数据或者共享自己的数据的方法;
4、View System——视图系统,用于管理Android应用的视图;
5、Notification Manager——通知管理器,为管理Android系统接受的通知提供了方法;
6、Package Manager——包管理器,为管理Android应用程序的包提供了方法;
7、Telephony Manager——电话管理器,为访问与手机通讯相关的状态(包括手机SIM的状态、短信状态和网络状态)和信息(包括手机用户的信息)提供了方法;
8、Resource Manager——资源管理器,用于访问Android系统工程中的资源文件(比如字符串xml文件中的字符、图片文件夹中的图片、布局文件件中的布局xml文件等等);
9、Location Manager——定位管理器,为获取当前设备位置、追踪设备的移动路线和设定敏感区域提供了接口;
10、XMPP Service——XMPP协议服务,为在Android应用程序中应用XMPP协议提供了可能;
应用程序层:
该层提供了一些常用的应用程序,如Home(主屏幕)、Phone(电话)、Browser(浏览器)和Contact(联系人)等。我们开发的应用程序与这些已有的应用程序是“平等”的。
通过分析Android系统结构,可以看出他的层次非常的分明,为我们从事的Android开发方向指明了方向。
二.什么是Android开发
通常说的Android开发是指能够安装在Android操作系统中且能够运行的应用程序开发,又称为Android嵌入式开发。 Windows操作系统中的应用程序是使用C或C++语言开发的扩展名为.exe的可执行性文件,与此类似:Android操作系统中的应用程序是使用Java语言开发的扩展名为.apk的文件。

最后由 BF 编辑于2017年03月20日 20:56