Android 系统架构详解

Android系统架构

Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它是采用了一种被称为软件叠层的方式进行构建,使用这种方式进行构建的优点在于:层与层之间相互分离,明确各层的分工,保证了层与层之间低耦合,当内层或下层发生改变时,上层的应用程序无需任何改变。




1.应用程序层

这层是Android系统包含的一系列的核心应用程序,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人等。全部都是由Java编写的,其实就是系统捆绑的系统软件,而我们开发的应用软件也被放在这一层。
 

2.应用框架层

当我们开发应用程序时,就是面向底层的应用程序框架进行的。应用框架层提供了大量的API供开发者使用,通过调用这些特殊的API来构造我们的APP,从而满足我们业务上的需求。
但我们要想到,我们调用的API是如何传递底层从而真正的实现调用呢?其实这都归功于Framework层,它是完全由Java编写的,android开发人员用Java语言编写的规范化的模块封装成框架,通过接口提供给上层调用,然后用JNI(Java Native Interface)调用core lib层的本地方法,根据函数表查询调用核心库底层方法,最终访问到Linux内核。
可能有人会想到,那为什么不直接用C/C++来编写Framework会更好,百度了一下,大概就是这样:
  C/C++过于底层,开发者要花很多的经历对C/C++的语言研究清楚,例如C/C++的内存机制,如果稍不注意,就会忘了开启或者释放。而Java的GC会自动处理这些,省去了很多的时间让开发者专注于自己的业务。所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言,该层通过JNI和核心运行库层进行交互
 
Activity Manager:用来管理应用程序生命周期并提供常用的导航回退功能。
Window Manager:提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。
Content Providers:使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
View System:可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
Notification Manager:使得应用程序可以在状态栏中显示自定义的提示信息。
Package Manager:提供对系统的安装包的访问。包括安装、卸载应用,查询permission相关信息,查询Application相关信息等。
Telephony Manager:主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。
Resource Manager:提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
Location Manager:提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。
XMPP:可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。


3.函数库

程序库

这一层的函数库,就是Framework通过JNI调用的,Android系统会通过一些C/C++库来支持对我们使用的各个组件,使其能更好地为开发者服务。

下面列举一些核心库:

系统C库:一个从BSD系统派生出来的标准的C系统库(libc),并且专门为嵌入式Linux设备调整过。

媒体库 - 基于 PacketVideo OpenCORE:该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

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

LibWebCore : 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

SGL : 底层的2D图形引擎

3D libraries : 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。

FreeType :位图(bitmap)和矢量(vector)字体显示。

SQLite : 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

Android 运行库

Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
   每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。
  Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。


4:Linux内核

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值