移动设备应用软件开发主讲:庄旭菲内蒙古工业大学计算机系教材Android应用开发教程刘志强,庄旭菲,张旭清华大学出版社,2016第1章Android概述1.1Android的发展史1.2Android系统的特性1.3Android系统架构1.4Android环境搭建1.1Android的发展史1.1.1Android的起源•Android(中文俗称安卓)是一个以Linux内核为基础的自由及开放源代码的移动设备操作系统。它由Google领导的OHA(OpenHandsetAlliance,开放手机联盟)所维护和持续开发。•Android系统最早由被称为“Android之父”的AndyRubin带领的一个团队于2003年10月开始研发。2005年8月,Google低调收购了Android科技公司,后者成为Google旗下的一部分,AndyRubin同时出任Google公司工程副总裁,继续负责Android项目。2007年11月,Google与84家硬件制造商、软件开发商和电信运营商联合成立开放手机联盟,来共同研发和改进Android系统。紧接着,Google于2007年11月发布了Android的1.0Beta版,并与次年9月发布了1.0正式版。1.1.2当前的主流移动操作系统(1)WindowsMobile/Phone它是由微软公司推出的移动设备操作系统。(2)iOS它是由苹果公司为iPhone、iPad和iPodTouch开发的移动操作系统,它的原名叫做iPhoneOS,苹果公司于2010年6月的WWDC大会上宣布将其改为iOS。1.1.3Android的版本版本号及版本名称发布时间1.0Beta2007-11-121.0Astro(阿童木)2008-09-231.1Bender(发条机器人)2009-021.5Cupcake(纸杯蛋糕)基于Linux2.6.27内核2009-04-301.6Donut(甜甜圈)内核基于Linux2.6.292009-09-152.0/2.1Éclair(松饼)基于Linux2.6.29内核2009-10-262.2(API-8)Froyo(冻酸奶)基于Linux2.6.32内核2010-05-202.3(API-9,API-10)Gingerbread(姜饼)基于Linux2.6.35内核2010-12-073.0(API-11)3.1(API-12)3.2(API-13)Honeycomb(蜂巢)基于Linux2.6.36内核2011-02-02版本号及版本名称发布时间4.0(API-14,API-15)IceCreamSandWich(冰激凌三明治)基于Linux3.0.1内核2011-10-194.1(API-16)4.2(API-17)4.3(API-18)JellyBean(果冻豆)基于Linux3.0.31内核4.1:2012-06-284.2:2012-10-304.3:2013-07-244.4(API-19)KitKat(奇巧巧克力棒)基于Linux3.10内核2013-09-035.0(API-21)Lolipop(棒棒糖)基于Linux3.14内核2014-06-25版本号及版本名称发布时间6.0(API-23)Marshmallow(棉花糖)基于Linux3.18.10内核2015-5-287.0(API-24)Nougat(牛轧糖)基于Linux4.4.1内核2016-8-228.0(API-26)Oreo(奥利奥)2017-8-221.2Android系统的特性1.显示布局2.数据存储内置SQLite。3.网络Android操作系统支持所有的网络制式。4.信息原生支持短信和邮件,并且支持所有的云信息和服务器信息。5.浏览器内置的网页浏览器基于WebKit内核,并且采用了ChromeV8引擎。在Android4.0内置的浏览器测试中,HTML5和Acid3故障处理中均获得了满分,并且于2.2版及之后能原生支持Flash。6.编程语言支持通常通过在AndroidSDK(Android软件开发包)中使用Java作为编程语言来开发应用程序,开发者亦可以通过在AndroidNDK(AndroidNative开发包)中使用C语言或者C++语言来作为编程语言开发应用程序。7.媒体支持Android操作系统本身支持以下格式的音频/视频/图片媒体:WebM、H.263和H.264(in3GPorMP4container)、MPEG-4SP、AMR和AMR-WB(in3GPcontainer)、AAC和HE-AAC(inMP4or3GPcontainer)、MP3、MIDI、OggVorbis、FLAC、WAV、JPEG、PNG、GIF、BMP。8.流媒体支持Android操作系统支持RTP/RTSP(3GPPPSS、ISMA)的流媒体以及(HTML5video)的流媒体,同时还支持Adobe的Flash。9.硬件支持Android操作系统支持识别并且使用视频/照片摄像头,多点电容/电阻触摸屏、GPS、加速计、陀螺仪、气压计、磁强计、键盘、鼠标、USBDisk、专用的游戏控制器、体感控制器、游戏手柄、蓝牙设备、无线设备、感应和压力传感器、温度计、加速2D位块传输(硬件方向、缩放、像素格式转换)和3D图形加速。10.多点触控11.蓝牙12.多任务处理13.语音功能14.无线共享功能15.截图功能16.跨平台17.应用程序的安全机制Android操作系统使用了沙箱(sandbox)机制,所有的应用程序都会先被简单地解压缩到沙箱中进行检查,并且将应用程序所需的权限提交给系统,将其所需权限以列表的形式展现出来,供用户查看。1.3Android系统架构Android是在Linux内核的基础上,使用一种可称为“软件层级”的架构组织起来的。纵观整个Android系统架构,各种开源的软件包和各种主流的编程语言全部都有“用武之地”,从下到上,一同构建出了一款移动操作系统。1.3.1Android应用层应用层是Android设备真正与用户进行交互的一层,Android设备上的应用程序都是运行在这一层的。其中包括Google开发的应用软件,比如电话、短信、电子邮件、浏览器等,也包括一般开发者所开发的应用软件。这一层使用Java作为其开发语言。1.3.2Android应用框架层框架层是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的。该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。由于在其下已经运行了Java运行时环境,所以这一层使用Java语言作为开发语言。Android应用框架层主要包含如下内容。1.ActivityManager(活动管理器)•管理各个应用程序生命周期以及通常的导航回退功能。2.WindowManager(窗口管理器)•管理所有的窗口程序。3.ContentProvider(内容提供器)•使得不同应用程序之间存取或者分享数据。4.ViewSystem(视图系统)•构建应用程序的基本组件。5.NotificationManager(通告管理器)•使得应用程序可以在状态栏中显示自定义的提示信息。6.PackageManager(包管理器)•Android系统内的程序管理。7.TelephonyManager(电话管理器)•管理所有的移动设备功能。8.ResourceManager(资源管理器)•提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等。9.LocationManager(位置管理器)•提供位置服务。10.GTalkService•提供GoogleTalk服务。1.3.3Android核心库本地库是应用程序框架的基础,是连接应用程序框架层与Linux内核层的重要纽带。主要含有以下几个重要的库。1.SurfaceManager执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。2.MediaFramework多媒体库,基于PacketVideoOpenCore,支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。3.SQLite小型的关系型数据库引擎。4.OpenGL|ES根据OpenGLES1.0API标准实现的3D绘图函数库。5.FreeType提供点阵字与向量字的描绘与显示。6.WebKit一套网页浏览器的软件引擎。7.SGL底层的2D图形渲染引擎。8.SSL在Andorid上通信过程中实现握手。9.Libc从BSD继承来的标准C系统函数库,专门为基于嵌入式Linux的设备定制。1.3.4Android运行时(RunTime)Android应用程序是用Java语言编写的,所以Android需要一个Java的运行时环境,该环境又包括核心库和Dalvik(ART)虚拟机两部分。核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。Android程序不同于J2ME程序。每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。1.3.5Linux内核层Android是在Linux内核的基础上构建的,Android的内核属于Linux内核的一个分支,它并不是GNU/Linux。所以为了达到商业应用的目的,Android必须去除被GNUGPL所约束的部分。目前,Android的Linux内核层包括安全管理、内存管理、进程管理、网络协议栈、驱动程序模型和电源管理等,这些都依赖于Linux内核。由于Linux内核全部使用C语言编写,所以Android的Linux内核层也全部是用C语言编写的。1.4Android环境搭建1.4.1Java开发环境安装与配置1.安装JDK•安装好JDK之后,要按照如下步骤对JDK进行配置。•(1)在Windows的系统环境变量中,新建环境变量名“JAVA_HOME”,其值为JDK安装路径。•(2)在“PATH”环境变量中添加“%JAVA_HOME%\bin”。•(3)新建环境变量“CLASSPATH”,变量值设置为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar2.安装EclipseEclipse可以从其官网上下载。Eclipse每年6月份会更新一次新版本,并会在9月和次年2月发布该版本对应的SR1和SR2版本,我们下载Eclipse最新版即可。1.4.2安装Android开发环境1.下载AndroidSDK2.在Eclipse中安装并配置ADT