Android开发之Android体系架构介绍
来源:互联网 发布:对大数据的理解和认识 编辑:程序博客网 时间:2024/06/15 16:48
来源: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
嵌入式及3G相关资源及学习请点击:嵌入式开发视频 android开发视频 android培训 3G培训 QT培训 QT开发视频 物联网培训 物联网技术视频 嵌入式学习
- Android开发之Android体系架构介绍
- Android体系架构介绍
- Android开发之Android体系架构简介(一)
- Android开发之Android体系架构简介(二)
- android 入门之二【android 体系架构】
- Android体系架构
- Android 体系架构
- android 体系架构
- android 架构体系
- android 体系架构
- android的架构体系
- Android 体系架构图片
- Android体系架构
- Android 体系架构解读
- Android体系架构
- Android 体系架构
- Android 体系架构
- Android os体系架构
- Extjs 查询出用户,实现增删改查功能 (重点在于查询后替换和分页问题)
- iBatis批处理实现(Spring环境)
- JAVA 1.5 最全的各个版本的JDK,里面当然也包含对应的源代码了,在要求小版匹配时尤其重要.
- IronPython Studio安装
- wince6.0驱动开发(转摘)
- Android开发之Android体系架构介绍
- 自定义菜单样式
- 银行印鉴
- MATLAB中的fft后为何要用fftshift?
- MY SQL中的 tinyint 是几位
- zoj 1642 Match for Bonus
- jquery库与其他库冲突的问题解决-jquery.noConflict()
- 编写Java的(单例模式)单实例Singleton 的示例
- JAVA基础——对象与引用概念(转载)