第1章 Delphi简介 - Tsinghua University
第1章
Android平台概述
【本章要点】
Android系统自2008年第一个版本发布开始,短短几年便成长为一个优秀的移动设备操作系统平台,同时也开启了智能设备快速发展的新时代。由于Android完善的生态系统、庞大的用户群和开源等特点,基于Android的移动应用开发越来越受开发者的青睐。本章将带领读者较全面地了解智能手机、移动操作系统平台、Android平台的发展历程,理解Android平台的架构,认识Android平台的特性和优势,为后续章节的学习做好准备。
【学习目标】
● 了解智能手机的发展、特点及操作系统的概念。
● 了解Android平台的概念及其发展历程、历史版本。
● 掌握Android平台的体系结构。
● 了解Android平台的特性与优势。
1.1 Android简介
1.1.1 智能手机
智能手机是一类手机的总称,它像个人电脑一样,由控制器、运算器、输入设备、输出设备、存储设备五大部分组成,具有独立的操作系统,可以由用户自行安装应用软件、游戏、导航等第三方程序,还可以通过移动通信网络来实现无线网络接入。
智能手机的诞生,是从掌上电脑(PocketPC)演变而来的。最早的掌上电脑并不具备手机通话功能,但是随着用户对掌上电脑个人信息处理功能要求的提升,又不习惯随时携带手机和掌上电脑两个设备,所以厂商将掌上电脑的系统移植到了手机中,于是出现了智能手机这个概念。智能手机比传统的手机具有更多的综合性处理能力,比如基于Symbian操作系统的S60系列、Symbian3。
世界上公认的第一部智能手机IBM Simon(西蒙,个人通信设备)诞生于1993年,由IBM与BellSouth合作制造。它也是世界上第一款使用触摸屏的智能手机,使用Zaurus操作系统,只有一款名为DispatchIt的第三方应用软件。它为以后的智能手机的发展奠定了基础,有着里程碑式的意义。
1996年,芬兰Nokia(诺基亚)公司推出了名为“Nokia 9000 Communicator”的折叠式智能手机,受到商务人士的青睐,从此开启了Nokia智能手机的一个鼎盛时代。
2001年2月,配置了Palm操作系统的智能手机Kyocera 6035上市。
2003年加拿大RIM公司推出了首款“黑莓”(BlackBerry)手机,该手机融合了电子邮件、SMS及Web浏览等功能。
2007年Apple(苹果)公司第一代iPhone发布,2008年7月11日,苹果公司推出iPhone 3G。自此,智能手机的发展开启了新的时代,iPhone成为引领业界的标杆产品。
2007年11月,美国Google(谷歌)公司发布了基于Android的智能手机软件平台,开启了Android智能手机的征程。
2009年2月,微软公司也转变了市场方针,推出了Windows Mobile智能手机平台,并在同年10月发布了基于Windows Mobile的智能手机。
随后,大屏幕平板手机(Phablet)逐渐成为主流,到了2014年出货量甚至超越小型平板电脑。
下面介绍智能手机的一些主要特点。
1) 具备无线接入互联网的能力
能够支持GSM网络下的GPRS或者CDMA网络的CDMA1X或3G(WCDMA、CDMA-2000、TD-CDMA)网络,4G(HSPA+、FDD-LTE、TDD-LTE)网络,甚至5G网络。
2) 具有PDA的功能
包括PIM(个人信息管理)、日程记事、任务安排、多媒体应用、电子商务、即时通信、浏览网页等。
3) 具有开放性的操作系统
拥有独立的处理器核心(CPU)和内存,可以安装更多的应用程序,使智能手机的功能得到扩展。
4) 功能强大
可扩展性能强,第三方软件生态系统完善。用户可根据需要,实时扩展机器内置功能,升级软件。
5) 运行速度快
随着半导体业的发展,处理器核心(CPU)发展迅速,使智能手机在运行速度方面越来越快。
1.1.2 智能手机操作系统
操作系统是智能手机软件的核心。它的发展从起源到百花齐放,再到三足鼎立,产生了很多优秀的操作系统,如Symbian、BlackBerry、Palm、Android、iOS、Windows Phone等。下面将简略介绍当前流行的iOS、曾经疯狂的Symbian、小起波浪的Windows Phone。Android平台将在1.1.3节及以后内容中详细介绍。
1. 苹果公司的iOS系统
iOS 是由苹果公司推出的移动操作系统 ,采用Objective-C为主要开发语言。苹果公司最早于 2007年1月9日的 MacWorld 大会上发布了这个系统,最初仅为iPhone设计,后来陆续套用到 iPod touch 、iPad 以及 Apple TV 等产品上。iOS与苹果的 Mac OS 操作系统一样,属于类UNIX的商业操作系统。系统原名为 iPhone OS,因为 iPad、iPhone、iPod touch 都使用 iPhone OS,所以在 2010 年WWDC大会上苹果宣布改名为 iOS。
2016年1月,随着9.2.1版本的发布,苹果公司修复了一个存在了3年的漏洞。2018年9月22 日,美国苹果公司在最新的操作系统中秘密加入了基于 iPhone 用户和该公司其他设备使用者的“信任评级”功能。
2019年6月,在 2019年WWDC全球开发者大会上,苹果公司发布了 iOS 新版操作系统。新版的 iOS可以实现语音控制。9月11日,苹果公司宣布于2019年9月推出iOS 13正式版,支持iPhone 6S及后续机型。2019年10月,苹果公司继续推出iOS 13.2正式版,加入了对AirPods Pro的支持。此后,iOS 13.3、iOS 14等也将与大家见面。
2. 微软公司的Windows Phone系统
Windows Phone(可缩写为WP)是微软于2010年10月21日正式发布的一款手机操作系统,初始版本命名为Windows Phone 7.0。基于Windows CE内核,采用了一种称为Metro的用户界面(UI),并将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2011年9月27日,微软发布升级版Windows Phone 7.5,这是首个支持简体中文的系统版本。2012年6月21日,微软正式发布Windows Phone 8,全新的Windows Phone 8舍弃了老旧Windows CE内核,采用了与Windows系统相同的Windows NT内核,支持很多新的特性。2015年2月,微软在推送Windows 10移动版第二个预览版时,第一阶段推送了Windows Phone 8.1更新2,在Windows Phone 8.1更新1的基础上改进了一些功能的操作方式。Windows Phone的后续系统是Windows 10 Mobile。
3. 塞班(Symbian)系统
塞班系统是塞班公司专门为手机设计的操作系统,它的前身是英国宝意昂公司(Psion)的EP(Electronic Piece of cheese)操作系统。Symbian是一个实时、多任务的32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用。2008年12月2日,塞班公司被诺基亚收购。2011年12月21日,诺基亚官方宣布放弃塞班品牌。由于缺乏新技术支持,塞班的市场份额日益萎缩。2012年5月27日,诺基亚彻底放弃开发塞班系统,但是服务将一直持续到2016年。
1.1.3 什么是Android平台
Android一词的本义指“机器人”,同时也是Google公司于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称。该平台由操作系统、中间件、用户界面和应用软件组成,主要应用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l’Isle-Adam)在1886年发表的科幻小说《未来夏娃》中。他将外表像人的机器起名为Android。Android系统的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号。
由于开源以及使用Java作为开发语言的特点,越来越受到广大开发者的青睐,支持的硬件厂商也越来越多。2012年7月美国科技博客网站BusinessInsider评选出21世纪十款最重要电子产品,Android操作系统和iPhone等榜上有名。目前市面上几大操作系统中,Android系统的市场占有率最高,上升速度最快。
1.2 Android平台的发展历程
1.2.1 Android的发展
2003年10月,安迪·鲁宾(Andy Rubin)等人创建Android公司,并组建Android团队。
2005年8月17日,Google公司低调收购了成立仅22个月的高科技企业Android及其团队。安迪·鲁宾成为Google公司工程部副总裁,继续负责Android项目。
2007年11月5日,Google公司正式向外界展示了这款名为Android的操作系统,并且宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,共同研发和改良Android系统。这一联盟将支持Google公司发布的手机操作系统以及应用软件。Google公司以Apache免费开源许可证的授权方式,发布了Android的源代码。
2008年,在Google I/O大会上Google公司提出了Android HAL架构图,同年8月18日,Android获得了美国联邦通信委员会(FCC)的批准,于2008年9月Google公司正式发布了Android 1.0系统。这也是Android系统最早的版本。
2009年4月,Google公司正式推出了Android 1.5版手机。从Android 1.5版本开始,Google公司将Android版本以甜品的名字命名。Android 1.5被命名为Cupcake(纸杯蛋糕),该系统与Android 1.0相比有了很大的改进。
从1.6开始,Android开启了飞速发展的时代。Android的版本不断更新,功能不断完善,用户群体和应用领域不断扩大。目前最新的版本为Android 10,从此,Google公司宣布Android系统的重大改变,不仅换了全新的Logo,命名方式也变了。
1.2.2 Android的版本
Android系统从第一个版本开始,迭代升级非常快,几乎每隔半年就有一个新的版本。从Android 1.5开始,Google公司采用甜点作为系统版本的命名方法,各个版本的发布时间、名称、API版本如表1-1所示。
表1-1 Android的历史版本
|发布时间 |版 本 |名 称 |API版本号 |
|2008年9月 |Android 1.0 | |1 |
|2009年2月 |Android 1.1 | |2 |
|2009年4月 |Android 1.5 |Cupcake(纸杯蛋糕) |3 |
|2009年9月 |Android 1.6 |Donut(甜甜圈) |4 |
|2009年10月 |Android 2.0 / 2.0.1 / 2.1 |Éclair(松饼) |5/6/7 |
|2010年5月 |Android 2.2 / 2.2.1 |Froyo(冻酸奶) |8 |
|2010年12月 |Android 2.3 |Gingerbread(姜饼) |9 |
|2011年2/5/7月 |Android 3.0 / 3.1 / 3.2 |Honeycomb(蜂巢) |11/12/13 |
|2011年10/12月 |Android 4.0 / 4.0.3 |Ice Cream Sandwich(冰淇淋三明治) |14/15 |
|2012年6月 |Android 4.1 |Jelly Bean(果冻豆) |16 |
|2012年10月 |Android 4.2 | |17 |
|2013年7月 |Android 4.3 | |18 |
|2013年11月 |Android 4.4 |KitKat(巧克力棒) |19 |
|2014年10月 |Android 5.0 |Lollipop(棒棒糖) |21 |
|2015年3月 |Android 5.1 | |22 |
|2015年5月 |Android 6.0 |Marshmallow(棉花糖) |23 |
|2016年5月 |Android 7.0 |Nougat(牛轧糖) |24 |
|2017年8/12月 |Android 8.0 / 8.1 |Oreo(奥利奥) |26/27 |
|2018年5月 |Android 9.0 |Pie(派) |28 |
|2019年9月 |Android 10 |从此以后不再以甜点命名 |29 |
Android部分版本的Logo如图1-1所示。
[pic]
图1-1 Android部分版本Logo
1.3 Android平台的架构
Android是基于Linux内核的软件平台,它的体系架构和其他操作系统一样,采用了分层的架构。从图1-2看,Android的架构分为四层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux(系统)内核层。
[pic]
图1-2 Android平台体系架构
1.3.1 应用程序层
Android应用程序层是设备与用户进行交互的一层,它会同一系列核心应用程序包一起发布。该层包括客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是使用Java语言编写的。
1.3.2 应用程序框架层
应用程序框架层是Android应用程序开发的基础。该应用程序架构简化了组件的重用机制,任何一个应用程序都可以发布它的功能块,并且任何其他的应用程序都可以使用已发布的功能块,但是新模块必须遵循框架的安全规则。同样,该应用程序重用机制也使用户可以方便地替换程序组件,开发者也可以通过继承来实现功能的扩展。
这一层也是基于Java语言开发实现的,主要包括以下内容。
• 丰富而又可扩展的视图(View)。可以用来构建应用程序,包括列表(ListView)、网格(GridView)、文本框(EditText)、按钮(Button)、可嵌入的Web浏览器等。
• 内容提供者(Content Provider)。使得一个应用程序可以访问另一个应用程序的数据(如联系人列表),或者共享自己的数据。
• 资源管理器(Resource Manager)。提供非代码资源的访问,如本地字符串常量、图片、布局文件等。
• 通知管理器(Notification Manager)。使得应用程序可以在状态栏显示自定义的提示信息。
• 活动管理器(Activity Manager)。用来管理应用程序生命周期并提供常用的导航回退功能。
1.3.3 系统运行库层
系统运行库是应用程序框架的基础,它连接应用程序框架层与Linux内核层。它包含一些C/C++库,这些库将被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务,以下是一些核心库。
• 系统C库。一个从BSD继承来的标准C系统函数库libc,是专门为基于Embedded Linux的设备定制的。
• 基于PacketVideo OpenCore的媒体库。该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件,其编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
• Surface Manager。它对显示子系统进行管理,并且为多个应用程序提供2D和3D图层的无缝融合。
• LibWebCore。它是一个最新的Web浏览器引擎,支持Android浏览器和一个可嵌入的Web视图。
• Android运行时库。它是一个基于Java的运行时环境,包括核心库和Dalvik虚拟机两部分。核心库提供了Java语言API中的大多数功能,同时也包括Android的一些核心API。
1.3.4 系统内核层
所谓的系统内核(Kernel),就是操作系统核心底层软件结构,负责对硬件的访问,管理进程、内存、驱动程序以及支持文件系统等基础功能,它的性能和稳定性是整个操作系统正常运行的关键。Android 是运行于Linux Kernel之上,但并不是GNU/Linux,仅为一个分支,因为Android系统删除了大部分GNU/Linux支持的功能。
Linux内核层为Android框架层提供了非常核心的支持,比如Camera驱动、USB驱动、Wi-Fi驱动等。除此之外,Android系统还实现了一些重要驱动,比如非常重要的进程间通信Binder驱动。Linux内核层好比房子的地基,只有地基稳固了,房子才会稳固,只有Android系统,内核层稳定高效,才能保证上层更流畅、更高效、更稳定地运行。Android 的Linux Kernel控制包括安全(Security)、存储器管理(Memory Management)、进程管理(Process Management)、网络堆栈(Network Stack)、驱动程序模型(Driver Model)等。由于Linux内核全部使用C语言编写,所以Android内核层也是全部用C语言编写的。
1.4 Android平台的特性与优势
1.4.1 Android平台的特性
Android最初也是只针对手机研发的操作系统,所以它具有手机终端应该具有的电话、短信、邮件、多媒体和上网等常规功能。随着应用范围的扩大,Android逐渐应用于智能电视、平板、智能家电等设备,因此其兼顾了用户体验、娱乐性和控制性等功能需求。下面介绍Android系统的主要特性。
1. 网络通信
Android广泛支持所有网络制式的语音、数据业务、SMS短信,包括GSM/EDGE、IDEN、CDMA、EV-DO、UMTS、Bluetooth、Wi-Fi、LTE、NFC和WiMAX。
2. 数据存储
一方面,Android提供了高效、快速的数据存储方式,包括快速格式化数据存储SharedPreferences、内存文件存储、外存文件存储和轻量级关系数据库存储SQLite。应用程序可以选择合适的方式保存和访问数据。另一方面,为了实现跨进程共享数据,Android提供了通用的数据共享组件ContentProvider,可以在无须了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新操作。
3. 界面设计
一方面,Android系统支持更大的分辨率,VGA、2D显示、3D显示都是基于OpenGL ES 2.0标准,并且支持传统的智能手机。Android提供了丰富的界面控件供开发者调用,从而加快了用户界面的开发速度,也保证了Android平台上程序界面的一致性。Android将界面设计与程序逻辑分离,使用XML文件对界面布局进行描述,有利于界面的修改和维护。
4. 多媒体支持
Android广泛支持各种流行的视频、音频和图像文件格式,支持的格式有MPEG4、H264、MP3、MP4、AAC、AMR、JPG、PNG、BMP和GIF,并且为2D和3D图像处理提供了专用的API库。如果用户需要播放更多格式的媒体,还可以安装其他第三方应用程序。Android支持RTP/RTSP(3GPP、PSS、ISMA)的流媒体以及(HTML5)的流媒体,同时还支持Adobe公司的Flash。安装RealPlayer后,还可以支持苹果公司的流媒体。
5. 丰富的硬件接口
Android系统提供了访问硬件的API库函数,用来简化硬件资源的访问过程。只要支持Android应用程序框架的设备,对硬件的访问方法都是完全一致的。即使应用程序移植到不同硬件配置的设备上,也无须修改应用程序对硬件的访问方法。Android支持的硬件非常多,包括视频/照片摄像头、多点电容/电阻触摸屏、GPS、气压计、加速计、磁场计、陀螺仪、鼠标键盘、USB Disk、体感控制器、蓝牙设备、无线设备、压力传感器、温度计等。
6. 轻量级的进程通信机制
Android使用Intent组件实现轻量级的进程通信,使跨进程通信和发送系统级广播成为可能。通过设置组件的Intent过滤器、应用匹配和筛选机制,可以准确地隐式启动远程Activity组件。
7. 位置服务和地图应用
Android支持位置服务和地图应用,开发者可以通过SDK提供的API直接获取当前的位置、追踪设备的移动路线,并且可以将Google地图、百度地图或其他第三方地图嵌入Android应用程序中,实现地理信息可视化开发。
8. 开发语言的支持
大部分Android应用程序都是基于Java语言编写的,但是Android是将程序转换成Dalvik Executables的文件才能在Dalvik虚拟机上运行。通常可以通过在Android SDK(Android软件开发包)中使用Java作为编程语言开发应用程序,开发者也可以通过在Android NDK(Android Native开发包)中使用C或者C++语言开发应用程序的部分核心模块,以提高应用程序的运行效率,有助于增强Android开发的灵活性。此外,Google公司还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。
9. 应用程序的跨平台性
由于Android系统的开放性和可移植性,可以运行在大部分智能电子设备上,主要包括智能手机、智能家电、平板电脑、掌上游戏机、智能手表、汽车设备、导航仪、穿戴设备等。Android系统大多运行在ARM架构的硬件设备上,但是也有支持X86架构的Android版本,例如Google TV就是使用了一个定制的X86架构版本的Android操作系统。
同样,苹果公司的iOS设备、微软公司的Windows Phone设备也可以安装Android操作系统,但是需要通过双系统启动工具Open iBoot或者iDroid来运行它们。
10. 应用程序的安全机制
沙箱(Sandbox)是Android系统所用的安全机制,所有的应用程序都会被简单地解压到沙箱中进行检查,并且将应用程序所需的权限提交给Android系统,然后以列表的形式展现出来,供用户查看。例如一个第三方应用需要具有拨打电话、发送短信、访问联系人等权限,用户可以根据权限列表考虑自己是否安装该应用,也可以先安装该应用程序,然后关闭该应用程序的某些权限。
随着Android系统版本的升级,Google公司采用了更严格的权限管理机制,自Android 6.0开始,应用程序的一些权限的申请不再采用基于清单文件的一次性静态申请方式,而是在每次应用程序启动时动态申请,如外部存储器的读写操作权限。
1.4.2 Android平台的优势
Android作为一种开源的操作系统,其在手机操作系统领域的市场占有率已经超过了80%,成为当今智能手机的主要操作系统之一。Android之所以能受到市场的广泛欢迎,是因为其具有独特的开发优势,如图1-3所示。
[pic]
图1-3 Android平台的优势
1.5 习 题
1.什么是Android平台?
2.Android系统平台的架构分为哪几层?
3.Android系统平台有哪些特性?
第2章
开发环境及项目结构
【本章要点】
Android的开发环境是一个相对复杂的系统,它需要多个工具的协同工作,以达到开发Android应用程序的目的。因此,开发环境的安装与配置涉及多项工作,即安装JDK、安装Android SDK、安装集成开发工具、安装模拟器及其他辅助工具,最后对它们进行配置和调试。本章将详细讲解这些工具的安装与配置,并重点讲解Eclipse工具的应用、项目结构等。
【学习目标】
● 了解搭建开发环境所需软件的下载方式,能够自行下载并正确
安装和配置。
● 掌握使用Android SDK Manager管理SDK及其配套资源的
方法。
● 掌握Android Studio或者Eclipse集成开发工具的使用方法。
● 掌握使用模拟器和真机进行Android应用调试运行的方法。
2.1 JDK的安装
从第1章1.3节Android平台的架构可以看出,Android应用程序层和应用程序框架层均是基于Java语言开发的。因此,安装JDK是搭建开发环境的第一步。JDK的基本组件包括编辑器、编译器、打包工具、文档生成器、差错工具等。安装JDK后,Java运行时环境JRE也会自动安装,它也是一些其他开发工具的运行条件。
2.1.1 JDK的下载
开发者可以从Oracle官方网站下载各种版本的JDK。JDK的下载网址为,下载页面如图2-1所示。
[pic]
图2-1 Oracle官网JDK概览页面
从图2-1可以看出,目前JDK最新版本为2019年9月发布的Java SE 13。实际上,对于Android基本功能的开发,较低版本的JDK也能胜任,但是Android 7.0以后对JDK做了限制,必须是Java SE 8以上。本教程中所有Android应用程序案例编译的目标版本为Android 7.0,因此笔者选择了最低的JDK版本Java SE 8。单击图2-1所示页面中Java SE 8下方的Download链接,进入如图2-2所示的下载页面。
[pic]
图2-2 Java SE Development Kit 8u241的下载页面
开发者可以从图2-2所示的页面中选择适合自己操作系统的版本,然后选中页面中的Accept License Agreement单选按钮,下载安装文件。
2.1.2 JDK的安装
JDK的安装过程十分简单,运行已经下载的安装文件,进入如图2-3所示的定制安装对话框。
[pic]
图2-3 JDK的定制安装
在其定制安装对话框中,开发者可以选择是否安装源代码、公共JRE,然后选定安装目标路径,接着根据向导对话框一直单击“下一步”按钮,即可完成安装。
2.1.3 环境变量配置
JDK安装完成后,还需要进行Java环境变量配置,目的是向系统注册Java命令、类路径等,步骤如下。
(1) 右击“我的电脑”(或“计算机”)图标,在弹出的快捷菜单中选择“属性”命令,在打开的系统属性界面中单击“高级系统设置”链接,打开“系统属性”对话框并切换到“高级”选项卡,单击“环境变量”按钮,打开如图2-4所示的“环境变量”对话框。
[pic]
图2-4 “环境变量”对话框
(2) 新建系统变量JAVA_HOME,值为JDK的安装路径,例如:
JAVA_HOME="C:\Program Files\Java\jdk1.8.0_241"
(3) 新建系统变量CLASSPATH,通过JAVA_HOME变量,引入两个基本库,即dt.jar和tools.jar,例如:
CLASSPATH="%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;"
(4) 找到系统变量Path,在其尾部添加“%JAVA_HOME%\bin;”,用于指定JDK基本命令路径。
(5) 在Command命令窗口中,输入java -version命令,查看执行结果,以检查是否安装成功。
2.2 Android SDK的安装
Android SDK是Android软件开发工具包(Android Software Development Kit)。它包含Android开发的API、辅助开发工具、开发文档和程序范例,有利于提高应用程序开发的效率,缩短开发周期。
2.2.1 SDK Manager的下载
开发者首先需要在Google的Android开发者网站上下载SDK Manager,然后通过SDK Manager下载不同版本的Android SDK、辅助开发工具、开发文档和一些程序案例。
Android开发者网站的网址为,在该页面中可以选择下载基于不同操作系统版本的SDK Manager。笔者选择Windows版本,然后下载保存到本地磁盘的D:\android\sdk目录下。运行SDK Manager.exe文件,打开SDK管理器,如图2-5所示。
[pic]
图2-5 SDK下载管理器
2.2.2 Android SDK的下载与管理
SDK Manager运行后,可以自动获取可下载的SDK、辅助工具、开发文档等资源的列表,如图2-5所示。开发者可以打开资源列表,查看所有的资源,并通过复选框选择需要下载的内容。为了满足基本的开发需求,至少需要选择的资源有:Tools/Android SDK Tools、Tools/Android SDK Platform-tools、Tools/Android SDK Build-tools,以及一个较新的Android版本。Android SDK Build-tools为SDK项目编译工具,选取它的版本最好与Android的版本一致。选定一个Android较新的版本后,没有必要下载该版本所有的资源,以Android 7.0(API 24)为例,至少要选取其下的SDK Platform和一个系统镜像(如ARM 64 v8a System Image)。系统镜像主要用于模拟器系统,其他资源可自行选择。当选定需要下载的资源后,单击Install…按钮开始安装,这些资源将会自动下载到d:\android\sdk目录下。当然,资源文件非常大,下载时间会很长。
2.2.3 Android SDK的目录结构
下载并成功安装Android SDK后,可以在文件系统中查看它的目录结构。各个目录的功能说明如图2-6所示。该目录下的工具配置和应用将在集成开发工具中详细讲解。
[pic]
图2-6 Android SDK的目录结构
2.3 集成开发工具Android Studio
集成开发工具Android Studio是Google官方指定的Android应用程序开发环境。它是一个优秀的工具,基于成熟的IntelliJ IDEA,集成了Android的开发工具和调试工具,为开发者提供了从项目创建、管理、编辑、编译、调试、运行和打包等一整套程序设计解决方案。
2.3.1 Android Studio的下载
Android Studio的最新版本为3.5.2,发布日期为2019年11月,开发者下载的方式主要有两个。
1. 从官网下载
官网网址为,从这里可以查看Android Studio的基本介绍、特点和系统要求等。
开发者可以根据个人操作系统平台选择合适的版本下载。
2. 从中文社区网下载
Android Studio中文社区网的网址为,这里除了提供安装包下载外,还提供非常全面的中文教程和交流平台。单击页面中的“下载”标签,可以下载Windows版的最新安装包,如图2-7所示。开发者也可以选择其他操作系统平台的版本,或者选取历史版本,非常适合中国开发者。
[pic]
图2-7 Android Studio从中文社区网下载的界面
2.3.2 Android Studio的安装
运行下载的安装包,即可启动安装操作,安装程序首先进入安装选项对话框,如图2-8所示。开发者可以根据个人电脑软件环境进行选择。随后,根据安装向导,一步一步地单击Next按钮,即可完成安装。
[pic]
图2-8 Android Studio的安装选项
2.3.3 Android Studio的运行与配置
首次运行Android Studio,系统提示用户进行初始化设置,包括软件皮肤选择、Android SDK定位或下载、开发环境设置,如图2-9所示。如果开发者已经下载、安装了Android SDK并做了必要的配置,则可以设置SDK的目录,避免重新下载,如图2-10所示。
[pic]
图2-9 Android Studio安装向导的欢迎界面
根据安装向导完成配置后,Android Studio正式运行起来,其欢迎界面如图2-11所示。用户仍然可以单击下方的Configure选项进行配置修改。
以新建Android项目为例,单击(或选择)Start a new Android Studio project选项,依次进入如图2-12和图2-13所示的页面,分别用来选择项目类型、填写项目基本信息。
[pic]
图2-10 Android SDK的组件设置
[pic]
图2-11 Android Studio的欢迎界面
[pic]
图2-12 选择项目类型
[pic]
图2-13 配置项目
项目创建成功后,Android Studio进入如图2-14所示的主窗体页面,开发者可以在此完成项目的设计、编码、调试与导出等开发工作。
[pic]
图2-14 Android Studio的主页面
开发者也可以选择主窗体菜单栏中的Tools→SDK Manager命令,进入新项目配置对话框,以便修改Android SDK目录、选定Android SDK版本、更新SDK等,如图2-15所示。
开发者还可以选择主窗体菜单栏中的Tools→AVD Manager命令,进入模拟器管理对话框,对模拟器进行管理,如图2-16所示。
[pic]
图2-15 新项目SDK配置对话框
[pic]
图2-16 模拟器管理对话框
2.4 集成开发工具Eclipse
Eclipse是一个开放源代码的基于Java的可扩展开发平台,功能强大,易于使用。就其本身而言,它只是一个框架和一组服务,可使用不同插件构建不同的开发环境。Android提供了ADT插件(Android Development Toolkit),可集成到Eclipse中,构建极简的用于Android应用程序设计、编码、调试、打包等操作的开发工具。因此,Eclipse是Android应用程序设计初学者首选的集成开发工具。
2.4.1 Eclipse的下载与配置
Eclipse本身是一款免费工具,必须配合Android ADT插件,才可以构建Eclipse for Android集成开发工具,实现的途径主要有以下三种。
1. 下载Eclipse,然后在线安装ADT
下载Eclipse的官方网址为,下载页面如图2-17所示。
[pic]
图2-17 Eclipse的下载页面
下载并安装Eclipse后,运行Eclipse,选择主窗体菜单栏中的Help->Install New Software命令,弹出插件安装对话框。单击Add按钮,弹出插件地址配置对话框,如图2-18所示。ADT在线安装地址为,单击OK按钮,Eclipse将解析插件地址,并引导用户完成插件在线安装。
[pic]
图2-18 Eclipse在线安装ADT插件
开发者也可以单独下载ADT插件,然后离线安装。ADT插件的下载地址为。
2. 下载集成了ADT的Eclipse
Eclipse官方网站同时提供了Eclipse for Android工具,安装包下载网址为,下载页面如图2-19所示。开发者首先把安装包下载下来,然后通过如图2-18所示的对话框完成ADT的安装。
[pic]
图2-19 Eclipse for Android的下载页面
3. 从开发者社区下载集成了ADT的Eclipse
前两种方式下载并安装ADT,都存在一些限制,如外网无法访问、Eclipse需要注册并缴费等。初学者也可以直接从一些开发者社区下载集成了ADT的Eclipse,下载速度快,无其他限制。比如ADT Bundle & Plugin百度网盘,网址为,下载页面如图2-20所示。
[pic]
图2-20 百度网盘的下载页面
2.4.2 Eclipse for Android模块介绍
Eclipse是一个通用的集成开发工具,它的使用方法与Eclipse for Java类似,本节只介绍与Android有关的几个模块的使用方法。
1. Android SDK的定位与管理
下载并成功安装Eclipse for Android后,运行软件,选择主窗体菜单栏中的Window→Preferences命令,在弹出的对话框中选择左边的Android选项,可以配置Android SDK的安装目录,如图2-21所示。
[pic]
图2-21 Android SDK的配置
在2.2.2节中,已经介绍了Android SDK的下载与管理。在Eclipse集成工具中,也可以通过快捷按钮或者选择主窗体菜单栏中的Window→Android SDK Manager命令,调用SDK Manager组件,对SDK资源进行增加、删除、更新等管理。
2. AVD的管理
AVD即Android Virtual Device的首字母缩写,主要用于构建虚拟的Android设备,调试和仿真Android应用程序。AVD Manager可以创建、修改、删除和启动各种类型的模拟器。模拟器有多种类型,如Android手机、Android电视、Android手表等,本教程中只专注于Android手机的应用程序开发。开发者可以选择Eclipse主窗体菜单栏中的Window→Android Virtual Device Manager命令,进入管理器对话框,如图2-22所示。模拟器管理器可以同时启动多个模拟器,调试运行应用程序的时候,将会跳出可供选择的模拟器列表。
在AVD管理器对话框中,单击Create按钮,弹出创建AVD对话框,如图2-23所示。必须提醒的是,Target为模拟器中预装的Android版本,CPU/ABI为模拟器系统镜像,两者必须一致,如果在SDK Manager中没有下载某个版本的系统镜像,则不能在Target中选择这个Android版本。SD Card为虚拟的外存,当应用程序中需要读写SD Card时,模拟器的SD Card必须设置一定的空间。对话框其他配置属性说明如下。
• AVD Name:AVD名称,只要管理器中AVD不重名即可。
• Device:虚拟设备,可选的设备有手机、智能手表、平板电脑、电视等,它们的分辨率不同。本教程中,一般选取不同分辨率的手机来调试运行应用程序。
• Keyboard:键盘布局,按默认选中即可。
• Skin:模拟器皮肤,最好不要选no Skin,那样的话,操作很麻烦。
• Front Camera/Back Camera:前置及后置摄像头,模拟器中一般选择None。
• Memory Options:内存配置选项,按默认值即可,太大的值会影响主机的速度。
• Internal Storage:模拟器ROM的大小,占用计算机的磁盘空间。
[pic]
图2-22 AVD管理器对话框
[pic]
图2-23 创建AVD对话框
3. DDMS
DDMS是Dalvik Debug Monitor Service的首字母缩写,它是Android系统中内置的调试工具,可以用来监视系统中的进程、堆栈信息,查看日志,以及实现端口转发服务、模拟器截屏、电话呼叫、短信管理、浏览模拟器文件系统等。在Eclipse中,可以通过选择主窗体菜单栏中的Window→Open Perspective→Other命令,在弹出的列表对话框中选择DDMS,这样DDMS将添加到Eclipse集成环境中,如图2-24所示。
[pic]
图2-24 DDMS窗口
DDMS将搭建起IDE与模拟终端的链接桥梁。DDMS的设备管理模块可以同时监视多个模拟器,每个模拟器使用端口号标识,第一个启动的模拟器为5554,第二启动的模拟器为5556,以此类推。单击一个模拟器,可以显示该模拟器中的进程,选择一个进程可以刷新进程中的线程和堆栈信息,开发者可以强行关闭某一个进程。
DDMS还具有的功能有内存分配追踪器(Allocation Tracker)、文件浏览器(File Explorer)、模拟器控制器(Emulator Control)、系统信息(System Information)、日志管理器(LogCat)等。
4. File Explorer
File Explorer为模拟器文件系统浏览器,它是DDMS的一个功能模块,如图2-25所示。第8章特别需要使用这个功能模块,以验证程序的执行结果,所以单独介绍该功能。开发者可以使用File Explorer浏览模拟器文件系统,可以单击右上角的Push和Pull按钮上传和下载文件,也可以单击右上角“+”(加号按钮)新建一个文件夹,或者单击“-”(减号按钮)删除自建的文件夹。
5. LogCat
LogCat为日志查看器,它也是DDMS的一个功能模块,如图2-26所示。对初学者来说,LogCat是DDMS中使用频率最高的一个功能模块,所以单独介绍该功能。
Android的日志有多种类别,分别是verbose、debug、info、warn、error、assert。Android API中的Log类分别提供了6种方法,生成6种类型的日志信息。开发者可以使用它们在程序中输出不同类型的日志,以调试和定位程序的错误。程序在运行过程中,系统也会产生大量的日志,帮助开发者判断程序的执行情况。Log类常用的方法和属性如表2-1所示。
[pic]
图2-25 文件浏览器
[pic]
图2-26 LogCat日志查看器
表2-1 Log类的常用方法和属性
|方法和属性 |功能说明 |
|public static int DEBUG, ERROR, INFO, WARN |日志类型常量 |
|public static int d(String tag, String msg) |打印调试信息,tag为标签 |
|public static int e(String tag, String msg) |打印程序中的错误信息,tag为标签 |
|public static int i(String tag, String msg) |打印比较重要的信息数据,tag为标签 |
|public static int v(String tag, String msg) |打印最为烦琐、意义不大的日志信息 |
|public static int w(String tag, String msg) |打印警告信息,提示程序该处可能存在风险 |
|public static int wtf(String tag, String msg) |记录优先级assert错误,可以发送错误报告,并立即终止程序 |
Android的系统日志非常多,为了快速定位,LogCat提供了过滤器功能,开发者可以单击图2-26所示对话框左上角的“+”(加号按钮),进入自定义过滤器对话框,定义一个过滤器,设置过滤条件,只显示满足匹配条件的日志,如图2-27所示。
[pic]
图2-27 定义日志过滤器
2.5 项目创建与项目结构
在2.4节已经提到,Eclipse for Android是最适合初学者的集成开发工具,因此本节中Android项目的创建、项目结构的分析,都是基于Eclipse IDE的,本教程中所有案例的源代码也是基于Eclipse的。
2.5.1 新建Android项目
在Eclipse中,选择主窗体菜单栏中的File→New→Android Application Project命令,弹出新建Android应用程序项目向导对话框,如图2-28所示。该对话框中各个属性的设置说明如表2-2所示。
[pic]
图2-28 新建Android项目属性设置
表2-2 新建项目的属性设置说明
|属性名称 |功能说明 |
|Application Name |应用的名称,当该应用App安装在手机上时,将显示在图标的下方,可以使用中文 |
|Project Name |开发阶段的项目名称,建议只使用英文字母,以免编译和移植时出错 |
|Package Name |相当于App的ID,一个手机中不能有相同的Package Name,因此该属性必须足够长,确保具有唯一 |
| |性 |
|Minimum Requested SDK |App能够运行的最小的Android版本 |
|Target SDK |App能够运行的最合适的Android版本 |
|Compile With |项目由哪个SDK版本编译 |
单击图2-28所示对话框中的Next按钮,进入如图2-29所示的对话框,确定是否创建定制化Icon,是否同时创建一个页面等。
[pic]
图2-29 新项目配置对话框
单击图2-29所示对话框中的Next按钮,进入如图2-30所示的对话框,用于配置App图标、默认背景色等。
[pic]
图2-30 App图标配置对话框
单击图2-30所示对话框中的Next按钮,进入图2-31所示对话框,在此需要确定默认创建的页面类名和布局描述文件名,开发者可以使用默认值。当单击Finish按钮后,项目创建完成,进入Eclipse IDE的主窗体页面,如图2-32所示,项目剩余的设计、编码、调试均在此完成。
[pic]
图2-31 默认页面的命名
[pic]
图2-32 Eclipse IDE的主窗体页面
2.5.2 项目结构
在Eclipse中,Android应用程序的代码文件、布局文件、资源文件、配置文件等均是以项目为单位进行统一管理的。在一个项目中,主要包含存放Java源码的src目录、存放资源的assets和res目录、存放自动生成的Java源代码的gen目录、存放第三方JAR包的lib目录及一些配置文件,详细的功能介绍如图2-33所示。
[pic]
图2-33 Android的项目结构
2.5.3 项目的运行
1. 基于模拟器的调试运行
模拟器其实就是一部运行在PC上的软件手机,关于软件手机的创建与管理在2.4.2节已经讲解了AVD的管理方法。启动AVD管理器,运行xm19模拟器,如图2-34所示。
以2.5.1节新建的空项目myproject为例,右击项目名,在弹出的快捷菜单中选择Run As→Android Application命令。该项目将自动打包上传到模拟器上进行安装,并自动运行。
2. 基于真机的调试运行
模拟器的功能、速度、显示效果均存在差异,而且稳定性差,使用Android真机调试操作简单,速度快,稳定性好。实现步骤如下。
(1) 将手机设置为USB调试模式,各种品牌的Android手机设置方式存在差异,开发者可以从百度上学习具体的设置步骤。
(2) 用USB线将手机连接到电脑的USB接口上。
(3) 当手机弹出如图2-35左图所示的页面时,选择USB连接方式为传输文件。
(4) 当手机弹出如图2-35中图所示的页面时,单击“确定”按钮,允许USB调试。
[pic]
图2-34 模拟器运行效果
[pic] [pic] [pic]
图2-35 真机调试
真机连接成功后,右击项目名,在弹出的快捷菜单中选择Run As→Android Application命令,系统弹出如图2-36所示的模拟器选择对话框。选择第二个,该项目将打包、上传到真机上安装并自动运行,效果如图2-35右图所示。
[pic]
图2-36 模拟器选择对话框
2.5.4 helloWorld案例
开发环境搭建成功后,以Eclipse为例新建一个helloWorld项目。
1. 功能说明
在Eclipse环境下,新建helloWorld案例,在默认首页MainActivity中,放入一张图片和一行字符“Hello,World!”,运行效果如图2-37所示,并用代码打出日志信息“Hello,Android World!”。
2. 实现要点
(1) 按2.5.1节的步骤新建一个项目,命名为helloWorld,最低版本为API 19,目标版本为API 24,编译版本为API 24,默认首页为MainActivity,对应布局描述文件为activity_main.xml。
(2) 准备一张Android的Logo图片,放入res\drawable目录中。
(3) 在activity_main.xml中,使用可视化设计器,直接向页面中放入一个ImageView并关联Logo图片。
(4) 在activity_main.xml中,放入一个TextView,修改android:text值为“Hello, World!”。
(5) 在MainActivity的onCreate()回调方法中,加入Log.i()方法,打印日志,详见(下页的)代码。
(6) 使用DDMS中的LogCat工具,定义一个tag为“HelloWorld”的日志过滤器,用于查看打印的日志。
(7) 按2.5.3节的方法,使用真机调试运行,并使用过滤器查看日志。
3. 参考代码
(1) 默认首页布局描述文件activity_main.xml的代码如下:
(2) 默认首页类MainActivity.java的代码如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("HelloWorld", "Hello, World!"); //打印日志
}
}
4. 运行效果
使用真机调试运行,效果如图2-37所示。运行之前,在DDMS的LogCat工具中新定义一个Tag为HelloWorld的过滤器,如图2-38所示。在LogCat中通过过滤器查看的日志信息如图2-39所示。
[pic]
图2-38 定义过滤器
[pic]
图2-39 通过过滤器查看日志
2.6 习 题
1.自行下载JDK、SDK Manager安装包并安装和配置,运行SDK Manager后选定合适的Android SDK版本,然后完成下载。
2.选择Android Studio IDE或者Eclipse IDE,下载安装包,安装并做好配置。
3.在集成环境中,配置好模拟器和真机连接,并测试运行。
4.在集成环境中,重做2.5.4节的helloWorld案例。
-----------------------
[pic]
集成开发环境.mp4
本章视频一:主要讲解并演示JDK、Android SDK、Android Studio、Eclipse等工具的下载与安装,并对它们进行配置与管理。视频内容涵盖了本章2.1、2.2、2.3、2.4节的内容。
[pic]
新建项目与项目结构.mp4
本章视频二:主要讲解并演示Eclipse IDE下项目创建、模拟器管理、项目运行、真机调试。分析Eclipse环境下Android项目结构,并演示实现HelloWorld案例。视频内容涵盖了本章2.5节。
[pic]
图2-37 helloWorld案例的运行效果
-----------------------
基于案例的Android程序设计教程
第1章 Android平台概述
34
35
第2章 开发环境及项目结构
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.