Android扫盲篇
本来这一篇想略掉,可一想还有很多刚接触Android的朋友,有必要介绍一下关于Android的一些基本常识,如果你已经开始学习android了这一章可以飘过!
首先Android是一个开放的移动设备平台,包括操作系统,中间件和关键应用软件堆栈。 它基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机系统平台,早期由Google开发,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。之后Android提供了NDK以供开发者使用其他语言编写程序。另外,为了推广此技术,Google和其他几十个手机公司创建了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google始发表自家品牌手机电话的Nexus One。它有以下特点:
· 应用程序框架,使组件的重用和替换
· Dalvik虚拟机为移动设备优化
· 集成浏览器基于开源的WebKit的引擎
· 优化的图形,通过自定义的2D图形库供电;基于3D图形的OpenGL ES 1.0规范(硬件加速可选)
· SQLite为结构化数据存储
· 媒体支持常见的音频,视频和静止图像格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF )
· GSM电话(依赖于硬件)
· 蓝牙,EDGE,3G和WiFi(依赖于硬件)
· 摄像头,GPS,指南针,和加速度计(依赖于硬件)
· 丰富的开发环境,包括设备模拟器,调试,内存和性能分析工具,和一个用于Eclipse IDE插件
该系统被成功运用到了 手机,平板电脑,彩电,GPS导航,车载电视等设备上。
Android架构
应用
Android核心应用,包括电子邮件客户端,SMS程序,日历,地图,浏览器,联系人,和其他应用。所有应用程序都使用Java编程语言编写的。
应用框架
通过提供一个开放的开发平台。开发者可以*的开发丰富的应用程序,开发人员可以完全访问核心应用中使用相同的框架API。应用程序的架构设计简化了组件的重用,任何应用都可以发布它的功能并且能够使用任何其他应用程序的功能。
应用库
Android包含一套C / C + + Android系统的各个组成部分所使用的库。这些功能通过Android应用程序框架暴露给开发者。下面列出了一些核心库:
· 系统C库 -一个标准C系统库,为嵌入式的,基于Linux的设备。
· 媒体库 -基于PacketVideo的OpenCORE;支持许多流行的音频和视频格式的播放和录音,以及静态图像文件,包括MPEG4,H.264,支持MP3,AAC,AMR,JPG, PNG
· 视图管理器 -管理多个应用程序,显示子系统和2D,3D图形层的访问
· LibWebCore -一个现代的Web浏览器的引擎SGL -底层的2D图形引擎
· 3D库 -基于OpenGL ES 1.0 API的基础上实现;使用或者硬件3D加速(如果可用)或所包含的,高度优化的3D
· FreeType -位图和矢量字体渲染
· SQLite -所有的应用程序提供的一个强大的和轻量级的关系数据库引擎
Android的运行环境
每个Android应用都运行在它自己的进程中,拥有自己的Dalvik虚拟机实例。Dalvik被设计成可以有效地运行多个虚拟机。Dalvik虚拟机执行的Dalvik可执行文件(。DEX)格式,这是最小的内存占用优化文件。VM是基于寄存器的,并运行由Java语言的编译器,编译成.dex文件的编译类。Dalvik虚拟机依赖于Linux内核。
Linux内核
Android的核心系统服务,如安全,内存管理,进程管理,网络堆栈和驱动程序模型依赖在Linux 2.6版本。内核也作为硬件和软件堆栈的其余部分之间的抽象层。
---------------------------------------------------------------------------------------------
Android版本发行
Android系统基本上每半年一次的升级,分别定在每年的夏天和年终。每代Android系统都将以甜点命名.比如:
1.5版叫做Cupcake(纸杯蛋糕)
1.6版为Donut(甜甜圈)
2.1版的Eclair(闪电泡芙,一种法式奶油夹心甜点),此版本曾被叫做Flan“水果馅饼”,之后是
2.2版的Froyo(冻酸奶)
2.3版的Gingerbread(姜饼).
以CDEFG字头顺序排列.
上一篇: 一大波实用的 bash 别名和函数
下一篇: java序列化认识