Android平台分析综述
摘要:本文通过分析Android平台框架,详细论述了Android平台三种开发模式,给出了针对Android平台框架及其相关模块的分析方法,并以项目为例,讨论了我们在Android平台上的开发流程了及其改进方案。
关键字:Android, 框架分析 开发模式 Marvell平台
1 引言
对于移动终端设备开发商而言,Android平台的出现既是机遇也是挑战。如何在最短的时间内搭建和部署Android平台、如何开发高效的应用程序、如何高效的进行项目管理等问题均显得尤为突出。
为了能够更好地解决上述问题,本文首先对Android平台的由来和功能做了简要的介绍,通过对Android平台框架的介绍,以期能够对Android有一个全面的认识。在此基础之上,本文从软件的角度提出了Android平台分析方法及其开发模式。最后,本文结合项目,简要介绍了Marvell平台的开发流程。
2 Android平台简介
2.1 Android的由来
2005年7月,Google并购了成立仅22个月的高科技企业Android公司,展开了短信、手机检索、定位等业务,同时基于Linux的Android平台也进入了开发阶段。
2007年11月05日,以Google为主导,由几十个手机相关企业建立了开放手机联盟(OHA,Open Handset Alliance)宣布成立,并宣布开发基于Linux2.6内核的开源手机系统平台——Android。该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前,OHA的成员主要包括电信运营商(包括中国移动、中国电信、中国联通在内的13家)
、手机厂商(包括华为、中兴在内的20家)、芯片公司(包括Marvell、高通在内的20家)、软件公司(如Google等16家)和商业化公司(如播思等10家)等五大类,共79个成员。Google通过与联盟成员结成深层次的合作伙伴关系,并希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
2.2 Android的特性及其优势
Android主要有如下特性:
♦ 应用程序框架 支持组件的重用与替换;
♦ Dalvik虚拟机 专门为移动设备做了优化;
♦ 内部集成浏览器 该浏览器基于开源的WebKit引擎;
♦ 优化的图形库,包括:2D和3D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选);
♦ SQLite 用作结构化的数据存储;
♦ 多媒体支持:包括常见的音频、视频和静态印象文件格式(如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF);
♦ GSM、CDMA电话(依赖于硬件);
♦ 蓝牙Bluetooth, EDGE, 3G, and WiFi(依赖于硬件);
♦ 照相机,GPS,指南针,和加速度计(依赖于硬件);
♦ 丰富的开发环境:包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件
Android作为一个智能手机的平台,其技术上的优势主要包含以下一些方面[]:
♦ 全开放智能移动电话平台;
♦ 多硬件平台的支持;
♦ 核心技术完整、统一;
♦ 完善的SDK和文档;
♦ 完善的辅助开发工具。
2.3 Android的版本
自2009年2月9日,发布Android1.1版本以来,Android已经发布了多个版本更新,这些更新主要是修复了前一版本的bug,并增加了一些新的特性。通常,每一次版本发布,除了给每一代Android操作系统命名一个数字编号外,还有一个以甜食命名的代号,并有着A、B、C、D、E……这样的首字母排序。目前已知的包括1.5版 Cupcake(纸杯蛋糕),1.6版Donut(甜甜圈)、2.0/2.1版Eclair(法式奶油夹心甜点)、2.2版Froyo(冻酸奶)以及下一代2.3版Gingerbread(姜饼)。表 1给出了Android各个版本的主要特性。
表 1 Android各版本的主要特性
版本号、发布日期及Linux版本 | 特性 | 代表机型 |
版本号:1.1 发布日期:2009.2.9 | 闹钟、API 示例、浏览器、计算器、摄像头、联系人、开发工具包、拨号应用、、地图 (包含街景)、 信息服务、音乐、图片、设置 | 2008年9月23日在美国,谷歌联合HTC和T-Mobile联合发布了史上第一台Android手机,即: T-Mobile G1,其采用的是Android1.0版本 |
版本号:1.5 代号:Cupcake 发布日期:2009.4.30 Linux版本:2.6.27 | 用户界面得到了极大的改良,并且增添了以下功能: 支持拍摄和回放视频并支持上传视频到 YouTube 以及 Picasa; 支持蓝牙A2DP和AVRCP,并支持自动蓝牙连接 支持拷贝/粘帖,增加新的软(虚拟)键盘; 增加新的主屏widgets,支持动态界面切换; | HTC在MWC2009大会上发布了HTC Magic,民间俗称G2; 2009年5月,HTC发布HTC Hero,采用了HTC Sense 的UI |
版本号:1.6 代号:Donut 发布日期:2009.9.15 Linux版本:2.6.29 | 主要的更新如下: Android 应用市场集成; 照相、摄像以及浏览, 多选/删除功能; 手势搜索; 语音搜索应用集成,极大提升了语音阅读功能,支持文字转语音系统(TXT-2-speech); 对非标准分辨率有了更好的支持; 支持CDMA网络; | HTC Tattoo(G4); 联想乐Phone |
版本号:2.0/2.1 代号:Eclair 发布日期:分别于2009.12.3和2010.1.12 Linux版本:2.6.29 | 其主要更新如下: 优化硬件速度; 支持更多的屏幕分辨率; 增加新的浏览器UI并支持HTML5; 新的联系人列表; 优化Google Maps 3.1.2 支持Microsoft Exchange; 支持多点触摸; 制作android软件流程 优化了虚拟键盘; 支持蓝牙2.1; 支持活动墙纸 | 索尼爱立信X10; 摩托罗拉Milestone(XT702,Droid); Google自有品牌的Nexus One(G5) |
版本号:2.2 代号:Froyo (Frozen Yogurt) 发布日期:2010.5.20 Linux版本:2.6.32 | 主要的更新: 综合Android OS速度、内存及其性能优化; JIT的实现,大幅度提升了应用程序的速度; 大量 Exchange 支持改进,支持 Exchange 2010,包括远程数据抹除,自动发现服务,完整的日程表支持,全局联系人列表查。 蓝牙语音拨号和共享联系人; 增加数据连接使能选项; 支持多键盘语言; 支持浏览器的文件上传功能,支持GIF; 支持将应用程序安装在可扩展的存储器上(如SD卡); 支持Adobe Flash 10.1 ; 最多支持 8 个设备连接的移动热点功能 | Google Nexus One(G5); HTC Desire |
版本号:2.3 代号:Gingerbread 发布日期:近期发布 Linux版本:2.6.33或.34 | 已经确认的新特性: 支持WebM视频回放; 提高复制、粘贴功能; 提高社网络特征; 未经确认的新特性: 支持Android Market音乐存储; 重新设计的UI; 支持WXGA(1366 x 768); 支持视频电话 支持WebP图像文件; 支持Google TV | |
版本号:3.0 代号:Honeycomb 发布日期:2011年上半年 | 此前曾传言Android 3.0新系统对硬件有了要求,最低配置1GHz处理器、512MB RAM、3.5英寸屏幕。现已被证实,该传闻有误。 | |
版本号:?4.0 代号:?Ice Cream 发布时间:?2011年年中 | ||
3 Android平台架构
Android平台体系结构由5个部分组成,由下至上分别为:Linux内核层;C/C++函数库;Android运行时库;应用层框架;Android应用程序,如图 1所示。
图 1 Android体系结构
(1)Linux内核层
Android基于Linux2.6内核,提供核心系统服务,这些服务包括安全机制、内存管理、进程管理、网络堆栈以及一系列硬件驱动。Linux内核扮演的是硬件层和系统其他层次之间的一个抽象层的概念。需要注意的是,这个内核操作系统并非类GNU/Linux的,所以其系统库、系统初始化和编程接口都和标准的Linux系统有所不同的。它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。
(2)Android运行时库
Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机
执行。一般编译完成后的应用程序名为.apk文件,它是压缩的.dex文件。Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。更多的细节请参考文献[]。
(3)C/C++函数库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
● 系统 C 库:一个从 BSD 继承来的标准 C 系统函数库( libc ),它是专门为基于 embedded linux 的设备定制的。
● 媒体库:基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
● Surface Manager:对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
● LibWebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
● SGL:底层的2D图形引擎
● 3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。
● FreeType:位图(bitmap)和矢量(vector)字体显示。
● SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
(4)应用框架层
在应用框架层,Android开发人员可以跟那些核心应用一样,拥有访问框架的所有APIs。该应用框架的设计简化了组件的重用;任何一个应用程序都可以发布它的功能模块,并且任何其它的应用程序都可以使用其所发布的功能块(必须遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。更多的信息可以参考文献[]。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;
● 丰富而又可扩展的视图(Views):可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web浏览器。
● 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
● 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形、和布局文件(layout files)。
● 通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论