这是一个阳光明媚的下午,刘备刘玄德坐在家中一边哼着小曲一边编着草鞋。就在草鞋编得兴高采烈、飘飘欲仙之时,他忽然对人生产生了一丝疑惑,我乃堂堂中山靖王之后,想当年我祖上技术何等辉煌!传说我祖刘胜同学审代码一目十行,再小的臭虫也难逃其法眼,写代码更好似行云流水,一日之内,写满代码的竹简摞起来竟有小山般高。唉!再看看我,竟天天以编草鞋度日……不行!再也不能自甘堕落下去,我要写代码!于是刘备扔下编了半辈子的草鞋,毅然决然地走上了技术开发之路。

刘备走到村里,左思右想,不知从何做起,只好原地转圈圈。踌躇之际,打远处走来一黑脸汉子,喝道:“你这厮,好端端的为何原地打转,看得俺好生眼晕。”

“壮士不知,我乃中山靖王之后,空有一身抱负却无处施展,哎”

“原来是一代大牛靖王之后,失敬,失敬。”

“我就是随便这么一说,想不到老祖宗这么好使……”

“俺叫张飞,字翼德,俺也是空有一身力气无处发泄,正有转型做技术宅的想法,却苦于转型无门啊!既然你我二人如此有缘,不如到我庄上一聚,先大吃一顿,再共商大计!”

“如此甚好!”

于是刘、张二人向张飞家进发,走着走着,迎面出现一红脸汉子,脚踏人字拖,身着大裤衩,一派大牛作风。刘备见状连忙上前搭讪,“老兄,看你这架势?骨灰级程序员?”

关羽答道,“正是!在下关羽。曾搞过一些开发,但最近在人生的道路上有些迷失了方向。”

刘备说,“我叫刘备,这位是张飞,我们二人正有意在软件研发上大展拳脚,你看我等三人竟如此有缘,不如结拜为兄弟,日后互相照应,共同进步!”

关羽说,“哇,你一见面就要跟我结拜,剧情发展也太快了吧。也罢,我就是喜欢直接爽快的!”

于是三人撮土为香,歃血为盟,结拜为兄弟,刘备为大哥,关羽老二,张飞小三。

酒足饭饱后,关羽说,“大哥,最近我听说Android火的很啊,咱们不如一起搞搞Android开发,成就一番霸业如何?”

“哦,何为Android?”

“待我慢慢道来……”

1.1. Android基本知识

Android是由Google以及开放手持设备联盟(Open Handset Alliance)推出的一款智能手机操作系统,它与windowsphone、ios三分智能操作系统天下。而随着智能手机的迅速普及,Android系统的不断完善,得到了越来越多的用户、开发者以及生产商的喜爱。到2010年末,Android系统的市场占有率已经超过称霸逾十年的塞班(Symbian)系统,成为全球第一大智能手机操作系统。2012年2月,Android系统的全球市场份额已达到59%。其中,Android在中国市场所占的份额为68.4%。

究竟是什么原因让Android如此火爆呢?这还得从Android的历史开始说起。

1.1.1.Android的历史

1886年,在法国科幻小说《未来夏娃》中,利尔亚当向我们展现了一个奇特的想象空间,而那个似人的机器Android也深深地印刻在读者的脑海中。而如今,那个绿色的小机器人Android也走进了很多人的日常生活中。

图1.1  Android Logo

关羽:大哥!不要跟我说你连《未来夏娃》都没看过!恩,好吧,其实我也没看过……这本书中描写一位充满创造力的发明家在生命垂危之际,发明了一个完美的女人,但是她毕竟只是机器人,就导致了一场类似《浮士德》的悲剧。《未来夏娃》中将外表像人的女机器起名人为Android。

2003年,有“Android之父”之称的安迪•鲁宾(Andy Rubin)创建了Android科技公司,开始着手开发Android操作系统。2005年,Google收购了Android科技公司,安迪继续在Google领导着开发团队。2007年,Google联合许多生产厂商成立了开放手持设备联盟(OpenHandset Alliance),联盟最初的成员包括Broadcom公司、HTC、Intel、LG、Marvell等公司。2008年,ARM、华为、索尼等公司也加入到联盟当中,如今联盟的厂商已达84家。开放手持设备联盟建立的目的是为了创建一个更加开放自由的移动电话环境。Android操作系统也由开放手持设备联盟来负责改良。

在Android正式发布之前,有两个内部测试版本,分别是Android Beta(代号为铁臂阿童木Astro)和Android 1.0(代号为发条机器人Bender)。在这两个版本之后,Google为了避免商标问题,将Android系统的代号由机器人系列转变为现在用的甜点系列。甜点系列的代号命名方式开始于Android 1.5(代号为纸杯蛋糕Cupcake),并按照26个英文字母的顺序,每一个版本都有一个甜点来命名,而且后序版本的所代表的甜点尺寸会越来越大。

我们把Android各版本的代号,发布时间列表如下:

版本

代号

发布时间

Android 1.5

Cup Cake

2009年4月30日

Android 1.6

Donut

2009年9月15日

Android 2.1

Éclair

2009年10月26日

Android 2.2

Froyo

2010年5月20日

Android 2.3

Ginger Bread

2010年12月7日

Android 3.x

Honey Comb

2011年2月2日

Android 4.0

Ice Cream Sandwitch

2011年10月19日

Android 4.1

Jelly Bean

2012年6月28日

图1-2  Android 各版本Logo

Android系统版本从1.5开始,差不多每半年都会有一次版本的升级。每次版本升级都会有大量的更新,这些更新提供了很多新的特性以及功能,除此之外,还存在很多厂家自己修改的非标准安卓系统。版本更新过快和非标准版Android也带来很多兼容性问题。

1.1.2.Android的未来

在移动互联网时代,Android以开放,免费,完整等特点迅速在全球范围内拥有了许许多多的粉丝,这些粉丝包括了Android手机用户,开发者以及生产商。目前,Android系统占据了全球智能手机近六成的市场份额,巨大的用户量也带来了巨大的商机。可以说,把握了Android就把握了移动互联网时代的脉搏。

从用户角度来看,现在人们已经开始使用Android手机打3G电话,浏览网页,看视频,玩游戏,听音乐,收发电子邮件,关注SNS社区,手机购物等等。这些功能的实现极大地扩展了用户使用手机的范围,使得用户越来越爱用Android手机。随着Android版本的不断更新,会有越来越多的更加贴心的功能加入到Android当中,同时,界面也越来越漂亮,流畅性也会越来越好,这会在将来吸引更多的用户来使用Android操作系统。

从开发者的角度来看,Android是一个以Linux为核心的开源移动操作系统,开源的特性使得开发者在开发过程中能够有最大限度的自由。这种特性使得基于Android系统的应用非常的丰富,而且Android平台不仅支持Java,C和C++等主流的编程语言,还支持Ruby、Python、Lua等脚本语言,这也是Android拥有庞大的开发者群体的一个重要原因。从Android发布之日起,国内外出现了许许多多由开发者创建的Android开源论坛和社区以及小开发团体。他们都致力于改进Android现有功能,提升用户体验以及培养新一代的开发者。

从生产商的角度来看,由于Android操作系统免费向开发者提供,使得生产商可以节约近三成的成本,因此得到了众多厂商的拥护和支持。各厂商纷纷推出自己的Android手机。比较出名的几个厂商包括HTC,Samsung,Motorola,LG等等,随着Android版本的不断更新和各厂商硬件性能的提升,会有更多的Android手机面世。

从技术角度来看,Android采用WebKit浏览器引擎,具有触摸屏,高级图形显示以及上网功能,随着版本的更新,Android的技术也在不断的更新,从最初的普通联系人到现在的数据同步,从最初的单点触控到现在的多点触控,从简单的Google Map到现在的导航系统,从基本的网页浏览到现在的HTML5,这些都说明了Android的技术在逐渐的成熟和完善。在将来的Android版本中,肯定会有更加丰富的技术出现。

随着移动互联网的发展,用户对智能手机终端和移动应用的需求会越来越强烈,而Android必将成为这个时代的弄潮儿!

1.1.3.推动Android普及的因素

Android平台五大优势使得Android红遍了手机操作系统的半壁江山。

l  开放性

开放性是Android系统区别于其他操作系统的最大的特征。开放的平台会吸引更多的开发者、终端制造厂商以及用户,会使得基于Android的应用开发商呈现百家争鸣的格局,会使得应用呈现百花齐放的状态。

关羽:大哥!让小关和你说说开放性的好处吧!开放性有利于积累消费者和厂商的人气哦。当然开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机,获得丰富的软件资源哦。大哥还犹豫什么,抓紧开发我们的Android产品吧!

l  挣脱运营商的束缚

在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。

l  丰富的硬件选择

由于Android的开放性,众多的厂商会推出拥有自己厂商特色,功能更加完善的Android手机。功能特色上的差异,却不会影响到数据同步以及软件的兼容性,使得用户可以放心的选购所喜欢的厂家生产的手机。

l  不受任何限制的开发商

Android平台提供给第三方开发商一个十分宽泛、自由的环境。开发商和甚至个人开发者能够免费下载获得Android开发工具sdk以及Android系统源码,使得开发者可以深入到系统级的开发,而不会像其他手机操作系统一样受到限制,同时,Android开源社区聚集了大量的Android开发爱好者,开发者能够在这里得到帮助。

l  无缝结合的Google应用

Google已经走过10年的历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

最后,在这里不得不提Google以及其所领导的开放手持设备联盟为Android的推广所作出的努力。Google在Android刚开始的时候,为吸引开发者曾经举办Android开发者大赛,大赛持续了几年,吸引了众多的开发者,积累了开发人气,开放手持设备联盟也在其中做出了很大的贡献。

1.2.Android的架构及特性

Android是以Linux为内核的操作系统,经历了从最初的1.0版到目前最新的4.1版的发展,每个版本都有大量的新特性加入其中,但是Android整体架构并没有太大的变化。究竟Android的系统架构是怎样的?每一个Android版本又有怎样的不同?下面就让我们来学习一下Android的系统架构及各版本特性。

1.2.1.Android 平台架构简介

Android平台拥有一套层次十分清晰的框架,如图1-3所示,我们可以看出Android拥有四个层次,到低到高分别是Linux内核层、库和Android运行环境层、应用框架层、应用层。下面对每个层次的组成部分做详细的介绍。

图1.3  Android系统架构图

l  Linux内核

Android是基于一个稳定的保持更新的Linux内核提供核心服务,目前大多使用Linux2.6版本。Linux内核作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,使得Android平台的硬件细节对开发人员透明化。主要驱动如下:显示驱动(Display Driver)、Flash内存驱动(Flash Memory Driver)、照相机驱动(CameraDriver)、音频驱动(Audio Driver)、WIFI驱动、键盘驱动(Keyboard Driver)、蓝牙驱动(Bluetooth Driver)、Binder IPC驱动、Power Manager(能源管理)。整个Linux核心的各软件组件,均是以C语言撰写成,整个底层均是由芯片或便携设备的系统硬件开发商所负责,即音频芯片商在销售音频芯片时,也当附上Android的音频驱动程序,而如HTC之类的便携设备开发商,也必须针对特有的硬件功能,而自行开发驱动程序。

l  库

在Android中包含一些C/C++的类库,这些类库用来支持Android系统中不同组件的功能。这些功能通过Android的应用程序框架(applicationframework)提供给开发者。下面对图1.3中的核心库做简单介绍:

n  Surface Manager:主要的功能是让开发者可以去存取或管理显示系统,实现无接缝的2D/3D多应用程序之间的整合。

n  3D libraries:主要是依OpenGLES1.0规范所定义的3D绘图引擎。

n  SGL:2D图形引擎库。

n  Media Framework:Android多媒体类库,该库支持回放和录制大量流行的音视频格式和静态图片。

n  Free Type:位图及矢量。

n  SSL:中文名为“安全套接层协议层”,它位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

n  SQLite:是一套开放性的关联式资料库,能够为所有应用程序提供轻量级的关系数据库引擎。

n  WebKit:是一个先进的网页浏览器引擎。

n  libc:是一个BSD标准的C类库,针对Linux嵌入式装置进行过最佳化的调整。

l  Android运行环境

每一个Android应用程序都运行在一个Dalvik虚拟机实例上,其代码在虚拟机的解释下得以执行。Anroid可以同时高效地运行多个虚拟系统。Dalvik虚拟机非常适合在移动终端上使用,它不需要很快的CPU计算速度和大量的内存空间。每一个虚拟机就是一个独立的进程空间。Dalvik虚拟机并不直接执行编译后的java类文件,而是通过内置的基于寄存器的dx工具将其转换为.dex格式后在执行。dx 是一套工具,可以将 Java .class 转换成 .dex 格式。dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。一个dex文件通常会有多个.class。虚拟机的线程机制和底层内存管理机制都依赖于Linux内核的一些功能。

l  应用框架

应用程序框架这一层,是编写常用核心应用所使用的API框架。开发者可以在开发自己特色的应用程序中重复利用这些组件和服务。开发者通过很好的理解这套框架的工作机制,就可以开发出自己需要的应用程序。目前所有的应用程序都是由这些组件和服务构成,主要的组件包括有:丰富又可扩展的视图系统(View)、管理所有安装在Android系统内的包管理器(Package Manager)、提供非程序代码访问的资源管理器(Resource Manager)、提供应用程序在状态栏中显示应用程序自定义提示信息的通知管理器(Notification Manager)、管理用户拨打与接听电话的相关功能的电话管理器(Telephony Manager)、管理所有应用程序的生命周期及提供常用的导航回退功能的活动管理器(Activity Manager)、使应用程序可以访问另一个应用程序的数据或者共享它们自己数据的内容提供者(Content Provider)、管理地图服务位置管理器(LocationManager)等。本书的后面我们将针对其中的一些组件进行详细的介绍。

l  应用

Android本身会带有一些常用的核心应用程序,这些应用程序是用Java语言编写的运行在虚拟机上的程序。这些应用程序一般包括e-mail客户端、短信程序、日历、地图、浏览器、联系人管理程序等。开发者也可以根据自己的需要在Android平台上开发自己的应用程序,通常以Java语言编写,包含各种资源文件。

关羽:大哥!你知道分层有什么好处吗?让美貌与智慧并重,英雄与侠义化身的我给你点提示吧。使用下层提供的接口为上层提供统一的服务,可以屏蔽下层的变化。当下层发生了变化时不会影响到上层,也就是说各层各司其职,各层提供固定的服务访问点SAP(Service Access Point)。用程序员的黑话说就是高内聚、低耦合。那可是好处多多。大哥!这下凭你的智慧,分层唬不住你了!

1.2.2.Android特性

Android智能手机操作系统正在以很快的速度发展,虽然Android推出的时间并不长,但是,其功能正在迅速增加。下面我们来盘点下Android各个版本的特性。

版本

特性

Android 1.1

闹钟、API 示例、浏览器、计算器、摄像头、联系人、开发工具包、拨号应用、电子邮件、地图 (包含街景)、信息服务、音乐、图片、设置

Android 1.5

录像、蓝牙A2DP、自动蓝牙连接、上传视频到 YouTube 以及 Picasa、复制/粘贴功能

Android 1.6

Android 应用市场集成、照相、摄像以及浏览, 多选/删除功能、手势搜索、语音搜索应用集成、极大提升了语音阅读功能、对非标准分辨率有了更好的支持

Android 2.0/2.1

提升硬件速度、更多屏幕以及分辨率选择、大幅度的用户界面改良、支持 Exchange活动墙纸、大幅改进虚拟键盘、新版蓝牙、新版Google 地图

Android 2.2

完整的 Flash 10.1 支持、最高 5 倍速度提升、最多支持 8个设备连接的移动热点功能、有着专用链接的改进版主屏幕、大量 Exchange 支持改进(包括远程数据抹除,自动发现服务,完整的日程表支持,全局联系人列表查找)、摄像头/视频改进(更好的屏幕控制按钮,录像时开启闪光灯进行照明的功能)、多键盘语言支持、Android 云信息、蓝牙语音拨号、支持720P视频录制

Android 3.0

针对平板大屏幕而做优化、发布应用扩展Android Market、多任务处理、拥有新的通知系统、硬件加速、3D功能、视频通话、拥有不同的桌面工具

Android 4.0

虚拟按键(增大屏幕面积同时控制手机整体大小)、桌面插件Widgets列表、可定制的桌面系统、可视语音邮件、日历支持缩放操作、Gmail离线搜索(两行预览,以及底部新快捷栏)、改进虚拟键盘纠错、从锁屏界面直接访问应用程序、新版浏览器、流量控制系统、人脸识别、刷脸解锁、内置照片编辑器、多任务列表、新的图库布局和组织方式、联系人应用整合社交网络信息、NFC软件数据交互

Android 4.1

快速流畅Project Butter用户界面、离线语音输入、增强通知中心、Google Now语音搜索、相机和图库、眨眼开锁、无障碍操作

1.3.玄德有话说

张飞:大哥啊,通过本回的了解,我有个巨大的困惑,还望大哥给我讲解讲解。

刘备:哈哈,三弟,速速把问题说来,让改变社会风气,风靡万千少女,刺激电影市场,提高年轻人内涵,玉树临风,风度翩翩的我给你解答!

张飞:大哥,Android这么好,我们咋开始学啊?又如何才能开展咱们的宏图大业呢?

刘备:这个、这个……凭你的智慧,我很难跟你解释!二弟,你来跟三弟说说。

关羽:三弟!想写好Android,那就需要内练一口气,外练筋骨皮。眼看不如动手,知其然知其所以然。

张飞:二哥你别竟说那没用的,老张我听不懂,能不能通俗点。

关羽:总结起来就是三点:首先,要多动手操作,把实践放在第一位;二是,多解决问题,每解决一个问题,就成长了一点;最后,要善于归纳总结。如此一来,假以时日,我们必能成为一代大牛!

刘备:二弟果然有一套!

关羽:一般一般,世界第三!

张飞:啥玩意儿,我还是没懂……

准备篇—刘备,从编草鞋到编代码 第1回 哦,何为Android?相关推荐

  1. 【DL】图像去噪中的patch size是什么(1篇文章链接和1段代码)

    图像去噪中的patch size是什么(1篇文章链接和1段代码) 写在前面,因为自己不做图像相关的研究,所以具体内容也不敢妄加总结,自己感觉貌似就是将一整张图分成一块一块的进行处理,每个块之间可以重叠 ...

  2. Android当中的MVP模式(七)终篇---关于对MVP模式中代码臃肿

    个人博客:CODE FRAMER BIGZ MVP系列文章配套DEMO Android 当中的 MVP 模式(一)基本概念 Android 当中的 MVP 模式(二)封装 Android 当中的 MV ...

  3. SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】

    前后端分离项目快速搭建[后端篇] 数据库准备 后端搭建 1.快速创建个SpringBoot项目 2.引入依赖 3.编写代码快速生成代码 4.运行代码生成器生成代码 5.编写application.pr ...

  4. SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】

    前后端分离项目快速搭建[前端篇] 后端篇 前端篇 创建vue项目 安装所需工具 开始编码 1.在根目录下添加vue.config.js文件 2.编写main.js 3.编写App.vue 4.编写ax ...

  5. python计算最大回撤_【邢不行|量化小讲堂系列36-python量化入门】如何通过3行Python代码计算最大回撤...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]: 个人微 ...

  6. 【转载】一行代码加载网络图片到ImageView——Android Picasso

    原文链接:一句代码加载网络图片到ImageView--Android Picasso  注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...

  7. layuiajax提交表单控制层代码_究竟怎么用Restful风格编代码必看这篇。(二)

    点击上方"IT咸鱼",星标公众号每天分享技术栈,开发工具等 简单急记几个小点:RequestMapping注解的使用和里面涉及到的参数用途和写法 @RequestMapping(& ...

  8. 收发一体超声波测距离传感器模块_超声模块,写完这篇推送,小编吐了

    超声波模块的使用,可以说任何一个玩家没有不知道的.至于教程,都烂大街了.但是为了保持教程的完整性,本小编忍吐再写一遍.本篇简要介绍一下模块的使用. 下一期,将给大家带来另类的超声模块使用方法,敬请期待 ...

  9. 收藏 | 精选11篇AI领域论文(附代码、数据集链接)

    来源:PaperWeekly 本文共1000字,建议阅读5分钟. 本文带你快速get近期精选论文的亮点和痛点,时刻紧跟AI前沿成果. 01 Large Scaled Relation Extracti ...

最新文章

  1. 面试官:你能说说MyBatis拦截器原理吗?
  2. DOM中元素节点、属性节点、文本节点的理解
  3. #Node.js的fs导入遇到的问题和解决方案
  4. 最近项目中遇到的一个算法挑战
  5. angular 字符串转换成数字_Python基础语法大全:字符串的处理与使用
  6. SqlMap自动化SQL注入测试工具简绍
  7. SpringSecurity SecurityContextHolderSecurityContext
  8. java 数据类型及作用域、数据类型转换、运算符、流程控制
  9. Java检查字符串是否包含中文字符
  10. leetcode组队学习——查找(一)
  11. 一个问题,被人问是否确定,千万不要随口回答确定
  12. 图解TCPIP---第二章
  13. 如何搭建前端开发环境
  14. final 和effectively final区别
  15. 群控进化史,黑产攻击效率提升带来的防守困境
  16. iOS 联系在线客服功能
  17. 在浏览器输入url回车后发生了什么
  18. python爬虫笔记——Scrapy框架(浅学)
  19. FPGA图像工程师的六脉神剑——“选扫掌仿习练”
  20. 微信公众号怎么集赞服务器,【微信点赞】_微信怎么点赞如何集赞微信点赞活动新手必备点赞教程...

热门文章

  1. 在地址栏显示网站的图标
  2. 分布式文件系统FastDFS集群搭建
  3. 普元mobile_普元Primeton Mobile 7.1发布
  4. React: error An unexpected error occurred: “EPERM: operation not permitted, rename...
  5. python代码规范_合格搬砖工
  6. 超导计算机国防科技大学,基于约瑟夫森结的超导量子计算研究
  7. 称霸Kaggle的十大深度学习技巧
  8. 解决实际维护网络过程故障的五个盲点
  9. 泪目!雷军突然卸任……
  10. 金蝶ERP K3 介绍