《深入理解Android:Telephony原理剖析与最佳实践》一1.2 Android系统架构

1.2 Android系统架构

前面学习了智能手机的基本硬件结构,可以通过功能手机与智能手机的特点和区别从本质上认识它们。Android智能手机操作系统作为运行在AP上的开源智能手机操作系统,其系统架构是什么样的呢?我们先看看图1-2。
通过图1-2不难发现,Android手机操作系统是一个基于Linux Kernel的分层智能手机操作系统,其共分为4层,从上到下分别是Java Applications(应用层)、Java Frameworks(应用框架层)、User Libraries(系统运行库层)和Linux Kernel(核心层),下面将对这4层进行简要的分析和介绍。

1.2.1 应用层

Android近几年的发展可谓迅猛,之所以会出现这样的情况,一个很重要的原因就是它的应用非常多。安卓市场已发布的软件个数和软件下载量目前仅次于苹果的应用商店,并且保持着快速增长的态势。这些第三方发布的应用(如游戏、导航、播放器、桌面主题等)日益丰富,终端用户才能不断地发展和壮大,而这些应用均在应用层运行。

应用层包括了Android各种应用程序,这些应用程序使用Java语言开发并运行在Dalvik虚拟机上,在Android系统架构中的第一层。在Android源码和SDK(Software Development Kit,软件开发工具包)中,Google已经捆绑和发布了一些核心应用及源代码,如Dialer、MMS、日历、Google地图、浏览器、联系人等。

1.2.2 应用框架层

如图1-2所示,Android系统框架中的第二层是框架层,它是用Java语言实现和开发的。有了框架层,开发者使用框架层提供的API便可以非常方便地访问设备硬件、获取位置信息、向状态栏添加通知消息、设置闹铃等,而不必关心底层具体的实现机制和硬件实现方式。这样,简化了Android应用程序开发的架构设计,从而开发者能够快速开发新的应用程序。
应用框架层是Google发布的核心应用所使用的API框架,开发人员可以使用这些框架提供的API来快速开发自己的应用程序,下面是Android中一些主要的组件的简单介绍及相关说明。
Views(视图):在Android SDK中介绍了非常丰富的Views使用方法及相关属性,所有的Android应用程序由这些Views构成,主要包括了列表(Lists)、网格(Grids)、文本框(Text)、按钮(Buttons)等基础Android应用的界面控件。
Resource Manager(资源管理器):提供非代码资源转换和访问,如本地字符串(XML文件配置)、图片和布局文件(Layout Files,使用XML文件配置)。
Notification Manager (通知管理器):应用可以在状态栏中显示自定义的提示信息,如新短信通知、未接来电通知、手机信号量通知等。
Activity Manager(Activity管理器):用来管理Android应用程序界面的生命周期(onCreate创建、onResume显示、onPause暂停、onStop停止等),一个手机屏幕界面可对应一个Activity。

1.2.3 系统运行库层

如图1-2所示,Android系统架构中的第三层为系统运行库层,这一层主要包含了手机系统平台必须的C/C++核心库、Dalvik虚拟机运行环境和HAL子层。我们跳过HAL,先简单地介绍和分析Android包含的C/C++核心库和Dalvik虚拟机运行环境。
1. C/C++核心库
系统运行库层包含一个C/C++库的集合,当使用应用框架的一些接口时,系统运行库层通过C/C++核心库来支持对应的组件使用,使其能更好地为Android应用开发者服务。下面是一些主要的核心C/C++库及其简要说明。
libc(系统C库):C语言标准库,处于系统最底层的系统库,由Linux系统来调用。
Media Frameworks(多媒体库):Android系统多媒体库,支持当前手机平台上主流的音频和视频格式的播放和录制,以及静态图像,如MPEG-4、MP3、AAC、JPG、PNG等多媒体格式。
SGL:2D图形引擎库。
OpenGL:对3D效果的支持。
SQLite:轻量级关系数据库引擎,可用来增、删、改、查通话记录、联系人等信息内容。
WebKit:新式的Web浏览器引擎,支持当前非常流行的HTML 5。
SSL:基于TCP/IP网络协议,为数据安全通信提供支持。
2. Dalvik虚拟机运行环境
系统运行库层包含了Android Runtime,其核心为Dalvik虚拟机。每一个Android应用程序都运行在Dalvik虚拟机之上,且每一个应用程序都有自己独立运行的进程空间;Dalvik虚拟机只执行DEX(Dalvik Executable)可执行文件。
DEX格式是专为Dalvik设计的一种压缩格式,适用于内存和处理器速度有限的系统;要生成DEX格式文件,首先要通过Java程序编译生成class文件,然后通过Android提供的dx工具将class文件格式转换成DEX格式。
Dalvik虚拟机的特性总结如下:
每个Android应用运行在一个Dalvik虚拟机实例中,而每一个虚拟机实例都是一个独立的进程空间;
虚拟机的线程机制、内存分配和管理、Mutex(进程同步)等的实现都依赖底层Linux操作系统;
所有Android应用的线程都对应一个Linux线程,因而虚拟机可以更多地使用Linux操作系统的线程调度和管理机制。
注意 因为Android的编程语言是Java语言,所以我们容易将Dalvik虚拟机与Java虚拟机认为是同一个东西。Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;它们之间最大的不同在于:Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的是其专有的DEX格式的文件。

1.2.4 核心层

Android 4.0基于Linux Kernel 3.0.8提供核心系统服务,例如文件管理、内存管理、进程管理、网络堆栈、驱动模型等操作系统的基本服务能力。核心层内核同时也作为硬件和软件之间的抽象层,需要一些与移动设备相关的驱动程序支持,主要的驱动如下所示。
Display Driver(显示驱动):基于Linux的帧缓冲驱动。
Keyboard Driver(键盘驱动):输入设备的Key键盘驱动,比如Home待机、Menu菜单、Return返回、Power电源等设备按键。
Audio Driver(音频驱动):常用的基于ALSA(Advanced Linux Sound Architecture)的高级Linux声音体系驱动。
Power Management(电源管理):比如电池电量、充电、屏幕开启关闭等管理。
Binder IPC驱动:Android平台上一个特殊驱动程序,具有单独设备访问节点,用来提供IPC进程间通信的功能。
Bluetooth Driver(蓝牙驱动):基于IEEE 802.15.1标准的蓝牙无线传输技术。
Wi-Fi Driver(Wi-Fi驱动):基于IEEE 802.11标准的Wi-Fi驱动程序。
Camera Driver(照相机驱动):常用的基于Linux的照相机驱动。

时间: 2024-12-03 13:12:09

《深入理解Android:Telephony原理剖析与最佳实践》一1.2 Android系统架构的相关文章

《深入理解Android:Telephony原理剖析与最佳实践》一1.3 Android Telephony框架结构

1.3 Android Telephony框架结构 前面对Android手机操作系统整体框架结构及每一层进行了简单的分析和说明,相信大家对Android智能手机操作系统有了一些基本的了解和认识.结合前面Android的系统整体框架,我们接着学习Android Telephony涉及的框架结构,如图1-3所示. 通过图1-3所示不难发现Android Telephony框架结构的一些规律,总结如下. Android Telephony的业务应用跨越了AP和BP.AP与BP相互通信,符合前面介绍的智

《深入理解Android:Telephony原理剖析与最佳实践》一3.5 本章小结

3.5 本章小结 本章主要对Android Telephony相关模块使用到的一些关键技术进行了分析和实例讲解,包括Handler.Broadcast两种异步通信的机制和AIDL跨应用的服务调用.Handler主要有几种消息处理方式?Handler对象的创建在主线程和子线程有什么区别?AIDL如何定义接口?AIDL接口定义完成后,对应的代码是如何生成的?Broadcast接收方的过滤器有几种设置方式?通过本章的学习,相信大家都对这些知识点会有较深入的认识和理解. 对Android中的Handle

《深入理解Android:Telephony原理剖析与最佳实践》一3.3 AIDL跨应用服务

3.3 AIDL跨应用服务 Android Telephony框架层提供了一些AIDL系统服务以及第三方应用,通过这些系统服务可方便地获取手机当前状态,如待机状态.通话中.来电等,这些状态在Android手机应用开发中非常重要.如果我们开发一款Android平台的手机音乐播放器,在使用音乐播放器的过程中需要知道手机当前是什么状态,如果是通话中或来电,这时就必须暂停播放音乐. 3.3.1 AIDL概念分析 什么是AIDL呢?AIDL的Android官方定义如下: AIDL (Android Int

《深入理解Android:Telephony原理剖析与最佳实践》一导读

前 言 随着ICT技术的推广和发展,在三网融合.智慧的地球(物联网)等概念风行的形势下,手机终端技术的发展和进步可谓日新月异:Android经受住了市场的考验,并占据了较大的市场份额,从手机芯片厂家.手机生产厂家到各种应用开发公司.互联网公司等,逐步形成了以Android系统平台为核心的上下游产业链.正是由于Android源代码的开源,各大手机厂商才能通过深度定制Android系统平台,在降低研发成本的同时,快速推出具有自身特色的Android智能手机产品.因此,各大手机厂家在推出新版本Andr

《深入理解Android:Telephony原理剖析与最佳实践》一第1章 初识Android

第1章 初识Android Android中文意思为"机器人",中文翻译为"安卓",是Google于2007年11月5日发布的基于Linux平台的开源手机操作系统的名称.该平台由操作系统.中间件.用户界面和应用软件组成,被称为首个为移动终端打造的真正开放和完整的移动软件.Google与电信运营商.手机设备制造商.芯片开发商以及其他有关方面结成深层次的合作伙伴关系,希望借助建立标准化.开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统. 从2007年到现在

《深入理解Android:Telephony原理剖析与最佳实践》一3.1 何为同步和异步

3.1 何为同步和异步 Android Telephony相关应用中,Telephony大量使用了Handler.Broadcast等通信方式,而在Android操作系统平台中的Handler消息处理.Broadcast广播消息等均采用异步通信机制,那么我们首先要清楚什么是异步通信机制,与它相对同步的通信机制是什么,有什么区别. Synchronous(同步)和Asynchronous(异步)的概念最早来自通信领域. 通信的同步:指客户端在发送请求后,必须要在服务端有回应后客户端才继续发送其他请

《深入理解Android:Telephony原理剖析与最佳实践》一第2章 搭建Android源代码编译环境

第2章 搭建Android源代码编译环境 第1章介绍了Android以及其Telephony功能模块的基本结构,在本章中将带着读者去搭建Android编译环境.即使你已经能够在自己计算机上成功编译Android源代码了,也希望你能阅读本章内容,因为本章不乏一些技巧的总结和Android相关实用工具使用方法的介绍. Android的编译环境作为深入学习Android的基础,不可缺失,能够成功下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步:Android环境搭建比

《深入理解Android:Telephony原理剖析与最佳实践》一第3章 主要技术准备

第3章 主要技术准备 第2章介绍了搭建Android源码编译环境以及Android相关常用工具使用的一些技巧和总结,接下来我们是不是应该开始学习Android Telephony相关内容了呢?先不着急,工欲善其事,必先利其器,我们还要做一些的技术准备工作,也就是学习Android Telephony涉及的一些关键技术,其中包括Handler消息处理机制.AIDL跨应用服务访问和Broadcast系统广播.这些技术在Telephony中使用较多,所以在学习Telephony前,需要对这几个重点技术

《深入理解Android:Telephony原理剖析与最佳实践》一2.2 Android源代码下载及编译过程

2.2 Android源代码下载及编译过程 前面完成了Ubuntu.JDK.Android SDK的安装和配置,接着开始下载和编译Android 4.0源代码,这个过程简单但花费的时间比较长,请读者先有个心理准备. Android 4.0的代号为Ice Cream Sandwich,简称ICS,中文名称冰淇淋三明治. 2.2.1 工作目录设置 本书采用ICS名称的文件夹作为Android 4.0源代码的根目录,在用户根目录下新建代码根目录ICS文件夹,并设置此目录为工作目录,在.bashrc中增