预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共38页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android技术专题 Android是第一个完全开源完全免费的具有商业级产品质量和巨大号召力的Linux智能手机平台。目前在国内外使用的越来越广泛,相信在不久的将来在国内的山寨机市场上逐步取代MTK的地位。基于个人兴趣,本人怀着好奇心利用业余时间比较系统的研究了这一系统,在这里与大家分享自己的笔记心得。文章记录的可能不是非常系统,有兴趣者欢迎进一步交流。 Android是什么 Android是一个完整的手机软件平台,包含底层的操作系统(Linux),中间件以及一些关键应用。Android还提供了一个SDK帮助开发者使用Java语言来开发。 特性 应用框架:提供机制使组件(component)能够被复用和替换 Dalvik虚拟机:为移动设备专门进行优化 浏览器:基于Webkit引擎 优化的图形库:基于一个定制的2D图形库;3D图形库基于OpenGLES1.0草案(硬件加速功能可选) SQLite 媒体支持:包括常见的音频,视频和静态图像格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF) GSM库(硬件相关) Bluetooth,EDGE,3G,和WIFi(硬件相关) Camera,GPS,compass和accelerometer(硬件相关) 完善的开发环境,包括一个模拟器,调试工具,内存和性能分析工具以及EclipseIDE插件 Android架构 下图给出了Android平台的主要组成元素 应用 Android平台预装了一些核心手机应用,包括电子邮件,短信,日历,地图,浏览器,地址本等等。这些应用都是使用Java语言编写。开发者也需要使用Java语言在Android平台上开发自己的应用程序。 应用框架 核心应用(电子邮件,短信等)所使用的任何API,Android开发者都可以访问。Android架构设计的一个重要考虑是使组件(component)易于复用:任意一个应用都可以向系统发布功能,而任意一个其他应用都可以调用这些功能(在不违背系统安全策略前提下)。这个机制还使任意组件(component)都可被开发者替换。 在应用之下是一组服务(service)和功能库,包括: 一组丰富和易于扩展的View(控件),用于构建应用的图形用户界面,包括list,grid,文本框,按钮,甚至一个强大的web浏览器控件 Contentprovider(内容提供者),使一个应用能够访问另外一个应用的数据(如地址本),或者共享自己的数据给其他应用使用。 资源管理器(ResourceManager),提供接口访问应用的non-code(非代码)资源,如本地化的字符串,图片文件,布局文件等。 NotificationManager(通知管理器):所有应用都可以通过NotificationManager在状态栏显示定制化的Alert(通知)或状态信息 ActivityManager:管理应用的生命周期以及activity窗口的后退机制。 库 Android平台包含一套C/C++库,供上层的组件使用。开发者不能直接访问这些库,但是可以通过Android应用框架来访问。下面列出了一些核心库: 系统C语言库-标准C系统库(libc)的一个BSD-派生实现,并为嵌入式设备进行了优化 媒体库-基于PacketVideo的OpenCORE。这个库支持许多音視频格式以及静态图像的播放和录音/像,如MPEG4,H。264,MP3,AAC,AMR,JPG和PNG。 SurfaceManager-管理对显示子系统的访问,并无缝的合成多个应用的2D和3D图层 LibWebCore-先进的web浏览器引擎。Android浏览器应用以及webview(控件,可嵌入其他应用)都是基于这个库。 SGL-底层的2D图形引擎 3D库-基于OpenGLES1.0API的一个实现库。如果硬件提供3D加速功能,这个库会利用硬件这个功能,否则使用一个优化的3D软件库 Freetype-位图和矢量字体引擎 SQLite-轻量级的关系数据库引擎。 Androidruntime Android包含一套核心库,提供了Java核心库的大多数功能。 每个Android应用运行在自己的进程空间中,运行在一个单独的Dalvik虚拟机实例上。Dalvik的设计能够保证同一个设备上有效的运行多个虚拟机(实例)。Dalvik上运行的可执行文件格式是DalvikExecutable(.dex)。这个格式文件占用较小内存。VM是Register-based(?),运行的类由一个Java编译器编译生成,然后由"dx"工具转化成.dex格式。 Dalvik虚拟机依赖Linuxkernel提供提供一些基础功能,如线程,初级内存管理等。 LinuxKernel Android依赖Linu