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小时内删除。