《AndroidStudio应⽤开发实战详解》第1章Android开发基础
第1章 Android开发基础
Android是⼀款操作系统的名称,是科技界巨头⾕歌(Google)公司推出的⼀款运⾏于⼿机和平板电脑等设备的智能操作系统。因为Android系统的底层内核是以Linux开源系统架构的,所以它是Linux家族的产品之⼀。虽然Android外形⽐较简单,但是其功能⼗分强⼤。⾃从2011年开始到现在为⽌,Android系统⼀直占据全球智能⼿机市场占有率第⼀的宝座。在本章的内容中,将简单介绍Android系统的诞⽣背景和发展历程,为读者步⼊本书后⾯知识的学习打下基础。
1.1 移动智能设备系统发展现状
在Android系统诞⽣之前,智能⼿机这个新鲜事物⼤⼤丰富了⼈们的⽣活,得到了⼴⼤⼿机⽤户的青睐。各⼤⼿机⼚商在市场和消费者⽤户需求的驱动之下,纷纷研发出了各种智能⼿机操作系统,并且⼤肆招兵买马来抢夺市场份额,Android系统就是在这个风起云涌的历史背景下诞⽣的。在了解Android这款神奇的系统之前,将⾸先了解当前移动智能设备系统的发展现状。
智能⼿机和移动智能设备介绍
智能⼿机是指具有像个⼈计算机那样强⼤的功能,拥有独⽴的操作系统,⽤户可以⾃⾏安装应⽤软件、
游戏等第三⽅服务商提供的程序,并且可以通过移动通信⽹络接⼊到⽆线⽹络中。在Android系统诞⽣之前已经有很多优秀的智能⼿机产品,例如Symbian系列和微软的Windows Mobile系列等。
对于初学者来说,可能还不知道怎样来区分智能⼿机。某⼤型专业统计站点曾经为智能⼿机的问题做过⼀项市场调查,经过⼤众讨论并投票之后,总结出了智能⼿机所必须具备的功能标准,下⾯是当时投票后得票率最⾼的前5个选项:
(1)操作系统必须⽀持新应⽤的安装;
(2)⾼速度处理芯⽚;
(3)⽀持播放式的⼿机电视;
(4)⼤存储芯⽚和存储扩展能⼒;
(5)⽀持GPS导航。
根据⼤众投票结果,⼿机联盟制定了⼀个标准,并以这个标准为基础,总结出了如下智能⼿机的主要特点:
(1)具备普通⼿机的全部功能,例如可以进⾏正常的通话和发短信等⼿机应⽤;
(2)是⼀个开放性的操作系统,在系统平台上可以安装更多的应⽤程序,从⽽实现功能的⽆限扩充;
(3)具备上⽹功能;
(4)具备PDA的功能,实现个⼈信息管理、⽇程记事、任务安排、多媒体应⽤和浏览⽹页;
(5)可以根据个⼈需要扩展机器的功能;
(6)扩展性能强,并且可以⽀持第三⽅软件。
随着科技的进步和发展,智能⼿机被归纳到移动智能设备当中。在移动智能设备中,还包含了平板电脑、游戏机和笔记本电脑。
1.2 Android系统基础
Android⼀词最早出现于法国作家Auguste Villiers de l'Isle-Adam在1886年发表的科幻⼩说《未来夏娃》中,他将外表像⼈的机器起名为Android。本书的主⾓就是Android系统,在本节将简要介绍Android系统的诞⽣和发展历程。
1.2.1 Android系统的发展现状
从2008年HTC和Google联⼿推出第⼀台Android⼿机G1开始,在2011年第⼀季度,Android在全球的市场份额⾸次超过塞班系统,跃居全球第⼀。下⾯的⼏条数据能够充分说明Android系统的霸主地位。
(1)2011年11⽉数据,Android占据全球智能⼿机操作系统市场52.5%的份额,中国市场占有率为58%。2015年12⽉消息,数据研究公司IDC公布了最新的报告,报告称⾄2019年⾕歌仍将继续保持领先。在这份报告中指出,预计2019年Android系统将占据全球
82.6%的移动系统市场份额,届时iOS的预计份额将为14.1%,也就是说未来4年苹果的市场份额将出现⼩幅下滑。
(2)如果从某⼀个时间段进⾏统计,Android系统也是雄踞市场占有率第⼀的位置。据著名互联⽹流量监测机构Net Applications发布的最新数据显⽰,从2013年9⽉到2014年7⽉,在这将近⼀年的时间⾥,Android市场占有率却⼀直处于稳步攀升状态,从最初的29.42%狂飙⾄44.62%,⽽iOS的使⽤量却在⼀路下滑,从去年9⽉份的53.68%降⾄44.19%。
(3)如果从市场硬件产品出货量⽅⾯进⾏⽐较,Android系统则具有压倒性的优势,其市场份额⾼达85%,⽽iOS仅占11.9%
由上述统计数据可见,Android系统的市场占有率位居第⼀,并且毫⽆压⼒。Android机型数量庞⼤,
简单易⽤,相当⾃由的系统能让⼚商和客户轻松地定制各样的ROM,定制各种桌⾯部件和主题风格。简单⽽华丽的界⾯得到⼴⼤客户的认可,对⼿机进⾏刷机也是不少Android⽤户所津津乐道的事情。
可惜Android版本数量较多,市⾯上同时存在着1.6到当前最新的6.x等各种版本的Android系统⼿机,应⽤软件对各版本系统的兼容性对程序开发⼈员是⼀种不少的挑战。同时由于开发门槛低,导致应⽤数量虽然很多,但是应⽤质量参差不齐,甚⾄出现不少恶意软件,导致⼀些⽤户受到损失。同时Android没有对各⼚商在硬件上进⾏限制,导致⼀些⽤户在低端机型上体验不佳。另⼀⽅⾯,因为Android的应⽤主要使⽤Java语⾔开发,其运⾏效率和硬件消耗⼀直是其他⼿机⽤户所诟病的 地⽅。
1.2.2 常见的Android设备
因为Android系统的免费和开源,也因为系统本⾝强⼤的功能性,使得Android系统不仅被⽤于⼿机设备上,⽽且也被⼴泛⽤于其他智能设备中。在接下来的内容中,将简要介绍除了⼿机产品之外,常见的搭载Android系统的智能设备。
1.Android智能电视
Android智能电视,顾名思义是搭载了Android操作系统的电视,使得电视智能化,能让电视机实现⽹页浏览、视频电影观看、聊天、办公、游戏等,与平板电脑和智能⼿机⼀样的功能。其凭借Android系统让电视实现智能化的提升,数⼗万款Android市场的应⽤、游戏等内容随意安装。
2.Android机顶盒
Android机顶盒是指像智能⼿机⼀样,具有全开放式平台,搭载了Android操作系统,可以由⽤户⾃⾏安装和卸载软件、游戏等第三⽅服务商提供的程序,通过此类程序来不断对电视的功能进⾏扩充,并可以通过⽹线、⽆线⽹络来实现上⽹冲浪的新⼀代机顶盒总称。
通过使⽤Android机顶盒,可以让电视具有上⽹、看⽹络视频、玩游戏、看电⼦书、听⾳乐等功能,使电视成为⼀个低成本的平板电脑。Android机顶盒不仅仅是⼀个⾼清播放器,更具有⼀种全新的⼈机交互模式,既区别于电脑、⼜有别于触摸屏。Android机顶盒配备红外感应条,遥控器⼀般采⽤空中飞⿏,这样就可以⽅便地实现触摸屏上的各种单点操作,可以⽅便地在电视上玩愤怒的⼩鸟、植物⼤战僵⼫等经典游戏。例如乐视公司的LeTV机顶盒便是基于Android打造的,如图1-1所⽰。
图1-1 基于Android的LeTV机顶盒
3.游戏机
Android游戏机就像Android智能⼿表⼀样,在2013年出现了爆炸式增长。在CES展会上,NVIDIA的Project Shield掌上游戏主机以绝对震撼的姿态亮相,之后⼜有Ouya和Gamestick相继推出。不久前,Mad Catz也发布了⼀款Andriod游戏机。
4.智能⼿表
智能⼿表是将⼿表内置智能化系统、搭载智能⼿机系统⽽连接于⽹络⽽实现多功能,能同步⼿机中的电话、短信、邮件、照⽚、⾳乐等。
5.智能家居
智能家居是以住宅为平台,利⽤综合布线技术、⽹络通信技术、 智能家居-系统设计⽅案安全防范技术、⾃动控制技术、⾳视频技术将家居⽣活有关的设施集成,构建⾼效的住宅设施与家庭⽇程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
智能家居是在互联⽹影响之下的物联化体现。智能家居通过物联⽹技术将家中的各种设备(如⾳视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、⽹络家电以及三表抄送等)连接到⼀起,提供家电控制、照明控制、窗帘控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和⼿段。与普通家居相⽐,智能家居不仅具有传
统的居住功能,还兼备建筑、⽹络通信、信息家电、设备⾃动化,集系统、结构、服务、管理为⼀体的⾼效、舒适、安全、便利、环保的居住环境,提供全⽅位的信息交互功能。帮助家庭与外部保持信息交流畅通,优化⼈们的⽣活⽅式,帮助⼈们有效安排时间,增强家居⽣活的安全性,甚⾄为各种能源费⽤节约资⾦。
上述智能设备只是冰⼭⼀⾓,随着物联⽹和云服务的普及和发展,将有更多的智能设备诞⽣。
1.3 Android系统架构
Android系统是⼀个移动设备的开发平台,其软件层次结构包括操作系统(OS)、中间件(Middle Ware)和应⽤程序(Application)。根据Android的软件框图,其软件层次结构⾃下⽽上依次分为以下4层。
(1)操作系统层(OS)。
(2)各种库(Libraries)和Android运⾏环境(RunTime)。
(3)应⽤程序框架(Application Framework)。
(4)应⽤程序(Application)。
上述各个层的具体结构如图1-2所⽰。
图1-2 Android操作系统的组件结构图
在本节的内容中,将详细讲解Android系统各个层次的基本知识。
1.3.1 最底层的操作系统层(OS)——C/C++实现
Android系统的底层内核基于Linux操作系统,当前最新版本的Android的核⼼为标准Linux 3.10内核。Android底层的操作系统层(OS)使⽤C和C++语⾔编写实现,其实Android系统就是Linux系统,只是Android系统充分利⽤了已有的机制,尽量使⽤标准化的内容,如驱动程序,并且做出必要的扩展。Android灵活充分使⽤了内核到⽤户空间的接⼝,这主要表现在字符设备节点、Sys⽂件系统、Proc⽂件系统和不增加系统调⽤。
在Android系统中,包含的内核组件如下所⽰:
Binder驱动程序(⽤户IPC机制);
Logger驱动程序(⽤户系统⽇志);
timed_output驱动框架;
timed_gpio驱动程序;
lowmemorykill组件;
ram_console组件;
Ashmem驱动程序;
Alarm驱动程序;
pmem驱动程序;
ADB Garget驱动程序;
Android Paranoid⽹络。
1.3.2 Android的硬件抽象层——C/C++实现
其实Android⽣态系统的架构⼗分清晰,⾃下⽽上经典的模型分别为:Linux驱动、Android硬件抽象层、Android本地框架、Android的Java框架、Android的Java应⽤程序。因为Android系统需要运⾏于在不同的硬件平台上,所以需要具有很好的可移植性。其中Android系统的硬件抽象层负责建⽴Android系统和硬件设备之间的联系。
对于标准化⽐较⾼的⼦系统来说,Android系统使⽤完全标准的Linux驱动,例如输⼊设备(Input-Event)、电池信息(Power Supply)、⽆线局域⽹(WiFi协议和驱动)和蓝⽛(Bluetooth协议和驱动)。
对于Android系统的硬件抽象层来说,主要实现了与移动设备相关的驱动程序,主要包含了如下所⽰的驱动系统。
显⽰驱动(Display Driver):常⽤基于Linux的帧缓冲(Frame Buffer)驱动。
Flash内存驱动(Flash Memory Driver):是基于MTD的Flash驱动程序。
照相机驱动(Camera Driver):常⽤基于Linux的v4l(Video for)驱动。
⾳频驱动(Audio Driver):常⽤基于ALSA(Advanced Linux Sound Architecture,⾼级Linux声⾳体系)驱动。
WiFi驱动(Camera Driver):基于IEEE 802.11标准的驱动程序。
键盘驱动(KeyBoard Driver):作为输⼊设备的键盘驱动。
蓝⽛驱动(Bluetooth Driver):基于IEEE 802.15.1标准的⽆线传输技术。
Binder IPC驱动:Andoid⼀个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。
Power Management(能源管理):管理电池电量等信息。
1.3.3 各种库(Libraries)和Android运⾏环境(RunTime)——中间层
可以将Android系统的中间层次分为两个部分,⼀个是各种库,另⼀个是Android运⾏环境。Android系统的中间层次的内容⼤多是使⽤C 实现的,其中包含如下所⽰的各种库。
C库:C语⾔的标准库,也是系统中⼀个最为底层的库,C库是通过Linux的系统调⽤来实现。
多媒体框架(MediaFrameword):这部分内容是Android多媒体的核⼼部分,基于PacketVideo(即PV)的OpenCORE,从功能上本库⼀共分为两⼤部分,⼀部分是⾳频、视频的回放(PlayBack),另⼀部分是则是⾳视频的记录(Recorder)。
SGL:2D图像引擎。
SSL:即Secure Socket Layer位于TCP/IP与各种应⽤层协议之间,为数据通信提供安全⽀持。
OpenGL ES:提供了对3D图像的⽀持。
界⾯管理⼯具(Surface Management):提供了对管理显⽰⼦系统等功能。
SQLite:⼀个通⽤的嵌⼊式数据库。
WebKit:⽹络浏览器的核⼼。
FreeType:位图和⽮量字体的功能。
在Android系统中,各种库⼀般以系统中间件的形式提供,它们都有⼀个显著的特点:与移动设备的平台的应⽤密切相关。
在以前的版本中,Android运⾏环境主要是指Android虚拟机技术:Dalvik。Dalvik虚拟机与Java虚拟机(Java VM)不同,它执⾏的不是Java标准的字节码(Bytecode),⽽是Dalvik可执⾏格式(.dex)中的执⾏⽂件。在执⾏的过程中,每⼀个应⽤程序即⼀个进程(Linux 的⼀个Process)。⼆者最⼤的区别在于Java VM是基于栈的虚拟机(Stack-based),⽽Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最⼤的好处在于可以根据硬件实现更⼤的优化,这更适合移动设备的特点。
从Android 4.4开始,默认的运⾏环境是ART。ART的机制与Dalvik不同。在Dalvik机制下,应⽤每次运⾏的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应⽤的运⾏效率。⽽在ART环境中,应⽤在第⼀次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应⽤。这个过程叫作预编译(Ahead-Of-Time,AOT)。这样,应⽤的启动(⾸次)和执⾏都会变得更加 快速。
1.3.4 应⽤程序框架(Application Framework)
Android的应⽤程序框架为应⽤程序层的开发者提供APIs,它实际上是⼀个应⽤程序的框架。由于上层
的应⽤程序是以Java构建的,因此本层次提供的⾸先包含了UI程序中所需要的各种控件,例如:Views(视图组件),其中⼜包括了List(列表)、Grid(栅格)、Text
Box(⽂本框)和Button(按钮)等,甚⾄⼀个嵌⼊式的Web浏览器。
作为⼀个基本的Andoid应⽤程序,可以利⽤应⽤程序框架中的以下5个部分来构建。
Activity(活动)。
Broadcast Intent Receiver(⼴播意图接收者)。
Service(服务)。
Content Provider(内容提供者)。
Intent and Intent Filter(意图和意图过滤器)。
1.3.5 应⽤程序(Application)——Java实现
Android的应⽤程序主要是⽤户界⾯(User Interface)⽅⾯的,通过浏览Android系统的开源代码可知,应⽤层是通过Java语⾔编码实现的,其中还包含了各种资源⽂件(放置在res⽬录中)。Java程序
和相关资源在经过编译后,会⽣成⼀个APK包。Android本⾝提供了主屏幕(Home)、联系⼈(Contact)、电话(Phone)和浏览器(Browers)等众多的核⼼应⽤。同时应⽤程序的开发者还可以使⽤应⽤程序框架层的API实现⾃⼰的程序。这也是Android开源的巨⼤潜⼒的体现。
1.4 Android和Linux的关系
在了解Linux和Android的关系之前,⾸先需要明确如下3点。
(1)Android采⽤Linux作为内核。
(2)Android对Linux内核做了修改,以适应其在移动设备上的应⽤。
(3)Andorid开始是作为Linux的⼀个分⽀,后来由于⽆法并⼊Linux的主开发树,曾经被Linux内核组从开发树中删除。2012年5⽉18⽇,Linux kernel 3.3发布后来⼜被加⼊。
1.4.1 Android继承于Linux
Android是在Linux的内核基础之上运⾏的,提供的核⼼系统服务包括安全、内存管理、进程管理、⽹络组和驱动模型等内容,内核部分还相当于⼀个介于硬件层和系统中其他软件组之间的⼀个抽象层次,但是严格来说它不算是Linux操作系统。
因为Android内核是由标准的Linux内核修改⽽来的,所以继承了Linux内核的诸多优点,保留了Linux内核的主题架构。同时Android按照移动设备的需求,在⽂件系统、内存管理、进程间通信机制和电源管理⽅⾯进⾏了修改,添加了相关的驱动程序和必要的新功能。但是和其他精简的Linux系统相⽐(例如uClinux),Android基本上保留了Linux的基本架构,因此Android的应⽤性和扩展性更强。当前Android 的版本和Linux内核的版本没有直接对应关系,也就是说所有版本的Android系统都可以运⾏在Linux 2.6以上内核中。其实Android不是⼀个完整的OS(系统),这也是Android⼀直说⾃⼰是平台的原因。Android中的Linux内核负责系统底层的调度⼯作,对于⼀般⽤户⽽⾔,内核可以近似看成Windows下的“驱动”。
1.4.2 Android和Linux内核的区别
Android系统的系统层⾯的底层是Linux,中间加上了⼀个叫作Dalvik的Java虚拟机,表⾯层上⾯是Android运⾏库。每个Android应⽤都运⾏在⾃⼰的进程上,享有Dalvik虚拟机为它分配的专有实例。为了⽀持多个虚拟机在同⼀个设备上⾼效运⾏,Dalvik被改写过。
Dalvik虚拟机执⾏的是Dalvik格式的可执⾏⽂件(.dex)——该格式经过优化,以降低内存耗⽤到最低。Java编译器将Java源⽂件转为class⽂件,class⽂件⼜被内置的dx⼯具转化为dex格式⽂件,这种⽂件在Dalvik虚拟机上注册并运⾏。
Android系统的应⽤软件都是运⾏在Dalvik之上的Java软件,⽽Dalvik是运⾏在Linux中的,在⼀些底层功能——如线程和低内存管理⽅⾯,Dalvik虚拟机是依赖Linux内核的。由此可见,可以说Android是运⾏在Linux之上的操作系统,但是它本⾝不能算是Linux的某个版本。android编程入门指南 pdf
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论