学习笔记:Android系统架构

本文为《Android攻略》(Dave Smith[美],Jeff Friesen[加] 著 ,陈钢 译)节选摘抄

-------------------------------------------------------------------------------------------------------------------------

Android软件栈的顶层是应用,中间是中间件(由应用框架\库和Android运行时组成),底层则是带有各种驱动的Linux内核。图1展示了这种分层架构。



图1 Android的分层架构由若干主要部分构成


用户最关心的是应用,Android发行时就附带了很多有用的核心应用,包括浏览器、联系人和电话。所有的应用都是用Java语言编写的。应用构成了Android架构的最顶层。

直接支撑应用层的是应用框架(application framework),这是一组用于构建应用的高层构件。应用框架是预装在Android设备中的,其中包括一下组件。

1.Android管理器(Activity Manager):该组件用于管理所有Activity的生命周期,并维护一个用于实现应用内部和应用之间切换Activity的共享活动栈。

2.内容提供器(Content Providers):这些组件将数据(例如浏览器应用中的书签)封装成能在应用间共享的形式。

3.位置管理器(Location Manager):该组件使Android能获取设备的物理位置。

4.通知管理器(Notification Manager):该组件使应用可以讲重要的事情(例如有新消息)在状态栏中显示出来且不会打断用户当前的活动。

5.包管理器(Package Manager):该组件使应用可以通知设备上安装的其他包的情况。

6.资源管理器(Resource Manager):该组件使应用可以访问各种资源。

7.电话管理器(Telephony Manager):该组件使应用可以知道设备的电话服务状态。还负责电话的拨打和接听。

8.视图系统(View System):该组件负责管理用户界面元素和生成面向用户界面的事件。

9.窗口管理(Window Manager):该组件将屏幕上的元素组织到窗口中,分配绘图界面,同时执行其他窗口相关任务。

应用框架中的组件在完成各自任务时都要依赖一些C/C++库。开发人员通过应用框架中的API与下面这些库交互。

1.FreeType:这个库用于支持点阵字和向量字的渲染。

2.libc:这是一个源自BSD系统的标准C系统库的实现,该C库针对嵌入式Linux设备进行了优化。

3.LibWebCore:这个库为Android游览器和嵌入式Web是同提供了现代化的高速Web浏览器引擎,它是基于WebKit的(http://en.wikipedia.org/wiki/WebKit),Google的Chrome和苹果的Safari浏览器使用的也是WebKit。

4.媒体框架(Media Framework):这些基于PacketVideo的OpenCORE的库支持多种流行的影音格式的播放和录制,还能处理静态图片文件。支持的格式包括MPEG-4、H.264、MP3、AAC、AMR、JPEG和PNG。

5.OpenGL | ES:这是Android基于OpenGL | ES 1.0 API的OpenGL实现的3D绘图库。它可以使用硬件3D加速(如果能用的话)或是内建的(经过高度优化的)3D软件光栅器。

6.SGL:这个库提供了底层的2D绘图引擎。

7.SQLite:这个库提供了一个功能强大的轻量级关系数据库引擎,可供所有应用使用。Mozilla是FireFox和苹果的iPhone也用这个引擎实现持久化存储。

8.SSL:这个库提供了基于SSL(安全套接层)的网络通信安全机制。

9.外观管理器(Surface Manager):这个库负责管理显示子系统的访问方式并将各种应用的2D和3D图形层无缝地组合在一起。

Android运行时环境由核心库和Dalvik虚拟机组成。Dalvik不是基于栈的,而是一个基于寄存器的非Java虚拟机。Dalvik并不运行Java代码。实际上,Android将编译好的Java类文件转换成DEX(Dalvik Executable)格式—— 一种针对小内存设备优化过的格式,Dalvik执行的是由此产生的代码。

每个Android应用都默认在它自己的Linux进程中运行,每个进程都包含一个Dalvik的实例。虚拟机使得设备能高效地运行多个虚拟机。这种高效很大程度上是因为Dalvik执行的是DEX(Dalvik Executable)文件。

库和Android运行时都依赖Linux内核(2.6版)以实现底层的核心服务,例如线程、底层内存管理、网络栈、进程管理和驱动模型。此外,内核在硬件层和软件栈之间起到了抽象层的作用。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值