这篇文章仅限于对Android初学者看看,老鸟们大神们就略过吧。写这篇文章的初衷还是因为一个刚做Android半年多的朋友问我的,所以就来小谈一下具体的框架和各层的用处,还有针对各层的开发。

Android也是和其他系统一样,采用分层的架构。下面我么你先看一下Android经典的架构图:

Android系统架构——揭开Android系统框架的面纱_第1张图片

从上图中可清晰地看出,Android从高到底,分别为应用程序层(application),应用程序框架层(application framework),系统运行库层,和linux内核层。下面我们一一介绍下,各层的用处:

1、应用程序层:

该层可以提供一些核心程序包,比如email,日历,SMS短信服务,地图,浏览器,联系人等一些基本的功能(系统应用)。开发者可以用java语言开发和设计自己的程序(可认为是第三方应用),而且可以和以上这些系统提供的功能,互不干扰,和平共处,但是在一些特殊情况,由于系统的程序优先权是高于开发者开发的,在Low Memory时候会优先kill掉第三方应用。

2、应用程序框架层:

该层是Android系统中最核心的部分,也是我们开发应用软件的基础,做应用程序的开发都要和这层打交道。开发人员也可以完全访问核心应用程序所使用的API。该层简化了组件的重组,开发人员可以直接使用其提供的组件,来进行快速的开发,并通过继承实现个性化的拓展。

1)、Activity Manager(活动管理)

管理各个应用程序的生命周期

     2)、Window Manager  (窗口管理)

管理所有的窗口程序

3)、Content Provider

使得应用程序可以访问其他程序的数据,或者共享自己程序的数据

4)、View Systme (视图系统)

丰富的可扩展的视图集合,可用于构建程序。

5)、Notification Manager (通知管理)

可以在状态栏显示开发者自定义的通知消息

6)、Package Manager (包管理)

程序的管理,安装,卸载等

7)、Telephony Manager (电话管理)

提供了一系列用于访问与手机通讯相关的状态和信息

8)、Resource Manager (资源管理)

提供非代码资源的访问,比如本地的字符串,layout等。

9)、Location Manager (位置管理)

提供一系列方法来处理地理位置的相关问题,比如获取上一个位置信息。

10)、Xmpp Service(Xmpp 服务)

提供Google Talk 服务

  3、系统运行库层:

系统运行库可以分为两部分,分别为系统库和Android运行时,下面分别介绍下:

a)系统库:系统库是应用程序框架的支撑,是连接应用程序框架层和Linux内核层的重要纽带。

1)Surface Manager:

对显示子系统的管理,并且为多个程序提供了2D和3D图层的无缝融合。

2)Media Framework:

支持多种常用的音频、视频格式录制和回放,同时支持静态图像文件。编码格式包括MPEG4MP3

H.264AACARM,JPG,PNG

3) SQLite:

功能强大的轻量级数据库引擎。

4)OpenGL|ES:

基于OpenGL ES 1.0API标准实现。该库可以使用硬件3D加速。

5)FreeType:

  提供点阵字与向量字的描绘与显示

6)WebKit:

浏览器网页排版引擎。Android采用了WebKit项目中的WebCore和JSCore部分,上层由Java语言封装。

7)SGL:

底层的2D图形引擎。

8)Libc:

BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制

b)Android运行时:Android应用程序时采用Java语言编写,程序在Android运行时中执行,

其运行时分为核心库和Dalvik虚拟机两部分。

1)核心库:

提供了Java大多数API中的功能,同时也包含了Android的一些核心API,android.os

android.netandroid.media等等。

2)Dalvik虚拟机:

每一个Android应用程序都在它自己的进程中运行,并且拥有一个独立的Dalvik的虚拟机实例。

Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,

并进行了内存资源使用的优化以及支持多个虚拟机的特点。所有的类都经由java编译器编译,

然后通过SDK中的“dx”工具转化成dex格式由虚拟机执行。


4、Linux内核层

 Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。

Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、

WiFi驱动、Audio驱动、flash内存驱动、BinderIPC)驱动、电源管理等。


上面介绍完了Andorid系统架构,和各层次的基本功能。Android系统采用分层次架构,框架清晰,分工明确。

既然很清晰的认清了Android系统,那对于我们开发者来说,也能清晰地选择自己的工作方向,和发展方向。

作为Android应用开发者就要不仅掌握Api的正确使用,同时也应该研究应用框架层和应用程序层。

做为一些框架层开发的同学,主要是一些手机开发商需要制定自己的一套东西,比如Launcher等。

做Android系统开发主要研究系统运行库层,也要接触Linux内核层。做驱动层的同学就要去研究Linux内核层啦。



更多相关文章

  1. Android系统框架总结(好文)
  2. 基于android的远程视频监控系统(已开放源码)
  3. Android应用程序设置Home Screen
  4. Android 根文件系统启动分析
  5. 如何开始使用Android应用程序模板
  6. Android 系统图片
  7. Android应用程序键盘(Keyboard)消息处理机制分析(28)
  8. Android监听应用程序安装和卸载

随机推荐

  1. Android下实现获取本机存储的联系人
  2. Android中的“再按一次返回键退出程序”
  3. Android(安卓)去掉title bar的3个方法
  4. android 拖拽图片&拖动浮动按钮到处跑
  5. 联系人头像 android
  6. Android文件图片上传的详细讲解(三)---模式
  7. Android(安卓)6.0后强制弹出权限
  8. Android(安卓)RingtoneManager铃声管理
  9. android performClick
  10. android 屏幕截屏