定义
Android早期由”Android之父”之称的Andy Rubin创办,Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,基于Linux的通用平台进入了开发。Google公司在2007年11月5日正式公布这个操作系统,2008年,Patrick Brady于Google I/O演讲”Anatomy & Physiology of an Android”,并提出的Android HAL架构图。HAL以*.so档的形式存在,可以把Android framework与Linux kernel隔开。Android拥有功能强大的API,出色的文档,茁壮成长的开发人员社区,而且不需要为开发或发布支付费用。随着移动设备的日益普及,不管在怎样的开发背景下,使用Android软件开发新颖的手机应用程序都是一个令人为之振奋的良机。
特性
应用程序框架支持组件的重用与替换 ·Dalvik虚拟机专门为移动设备做了优化 ·内部集成浏览器该浏览器基于开源的WebKit 引擎 ·优化的图形库 包括2D和3D图形库,
3D图形库基于OpenGL ES 1.0 (硬件加速可选) ·#SQLite 用作结构化的数据存储·多媒体支持 包括常见的音频、视频和静态印象文件格式(如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) ·GSM电话 (依赖于硬件) ·蓝牙Bluetooth, EDGE, 3G, and WiFi (依赖于硬件) ·照相机,GPS,指南针,和加速度计 (依赖于硬件) ·丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。
架构
应用程序
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。
View等同于J2ME的Displayable,程序人员可以通过 View 类与”XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。
应用程序的运行
在模拟器上运行
仿真是虚拟设备(AVD),我们需要配置来运行我们的Android应用程序。
步骤1、开放的AVD管理
步骤2、新的按钮,点击添加新设备,并配置您的设备设置。
步骤3、会有一个结果窗口显示所有已配置你上一屏幕选择。
步骤4、按”确定”,你将会看到你的设备列在有你可以关闭此窗口。
步骤5、运行你的Android应用程序项目从Eclipse,如果只有一个AVD配置,它会自动部署的应用程序也会出现一个窗口,选择你的图片。 仿真器将开始。
在设备上运行
Android应用程序可以直接部署在Android设备上,这几个配置所需要的。
步骤1、在调试模式的设置可以设置应用程序:Android的<应用程序>元真可调试属性。ADT 8这是默认的。
步骤2、您的设备上启用USB调试:Android 3.2或以上转至设置>应用程序>开发和启用USB调试。
在Android 4更新,这是开发商选择设置>。
注:在Android 4.2更新,开发者选项是默认隐藏。可以,去设定>android的版本号。返回先前屏幕找到开发商选择。
步骤3、安装USB驱动程序为您的设备,计算机识别你的设备。
步骤4、一旦设置和您的设备通过USB连接,从Eclipse菜单栏安装您的应用程序在设备上选择运行>运行(或运行>调试)。
中介软件
操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java 实现,并且采用特殊的Dalvik虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种”暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
硬件抽像层
Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考虑驱动程序实现的前提下进行发展。
HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL”提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明”类型”,即 module ID,就可以取得操作函数。
编程语言
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。
Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
发展
Android在中国的前景十分广阔,首先是有成熟的消费者,在国内,Android社区十分红火,这些社区为Android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了Android阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同时不仅仅局限于手机,国内厂家也陆续推出了采用Android系统的MID产品,比较著名的包括由Rockchip和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7和2010年推出的原道N5,我们可以预见Android也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid系统的应用范围。另一方面,由于国内政策的限制,导致Android的部分功能(如Android market)在国内无法正常使用,常用的解决方法是使用VPN服务来访问。
Gartner预计,到2016年底,将有23亿部计算机、平板电脑和智能手机使用Android,而Windows设备数量为22.8亿部。相比之下,到年底,Windows设备数量将达到15亿部,而Android设备数量为6.08亿部。
Android操作系统2008年才上市,随后迅速成为主导性的智能手机平台,市场份额达到了2/3。与此同时,在快速发展的平板电脑市场,Android份额也位居第二。虽然Android是一款免费软件,但它却推动了谷歌核心的搜索业务增长。
由于越来越多的用户转向平板电脑和智能手机,第三季度全球PC出货量同比下滑8%,为2001年来的最大降幅。虽然微软Windows长期统治PC市场,但在智能手机市场,微软的份额仅约为3%。
就业前景和行业需求
随着移动互联网的到来和迅猛发展,移动互联网开发人员的需求也是与日俱增。比如说android市场,国外Android市场正在如日中天的扩展,据市场研究公司IDC发布研究报告称,预计中国智能手机市场在全球市场上所占份额将会从18.3%上升至26.5%,而美国市场所占份额则将从21.3%下降至17.8%。相信在不久的将来会有更多的用户选择Android系统的手机或是无线终端设备。
目前中国拥有世界上最大的手机用户群,再加上3G的推出对整个行业的巨大推动作用,全世界所有大中小型手机制造商几乎都在招聘Android工程师。然而每天有超过16万台的Android设备出货,一年后全球可能会有超过1亿台的Android设备,以后将超越iphone成为智能手机平台的旗舰。
开发大会
AndroidWorld Global Developers Conference 安卓全球开发者大会(英文简称:AndroidWorld)是IDG美国国际数据集团旗下的知名展会品牌。主要针对基于Android系统平台的商业模式探讨、技术交流、移动应用推广的大会,是一次很好的探索和寻求共同发展、合作共赢的契机。AndroidWorld代表着未来移动互联网产品和应用服务类型的发展趋势。
语言特点
Android应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习Android开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。 建议在安卓课程前期的java学习阶段中,需要用心的学好。
3G梦工场android培训认为培训学员分为两类,一是针对入门级的学员,计算机专业出身或者至少有编程思想,经过培训能掌握一部分基础的java技术和an-droid系统的框架,再学习开发环境的搭建和编程软件的使用后,就可以快速上手开发上层应用;另一类是针对有一定java技术基础,想转行进行An-droid开发的人员,他们有扎实的java技术和编程思想作基础,经过培训能加深对android系统的架构和特点的认识,这类人员经过培训之后能接受针对An-droid系统更深层次开发的任务。
从事岗位
Android 研发工程师 Android测试工程师 Android游戏开发工程师 Android软件开发工程师 Android移植工程师
最新版本
Android的果冻豆系统已经从4.1升级到了4.2,所以一向喜欢迅速开发第三方ROM的CyanogenMod团队当然也不会甘心落后的。在昨天放出30款Android设备的稳定版CM10(CM版的Android 4.1)之后,该团队又宣布接下来将全力开发针对Android 4.2的ROM。
Android 4.2果冻豆系统仅是对此前4.1的略微更新版本,所以CyanogenMod团队表示,基于4.2的CM系统将会是CyanogenMod 10.1。
优势
安卓手机系统的一大优势在于其开放性和免费的服务,Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,和iphone的封闭性完全相反,所以安卓获得了更好产商的支持,例如:HTC、三星、小米、摩托罗拉、LG、中国移动等,同时安卓也得到了大量开发者的支持,在国内一些安卓开发联盟还有安卓开发大赛就足以证明了安卓的火热程度。
架构概述
一、应用程序
Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。
二、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
三、程序库
Android 包含一些C/C++库,这些库能被 Android 系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。
四、Android 运行库
Android 包括了一个核心库,该核心库提供了JAVA 编程语言核心库的大多数功能。
五、Linux 内核
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。