什么是Android?
What isAndroid?
学了Android的四大组件,学了怎样在Android上创建自己的应用程序,并有能力开发自己的应用程序了,但是要想真正了解Android,还得多看Android的开发文档。下面翻译了一下Android开发文档中关于什么是Android的阐述。学到了一些知识,至少从大的方面看会更开阔(可能有不准确的地方)!!共勉。留在慢慢品味。
什么是android?
Android是一个移动设备的软件栈,其中包括一个操作系统,中间件和关键应用程序。而Android SDK则提供了必要的工具和API,为开发者使用Java编程语言在Android平台开发应用程序而准备。
Android的特性:
?应用程序框架:提供可重用和替换的部件。
?Dalvik虚拟机:为移动设备优化的Java虚拟机。
?集成的浏览器:基于开源的WebKit引擎。
?优化的图形:由一个自定义的2D图形库驱动;基于三维图形上的OpenGL ES1.0规范(硬件加速可选)。
?SQLite:结构化数据存储。
?媒体支持:常见的音频,视频和静止图像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
?GSM电话:(依赖于硬件)。
?蓝牙,EDGE,3G,和WiFi(依赖于硬件)。
?照相机,全球定位系统,指南针,和加速度计(依赖硬件)。
?丰富的开发环境:包括设备模拟器,调试器,内存和性能分析工具,和一个用于Eclipse IDE的插件。
Android架构:
下图显示了Android操作系统的主要组成部分。每一部分都在下面更详细地描述。
应用程序:
Android会附带了一套核心应用,包括电子邮件客户端,短信程序,日历,地图,浏览器,联系人,和其他。所有应用程序都使用Java编程语言编写的。
应用程序框架:
通过提供一个开放的开发平台,Android使开发人员的有能力建设极为丰富和创新性的应用程序。开发者可以自由访问到设备的硬件,接入本地信息,运行后台服务(Services),设置警报(alarms),添加状态栏通知(notifications)等等等等。
开发者完全可以与核心应用程序使用相同的框架API。应用程序架构旨在简化组件的重用;任何应用都可以发布它的功能,而让任何其他应用程序使用这些功能(主体框需要架执行安全约束)。该机制允许系统组件被用户替换。
所有应用程序的背后,是一套服务和系统,包括:
?一个丰富和可扩展的视图(View)集合,可以用来构建一个应用程序,包括列表(lists),网格(girds),文本框(text boxes),按钮(buttons),甚至可嵌入网页浏览器。
?内容提供者(Content Providers),使应用程序能够访问其他应用程序的数据(如通讯录),或共享自己的数据
?资源管理器(Resource Manager),提供非代码类资源访问,如本地化的字符串(strings),图形(graphics),和布局文件(layout files),等。
?通知管理器(Notification Manager),使所有的应用程序可以在状态栏显示自定义的警报。
?活动管理器(Activity Manager),管理应用程序的生命周期,并提供了一个一般性的回溯导航 。
对于更多的细节和应用程序的演练,看到API中的教程(Notepad Tutorial)。
类库:
Android包括一系列被Android系统组件所利用的C / C+ +类库。这些功能都通过Android应用程序框架暴露给开发者。下面列出了一些核心库:
?系统C库 - 一个标准C系统库(libc)的BSD派生的实现,并为基于嵌入式Linux的设备调整。
?媒体库 - 基于PacketVideo的OpenCORE库,支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4,H.264, MP3,AAC,AMR,JPG格式,和PNG。
?Surface Manager – 用于管理访问显示子系统,无缝从多个应用程序合成2D和3D图形层。
?LibWebCore - 一个现代化的网页浏览器引擎,同时服务Android自带浏览器和一个可嵌入的web视图。
?SGL - 底层的2D图形引擎。
?3D库 - 基于OpenGL ES 1.0 API的实现;类库或使用硬件3D加速(如果可用),或使用包含高度优化的3D软件光栅(softwarerasterizer)。
?FreeType – 用于位图和矢量字体渲染
?SQLite – 为所有的应用程序提供一个强大的和轻量级的关系数据库引擎。
Android运行时环境:
Android包括一套核心库,提供大部分Java编程语言核心库提供的功能。
每一个Android应用程序运行在它自己的进程中,运行自己的Dalvik虚拟机实例。 Dalvik被设计使设备可以有效地运行多个虚拟机。 Dalvik虚拟机执行Dalvik可执行格式(.dex),它是最小的内存占用优化文件。VM是基于寄存器的,运行由Java语言的编译器编译的类,它已经由“dx”工具转化成(.DEX)格式的。
Dalvik虚拟机依赖于Linux内核线程和低级别的内存管理的基本功能。
Linux内核:
Android依赖于Linux2.6版本的核心系统服务,如安全,内存管理,进程管理,网络堆栈,驱动模型等。同时,Linux内核也作为硬件和软件堆栈的其余部分之间的抽象层。