Android开发之Android体系架构介绍
15小时前
在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文件中。
发表评论
-
VisualTreeHelper知识点
2012-01-20 01:09 590VisualTreeHelper知识点 2010年08月16 ... -
加快RIA开发效率之Flex插件
2012-01-20 01:08 508加快RIA开发效率之Flex插 ... -
关于Java环境变量的学习
2012-01-20 01:08 627关于Java环境变量的学习 ... -
Wix使用笔记(七) 添加系统必备组件的安装程序
2012-01-20 01:08 1079Wix使用笔记(七) 添加系统必备组件的安装程序 2010年 ... -
如何配置Tomcat 5和IIS 5协同工作
2012-01-20 01:08 637如何配置Tomcat 5和IIS 5协同工作 2010年06 ... -
各种编程语言介绍
2012-01-19 08:58 619各种编程语言介绍 2011年07月09日 【IT168知 ... -
对比java和python
2012-01-19 08:57 907对比java和python 2011年04 ... -
[强帖转载]C++、java、.net关系
2012-01-19 08:57 644[强帖转载]C++、java、.net关系 2011年03月 ... -
BusyBox 简化嵌入式 Linux 系统 (转载)
2012-01-19 08:57 556BusyBox 简化嵌入式 Linux 系统 (转载) 20 ... -
选择不对,努力白费。活着就要对得起父母和自己
2012-01-17 01:28 360选择不对,努力白费。活着就要对得起父母和自己 2011年10 ... -
转:“让大家两年不买房”,真有意思啊!!
2012-01-17 01:28 373转:“让大家两年不买房”,真有意思啊!! 2011年11月0 ... -
。。。
2012-01-17 01:27 548。。。 2011年11月19日 浣 -
经典人生哲理之成功法则
2012-01-17 01:27 529经典人生哲理之成功法则 2011年10月13日 澶辫触骞 ... -
第五卷《鏖战雁门(下)》第41章《良夜》
2012-01-15 20:08 576第五卷《鏖战雁门(下)》第41章《良夜》 2011年01月0 ... -
微小说。(5)
2012-01-15 20:08 466微小说。(5) 2011年12月21日 1、他鼓足勇气和 ... -
中华隋唐年间历史上真实的18条好汉(隋炀帝~唐高祖)
2012-01-15 20:08 768中华隋唐年间历史上真 ... -
隋书 卷四十七??列传第十二
2012-01-15 20:08 496隋书 卷四十七??列传第十二 2011年03月29日 韦 ... -
第六卷《霍邑争锋》第49章《谣言》
2012-01-15 20:08 690第六卷《霍邑争锋》第49章《谣言》 2011年01月17日 ... -
巧用hosts文件,解决急手问题
2012-01-11 12:18 526巧用hosts文件,解决急手问题 2011年03月01日 ... -
Struts2实战 读书笔记
2012-01-11 12:18 551Struts2实战 读书笔记 2011年03月01日 1 ...
相关推荐
微信ANDROID客户端架构演进及其对开发流程的影响.pdf
6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序组成 6.2.1 Activity介绍 6.2.2 ...
作者从事Android开发十年有余,走过的弯路不计其数,深感经验总结有助于在Android上快速前行,早日完全掌握Android,达到Android巅峰! 内容主要包括: *Android 开发积累的重要经验 *Android 开发知识体系 *...
6.1 android体系结构介绍 57 6.1.1 应用程序(application) 57 6.1.2 应用程序框架(application framework) 58 6.1.3 库(libraries)和运行环境(runtime) 58 6.2 android 应用程序组成 59 6.2.1 ...
6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序组成 6.2.1 Activity介绍 6.2.2 ...
《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!然而,Android系统太过于庞大,源代码实现复杂,学习的...
内容简介 《Android开发入门与实战》内容上涵盖了用Android开发的大部分场景,从Android基础介绍、... 最后,祝广大开发者的技术日益精进,早日开始Android开发之旅,赶上移动互联网的第一班车,共赢中国3G未来!
《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...
第2章Android体系结构 2.1四层空间基本结构 2.1.1 Android系统底层开发 2.1.2应用程序开发 2.2 Android代码目录结构 2.3 Android开发环境搭建 第二篇 勿于浮砂筑高台——Linux驱动基础篇 第3章Linux内核综述 3.1 OS...
每一位Android开发者应该知道的Android体系架构和开发库.Android的体系架构鼓励组件重用,允许开发者发布共享Activity、Service并且访问其他应用程序的数据,还可以根据开发者制定的安全限制进行管理。话虽如此,...
《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...
《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...
《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...
6.1 Android体系结构介绍 57 6.1.1 应用程序(Application) 57 6.1.2 应用程序框架(Application Framework) 58 6.1.3 库(Libraries)和运行环境(RunTime) 58 6.2 Android 应用程序组成 59 6.2.1 ...
《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...
《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...
Android基础知识1.1 Android简介1.1.1 Android简要介绍1.1.2 Android发展历史1.1.3 Androidl技术特点1.1.4.Antlroid开发语言1.2.Antiroidl系统架构1.2.1 Android系统内核1.2.2 Android架构概述1.2.3 Android安全机制...
2.1 Android开发IDE介绍 14 2.1.1 Android Studio初体验 14 2.1.2 Android Studio配置 15 2.2 Android Studio高级使用技巧 19 2.2.1 更新SDK 20 2.2.2 Android Studio常用界面 21 2.2.3 导入Android Studio工程 23 ...