Android应用开发教程(第2版)
上QQ阅读APP看书,第一时间看更新

1.1 Android简介

01 Android简介

说到Android,不得不首先提一下Linux操作系统和智能手机。例如,某用户想购买一台智能手机,但是对于不同版本的Android手机有何区别还不甚清楚,下面将针对一些基本概念进行说明。

1.1.1 Linux操作系统

操作系统除了常见的Windows之外,值得一提的还有Linux。

芬兰人Linus Torvalds在学生时代出于自己的兴趣爱好设计了一个可以在低档机上使用的系统核心Linux 0.01,以替换在教学过程中使用得不尽如人意的MINIX操作系统。后来借助Internet让使用者参与修改。随着参与修改的爱好者越来越多,以至于Linux周边的程序越来越多,Linux本身也就逐渐发展壮大起来。

运行Linux并不需要很高的配置,其也支持众多的PC周边设备。Linux的显著特点是完全免费,其源代码完全公开,任何人都能拿来使用。基于Linux开放源码的特性,越来越多大中型企业及政府投入更多的资源来开发Linux。Linux的广泛使用不仅节省了大量成本,也降低了对封闭源码软件潜在的安全性的忧虑。

一个典型的Linux发行版包括Linux内核(Linux kernel)、一些GNU程序库和工具、命令行shell、图形界面X Window系统和相应的桌面环境(如KDE或GNOME),并包含从办公套件、编译器、文本编辑器到科学工具的数千种应用软件。

比较著名的发行版本有:Debian,红帽(Redhat)、Ubuntu、SUSE、Open SUSE、Mandriva(原Mandrake)、CentOS、Fedora、红旗Linux等。

1.1.2 智能手机

“智能手机”的说法主要是针对“功能手机(Feature phone)”而言的。所谓的智能手机就是一台可以随意安装和卸载应用程序的手机(就像计算机那样),然而功能手机是不能随意安装和卸载应用程序的。Java的出现使后来的功能手机具备了安装Java应用程序的功能,但是Java程序的操作友好性、运行效率及对系统资源的操作都比智能手机差很多。

智能手机的诞生是掌上电脑(Pocket PC)演变而来的。最早的掌上电脑不具备手机的通话功能,但是随着用户对掌上电脑的个人信息处理功能依赖的提升,同时用户也不习惯于随身携带手机和掌上电脑两个设备,所以厂商将掌上电脑的系统移植到了手机中,于是才出现了智能手机。智能手机同传统手机的外观和操作方式类似,可以包含触摸屏,也可包含非触摸屏下的数字键盘或全尺寸键盘。传统手机使用的是生产厂商自行开发的封闭式操作系统,所能实现的功能非常有限,所以不具备智能手机的扩展性。

目前最热门的智能手机是5G智能手机,其基本要求是:

➢ 高速度处理芯片。智能手机不仅要支持打电话、发短信,还要支持处理音频、视频,甚至要支持多任务处理,这需要一颗功能强大、低功耗、具有多媒体处理能力的芯片。

➢ 大容量存储芯片和存储扩展能力。GPS导航图、大量的音视频和多种应用都需要存储空间,足够的内存存储空间或扩展存储空间,才能真正满足越来越多样化的应用。5G智能手机要求8GB以上的RAM及256GB以上的ROM。

➢ 面积大、标准化、可触摸的显示屏。智能手机可以执行各种应用,为改善用户体验,屏幕分辨率一般要达到4K~8K,屏幕尺寸27in(折叠)以上。

➢ 支持播放式的手机电视。以现在的技术,如果手机电视完全采用电信网的点播模式,网络很难承受,而且为了保证网络质量,运营商一般对于点播视频的流量都有所控制,因此,广播式的手机电视是手机娱乐的一个重要组成部分。

➢ 支持GPS导航。GPS导航不但可以帮助用户很容易找到想找的地方,而且还可以帮助用户找到周围的兴趣点;未来的很多网络服务,也会和位置结合起来。

➢ 操作系统必须支持新应用的安装。

➢ 配备大容量电池,并支持电池更换。电池容量为7000~10000mA。

➢ 良好的人机交互界面。

1.1.3 智能手机操作系统

智能手机的一个典型标志就是其拥有独立的操作系统,NOKIA的Symbian(塞班)操作系统开创了智能手机操作系统的先河,并一度使NOKIA成为智能手机的代名词。随后众多的智能手机操作系统如雨后春笋般发展起来。曾经出现的比较有名的全球五大智能手机操作系统有谷歌Android、苹果iOS、微软Windows Phone、Blackberry(黑莓)和Symbian(塞班)。随着市场的发展,由于没有持续的创新,不能满足市场新的需求,部分智能手机操作系统逐渐退出市场,甚至被市场所淘汰。目前主流的智能手机操作系统仅有Android和iOS。

➢ Android(安卓):以开源为特征,截至2019年3月数据统计,Android占据全球智能手机操作系统市场份额的75.3%,成为全球第一大智能操作系统。

➢ iOS(iPhone OS):以闭源为特征,只有苹果相应产品才能使用iOS操作系统。截止至2019年3月,iOS已经占据了全球智能手机操作系统市场份额的22.4%,为全球第二大智能操作系统。

Android是基于Linux内核的软件平台和操作系统。

2005年,Google公司并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,同时基于Linux的通用平台也进入了开发阶段。

2007年11月5日Google公司公布了一款手机操作系统,命名为Android。其早期由Google开发,后由开放手机联盟(Open Handset Alliance)继续开发。其底层以Linux内核为基础,以Java作为编写程序的主要语言,只提供基本功能,其他的应用软件则由各公司自行开发。

2008年,Google公司的Android工程合作伙伴总监(Director of Android Partner Engineering)Patrick Brady做题为“Anatomy&Physiology of an Android”的演讲时提出Android HAL架构图。HAL以.so文件的形式存在,可以把Android framework与Linux内核区分开。

2010年1月,Google公司推出了Nexus One,这是Google公司自行推出的第一款Android手机。

Android最早的一个版本发布于2007年11月,版本代号为Android 1.0 beta,其后发布了多个更新版本。这些更新版本都在前一个版本的基础上修复了漏洞,并且添加了前一个版本所没有的新功能。2009年4月起,Android操作系统改用甜点名作为版本别名。这些版本按照大写字母的顺序来进行命名:纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(Éclair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb)﹑冰激凌三明治(Ice Cream Sandwich)、雷根糖(Jelly Bean)、奇巧(KitKat)、棒棒糖(Lollipop)、棉花糖(Marshmallow)、牛轧糖(Nougat)、奥利奥(Oreo)、馅饼(Pie)等。此外,Android操作系统还有两个预发布的内部版本,分别是铁臂阿童木(Astro)和发条机器人(Bender)。

Android和传统PC操作系统相比有以下明显的差异。

➢ 系统内核:Android系统基于Linux内核,与PC操作系统的架构完全不同。

➢ 代码开源程度:Android完全开源,使用免费,PC操作系统需要授权。因此Android更受程序员和手机厂商欢迎,同时可以有效降低手机成本。

➢ 组件和功能不同:PC操作系统的扩展能力强,Android则是更注重于手机功能。目前在应用程序数量上Android弱于PC操作系统,但差距在逐渐缩小。由于Android开源的特点,其应用程序数量呈几何级数增长,不久的将来,势必成为操作系统的主流。

1.1.4 Android平台架构

Android应用程序以Java为编程语言,使Android从接口到功能都有层出不穷的变化,Android的体系结构如图1-1所示。

图1-1 Android体系结构示意图

1.Linux Kernel(Linux内核)

Android是在Linux 2.6的内核基础之上运行的,提供的核心系统服务有安全、内存管理、进程管理、网络组、驱动模型。

2.Android Runtime(Android运行时)

内核之上是核心库和一个叫作Dalvik的Java虚拟机。核心库提供了Java语言核心库中包含的大部分功能,虚拟机负责运行程序。

3.Libraries(库)

Android提供了一组C/C++库,它们为平台的不同组件所使用。开发人员通过Application Framework使用这些库所提供的不同功能。

4.Application Framework(应用程序框架)

无论是Android提供的应用程序还是开发人员自己编写的应用程序,都需要使用到Application Framework。Application Framework不仅可以大幅度简化代码的编写,而且提高了程序的复用性。

5.Application(应用程序)

Android提供了一组应用程序,包括Email客户端、SMS程序、日历、地图、浏览器、通信录等。这部分程序均使用Java语言编写。本书所述的开发技术即指此层的应用程序。

在Android体系结构中,每个Android应用程序都运行在自己的进程上,享有Dalvik虚拟机为它分配的专有实例。Dalvik虚拟机执行的是Dalvik格式的可执行文件(.dex:该格式经过优化,将内存消耗降到最低)。Java编译器将Java源文件转为class文件,class文件又被内置的dx工具转化为dex格式文件,dex文件在Dalvik虚拟机上注册并运行。

Android应用程序都是运行在Dalvik虚拟机之上的Java软件,而Dalvik虚拟机是运行在Linux上的,在一些底层功能如线程和低内存管理方面,Dalvik虚拟机是依赖Linux内核的。因此可以说Android是运行在Linux之上的操作系统,但其本身不能算是Linux的某个版本。

1.1.5 Android市场

Android市场是Google公司为Android平台提供的在线应用商店,Android用户可以在该市场中浏览、下载和购买第三方人员开发的应用程序。

对于开发人员,有两种盈利方式:第一种方式是出售应用程序,开发人员可以获得该应用程序售价的70%,其余30%作为其他费用;第二种方式是加广告:将自己的应用程序定位为免费的,在应用程序中增加广告链接,靠点击率挣钱。