免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1135 | 回复: 0

Android开发之Android体系架构介绍 [复制链接]

论坛徽章:
0
发表于 2011-12-22 08:51 |显示全部楼层

来源:Android开发之Android体系架构介绍

在Android中,整个框架由应用、应用框架、原生库、Android实时库、硬件抽象层、Linux内核等若干部分组成。

其中最核心的Android虚拟机部分也已经开放源码。对开发者而言,如果期望在深度定制的基础上开发出差异化、高度竞争力的产品,需要在应用框架、原生库、硬件抽象层、Linux内核等方面有较深入的理解。图1显示了Android的体系架构。


图1 Android体系架构

1、核心服务

所谓Android的核心服务主要包括熵服务(Entropy Service)、电源管理器(Power Manager)、Activity管理器(Activity Manager)、通话寄存器(Telephony Registry)、包管理器(Package Manager)、账户管理器(Account Manager)、内容管理器(Content Manager)、内容提供器(System Content Providers)、电池服务(Battery Service)、光线服务(Lights Service)、振动服务(Vibrator Service)、闹钟管理器(Alarm Manager)、看门狗(Init Watchdog)、窗口管理器(Window Manager)、蓝牙服务(Bluetooth Service)等。这些服务和应用程序密切相关,但通常应用程序不能直接接入核心服务。早期版本中的硬件服务(Hardware Service)和传感器服务(Sensor Service)已经被移除,光线服务和振动服务在核心服务通过系统服务器来启动。系统服务器的实现位于SystemServer.java中。

2、原生服务

在Android中,上层的应用是基于Java开发的,但是框架层的服务很多是基于C/C++的,为了说明的方便,在本书中,将基于C/C++的服务称为原生服务。目前,Android提供的和多媒体相关的原生服务主要有渲染管理器(Surface Flinger)、音频管理器(Audio Flinger)、Camera服务(Camera Service)、媒体播放服务(MediaPlayer Service)、音频策略服务(Audio Policy Service)等。

3、原生库

Android的原生库主要是基于C\C++实现的一些原生组件,包括C库Bionic、浏览器引擎Webkit、多媒体引擎OpenCORE、SQL数据库SQLite、3D渲染引擎OpenGL ES、位图和字体矢量渲染引擎FreeType、2D图像渲染引擎SGL(Skia Graphics Library)、互联网安全协议SSL和TSL等。

4、运行时组件

在Android中,比较重要的Java组件包括Java核心库、Dalvik虚拟机等,两者一起构成了Android的应用环境基础。

5、硬件抽象层

在Android中,考虑到并非所有组件都具有标准的Linux内核驱动接口,而且基于GPL V20许可的Linux驱动内核会暴露出专用IP核的细节,另外Android对硬件驱动也有些特殊的需求。为了屏蔽底层实现的细节,实现硬件逻辑和硬件接口的分离,Google定义了一个硬件抽象层的接口HAL(Hardware Abstraction Layer)。

HAL在为商业开发带来便利的同时,对系统的性能略有阻碍,更多的层次会导致系统变慢,在桌面Ubunut Linux中,为了加快系统的启动速度,就彻底抛弃了HAL的理念。

6、Linux内核

Android平台是基于Linxu内核搭建的,Linux内核的优势在于大内存管理、进程管理、基于权限的安全模型、统一的驱动模型、共享库支持、代码开源等。

Android平台在设计过程中,针对移动终端资源有限的特点,对Linux进行了一定程度的裁剪:砍掉了原生的窗口系统、去除了对GNU Libc的支持(引入了更高效、针对嵌入式优化过的Bionic)、裁剪掉了一些标准Linux工具的部分特性等。

另外Android针对移动终端的特点还对Linux内核在闹钟(Alarm)、Low Memory Killer、Ashmem、内核调试(Kernel Debugger)、进程间通信(Binder)、日志(Logger)、电源管理(Power Management)等方面做了大量的优化。

其中Low Memory Killer相对于Linux标准OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程来释放需要的内存。Low Memory Killer的实现主要位于aurora\msm\msm drivers/staging/android/lowmemorykiller.c文件中。

Ashmem为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。 Ashmem的实现位于system\core\libcutils\ashmem-dev.c文件中。(摘自华清远见系列图书《Android多媒体编程从初学到精通》)

更多华清远见原创教材展:http://www.farsight.com.cn/FarsightBooks/home.html

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP