Android的基础介绍

Android是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口。
特性
? 应用程序框架支持组件的重用与替换
? Dalvik虚拟机专为移动设备优化
? 集成的浏览器基于开源的WebKit引擎
? 优化的图形库包括定制的2D图形库,3D图形库基于OpenGL ES 1.0(硬件加速可选)
? SQLite用作结构化的数据存储
? 多媒体支持包括常见的音频、视频和静态图像格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,GIF)
? GSM 电话技术(依赖于硬件)
? 蓝牙Bluetooth, EDGE, 3G, 和WiFi(依赖于硬件)
? 照相机,GPS,指南针,和加速度计(accelerometer)(依赖于硬件)
? 丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件
应用程序框架
Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括:
? 丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮( buttons),甚至可嵌入的web浏览器。
? 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据
? 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。
? 通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。
? 活动管理器( Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
程序库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android 应用程序框架为开发者提供服务。以下是一些核心库:
? 系统C库- 一个从BSD继承来的标准C系统函数库(libc),它是专门为基于embedded linux的设备定制的。
? 媒体库- 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。
? SurfacSurface Manager – 对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
? LibWebCore- 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
? SGL – 底层的2D图形引擎
? 3D libraries – 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D 软加速。
? FreeType -位图(bitmap)和矢量(vector)字体显示。
? SQLite – 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
Android运行库
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的”dx” 工具转化成.dex 格式由虚拟机执行。Dalvik虚拟机依赖于linux 内核的一些功能,比如线程机制和底层内存管理机制。
Linux内核
Android的核心系统服务依赖于Linux 2.6内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。
Android内核
? Linux内核版本2.6
? 位于硬件和软件堆之间的抽象层
? 核心服务:安全机制、内存管理、进程管理、网络、硬件驱动。
Android依赖Linux内核2.6 提供核心服务,比如安全、内存管理、进程管理、网络、硬件驱动。在这里,Linux内核扮演的是硬件层和系统其它层次之间的一个抽象层的概念。这个操作系统并非类GNU/Linux的,因为其系统库,系统初始化和编程接口都和标准的Linux 系统是有所不同的。
从Google目前release的Linux系统来看,其没有虚拟内存文件系统,系统所用的是yaffs2 文件系统,具体的映像也都位于SDK安装目录下。通过emulator -console命令,我们可以在host中断下得到一个简单的可以控制Android的shell,这个系统包含了一个Toolbox,提供一些基本的命令工具, 集中在/sbin,/system/sbin,/system/bin中,但是很简陋,命令种类也很少。
目前Android的程序安装模式是靠Eclipse自动进行的,通过对底层的分析可知,大致步骤就是在/data/app和data/data下存放android底层和普通内核没有什么大的区别,我们可以将其作为一个Linux来进行开发和hacking。
Lib和运行环境
lib
? C/C++库:被各种Android组件使用
? 通过应用程序框架开发者可以使用其功能
包括:
? 媒体库:MPEG4 H.264 MP3 JPG PNG …..
? WebKit/LibWebCore:Web浏览引擎
? SQLite关系数据库引擎
? 2D,3D图形库、引擎
丰富的类库支持:2D和3D图像库OpenGL ES、数据库SQLite、对象数据库db4o类库、媒体库、基于Linux底层系统C库等等,让应用开发更简单多样。Google使用Apache的Harmony类库,Harmony某些方面速度快于Sun的VM。Runtime在Dalvik Java VM上,Dalvik采用简练、高效的byte code格式运行,它能够在低资耗和没有应用相互干扰的情况下并行执行多个应用。
运行时环境:
? 核心库提供的Java功能
? Dalvik虚拟机依赖于Linux内核,例如线程或底层内存管理
? 设备可以运行多个Dalvik虚拟机,每一个Android应用程序在它自己的Dalvik VM实例中运行
? VM 执行优化的Dalvik可执行文件(.dex)
? Dx-工具把编译过的Java文件转换为dex文件
应用和框架
? 核心应用,例如联系人,电子邮件,电话,浏览器,日历,地图,…
? 充分访问所有核心应用框架API
? 简化组件的重用
? 用Java 编写应用程序
支持的功能
+ Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。
+ Dalvik virtul machine: 一个基于Linux 的虚拟机。
+ Integrated browser: 一个基于开源的WebKit 引擎的浏览器,在应用程序层。
+ Optimized graphics: 包含一个自定义的2D 图形库和基于OpenGL ES 1.0 标准的3D 实现。
+ SQLite: 数据库
+ Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
+ GSM Telephony: GSM 移动网络, 硬件支持。
+ Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。
+ Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。
+ Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了Eclipse的插件。最底层的是一个Linux Kernel,加载了几个移动设备必要的系统驱动;上面是类库和Runtime,绿色的类库部分可以看到大名鼎鼎的SQLite,这个软件甚至声称自己属于公共领域(比MIT License 还要强),字体FreeType是BSD-style License的,图形库OpenGL ES只需通过产品测试,无偿使用于产品。再向上看是应用层的东西了,这里可以做的事情就非常多了,各个社区,各个厂家都可以参与进来。难怪Android的sdk可以Apache License发布了,对企业和开发人员友好啊。那么Google自己的东西在哪里呢?没错,就是那个runtime,最吸引技术人员的就是这个runtime(注意,这个才是Android 的核心)。Google为它准备了一个虚拟机,叫做Dalvik。这个让人摸不着头脑的东西的到底是什么?从开发平台上我们清清楚楚地得到了答案:Java
Android 学习方法
① 了解什么是Android
② 建立开发环境
③ 阅读SDK 文档
④ 背景知识
? Java
? 面向对象
? 设计模式
? J2ME、Brew、Symbian
建立Android开发环境
① 下载JDK 5 or JDK 6 (JRE alone is not sufficient) ->安装->设置环境变量JAVA_HOME CLASSPATH path
② 下载Eclipse 3.3 (Europa), 3.4 (Ganymede) IDE for JAVA->解压
③ 下载Android SDK 解压-> path 里加入SDK包中的tools 目录全路径
④ 下载ADT 0.8.0 解压
⑤ 打开Eclipse 安装ADT插件



无觅相关文章插件,快速提升流量

评论已关闭!