Android开发之Android体系架构介绍
8小时前
在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文件中。
发表评论
-
Sharepoint+MOSS分册第2轮筛选结果文章列表
2012-01-20 00:34 731Sharepoint+MOSS分册第2轮筛 ... -
在 Android 平台上应用 Berkeley DB 11gR2 SQL(drop-in模式)(转http://www.cnmsdn.com/html/201004/1270362092ID3134.html)
2012-01-20 00:34 788在 Android 平台上应用 Ber ... -
编程心得
2012-01-20 00:34 681编程心得 2011年03月21日 转自:http://w ... -
在 C# 中通过 P/Invoke 调用Win32 DLL
2012-01-20 00:34 766在 C# 中通过 P/Invoke 调用Win32 DLL ... -
http://www.cnblogs.com/yungboy/archive/2010/05/28/1746376.html
2012-01-20 00:33 867http://www.cnblogs.com/yungboy/ ... -
10] 建立C帝国(GDAL编译安装以及一般的C库编译步骤)
2012-01-19 01:31 89010] 建立C帝国(GDAL编译安 ... -
EGLIBC库介绍
2012-01-19 01:31 603EGLIBC库介绍 2011年05月05 ... -
给Win32 GUI程序调试信息输出方法
2012-01-19 01:31 1357给Win32 GUI程序调试信息输出方法 2011年09月2 ... -
SAMSUNG S3C2440的简易BootLoader ㈢
2012-01-19 01:31 608SAMSUNG S3C2440的简易BootLoa ... -
Application/Session/Cookie/viewstate/Cache/隐藏域/查询字符串的比较
2012-01-17 00:48 650Application/Session/Cookie/view ... -
v4l2驱动编写篇(2)
2012-01-17 00:48 1189v4l2驱动编写篇(2) 2011年04月01日 应用可 ... -
file_operation结构体详解
2012-01-17 00:48 1012file_operation结构体详解 2011年06月22 ... -
电脑蓝屏自动关机故障的检修方法
2012-01-17 00:48 657电脑蓝屏自动关机故障的检修方法 2011年09月23日 ... -
Video4Linux
2012-01-17 00:48 777Video4Linux 2011年12月05日 Vide ... -
HK-2000数据采集仪WEB服务器BOA的移植方法
2012-01-15 19:37 686HK-2000数据采集仪WEB服务器BOA的移植方法 200 ... -
如何为linux嵌入式开发建立交叉编译环境(2.4内核)
2012-01-15 19:36 700如何为linux嵌入式开发建立交叉编译环境(2.4内核) 2 ... -
【转】如何为嵌入式开发建立交叉编译环境
2012-01-15 19:36 755【转】如何为嵌入式开发建立交叉编译环境 2009年10月26 ... -
EGLIBC库介绍
2012-01-15 19:36 550EGLIBC库介绍 2011年05月05 ... -
c库函数qsort使用方法实例
2012-01-15 19:36 549c库函数qsort使用方法实例 2010年01月03日 ...
相关推荐
Android框架体系架构是Android开发中的核心内容,涵盖了UI晋升、组件内核、IPC(Inter-Process Communication,进程间通信)以及数据持久化等关键知识点。本文将详细介绍这些知识,以此来深入理解Android平台的运作...
"Apple_IOS、Android、WebOS系统体系架构对比" 本文从系统架构角度对比分析了 Apple_IOS、Android、WebOS 三大移动设备操作系统。三大系统都采用 Unix 或 Linux 内核,但在具体实现上存在很大的差异。 WebOS 系统...
【基于Android开发的点餐系统】是一个以Android Studio和MyEclipse 10为开发工具,结合MySQL数据库构建的应用程序,旨在实现一个简单的点餐流程,适用于初学者学习和实践。这个系统分为客户端和服务器端两个主要部分...
### Android开发教学大纲知识点解析 #### 一、课程地位与教学目标 1. **课程定位与联系**: - **定位**:本课程是计算机科学与工程学院的专业方向限选课程,面向计算机科学与技术、软件工程、网络工程等相关专业...
### 微信ANDROID客户端架构演进及其对开发流程的影响 #### 概述 随着移动互联网技术的迅猛发展,微信作为一款国民级应用,其ANDROID客户端的架构经历了多次重大的变革与优化。这些变革不仅反映了软件工程实践中...
作者从事Android开发十年有余,走过的弯路不计其数,深感经验总结有助于在Android上快速前行,早日完全掌握Android,达到Android巅峰! 内容主要包括: *Android 开发积累的重要经验 *Android 开发知识体系 *...
通过以上介绍,我们可以了解到Android开发的基础知识和技术架构,以及如何搭建开发环境和使用各种工具。这对于初学者来说是非常重要的第一步。随着不断学习和实践,开发者将能够开发出更多有趣且实用的应用程序。
这份PPT课件通过深入讲解这些关键知识点,将帮助开发者逐步建立起完整的Android开发体系,无论是对初学者还是有经验的开发者来说,都是一个宝贵的参考资料。通过不断学习和实践,你将在Android开发的道路上不断前进...
在Android开发领域,初学者经常会面临许多挑战,如理解Android体系结构、学习Java或Kotlin编程语言、掌握Android Studio的使用以及布局设计等。"Android开发入门之路(初学者必读).zip"这个压缩包可能包含了一系列...
《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!然而,Android系统太过于庞大,源代码实现复杂,学习的...
在Android开发领域,理解其架构是至关重要的,因为它决定了应用程序的运行方式和系统资源的管理。在本篇中,我们将深入探讨Android系统的五个主要组成部分:Linux Kernel、Android Runtime、Libraries、Application ...
- **Android SDK**:包含了开发Android应用所需的库文件、文档和其他工具。 - **NDK (Native Development Kit)**:用于开发本地代码的工具包,能够使开发者使用C或C++来编写高性能的应用程序部分。 ##### 1.3 建立...
这些层次构建了Android开发的完整知识体系,对于想要深入理解并成为一名高素质Android开发者的学员至关重要。 首先,底层系统开发涉及到Linux内核驱动开发与Android本地框架中的硬件抽象层(HAL)开发。学习这一层次...
Android 技术体系结构是 Android 操作系统的核心架构,它由四个主要部分组成:Linux Kernel、Android Runtime、Libraries 和 Applications。 一、Linux Kernel Linux Kernel 是 Android 操作系统的底层支撑系统...
1. **Android基础**:第9章可能涵盖了Android的基本概念,包括Android系统架构、Activity生命周期、Intent机制等,这些都是Android开发的基础。 2. **UI设计**:Android应用的用户界面设计是开发者必须掌握的部分,...
总的来说,《Android安全架构深究》将带领读者深入了解Android的多层次安全防护,学习如何开发更安全的应用,以及如何在日常使用中保护个人信息。无论是开发者希望提升应用的安全性,还是安全专家研究移动安全,这...
总结来说,Android的整体架构是一个精心设计的多层次体系,它在Linux内核基础上进行优化,以满足移动设备的特殊需求和提供丰富的应用开发环境。Android内核与通用Linux内核的主要区别在于针对移动设备的定制化改进,...
从给定的文件信息来看,这是一本名为《Android...这些知识点相互关联,共同构成了Android开发的完整体系。对于初学者而言,系统地学习和实践这些知识,将有助于快速提升自己的开发技能,成为Android领域的专业开发者。