




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安卓应用开发基础作者:安卓开发员Android应用程序是用Java编程语言编写的。Android SDK工具可以编译任何数据和资源文件的代码成一个文件后缀为.apk的安卓程序包。所有的在一个单一的代码.apk文件被认为是一个应用程序,是Android的文件,供电设备来安装应用程序。 一旦安装在设备上,每个Android应用程序的生命在它自己的安全沙箱上:Android操作系统是一个多用户Linux系统,每个应用程序都是一个不同的用户。默认情况下,每个应用程序的系统分配一个唯一的Linux用户ID(该ID仅用于由系统是未知的应用程序),系统设置所有的应用程序中的文件权限,以便只有用户ID分配给该应用程序可以访问它们。每个进程都有它自己的虚拟机(VM),因此应用程序的代码与其他应用程序隔离运行。默认情况下,每个应用程序运行在它自己的Linux进程。在Android启动过程时,应用程序的任何组件需要被执行,在关闭该进程时,它不再需要或恢复时,系统必须为其他应用程序提供内存。 这样一来,Android系统实现了最小特权原则,也就是说,每个应用程序,默认情况下,只需要访问的组件,它需要再做更多的工作。这将创建一个非常安全的环境,使应用程序无法访问的,这就是它没有给予许可制度的部分。 但是,有一个应用程序的方法与其他应用程序和应用程序访问系统服务的数据:这有可能为两个应用程序安排共享相同的Linux用户ID,在这种情况下,它们能够相互访问的文件。为了节约使用相同的用户ID系统资源,应用程序还可以安排运行在相同的Linux进程和共享同一个VM(应用也必须使用相同的证书签名)。应用程序可以请求访问权限,如用户的联系人,短信,可安装存储(SD卡),摄像头,蓝牙等设备的数据,所有应用程序的权限必须由用户在安装时授予。 覆盖的基础是如何让应用程序在安卓中存在,本文向您介绍:1、框架的核心组件定义应用程序。2、清单文件中声明组件和应用程序所需的设备功能。3、资源是从应用程序代码分开,并允许您的应用程序正常优化的设备配置各种其行为。应用程序组件(Application Components) Android的核心功能之一就是一个应用程序可以使用其它应用程序的元素(如果那个应用程序允许的话)。比如说,如果你的应用程序需要一个图片卷动列表,而另一个应用程序已经开发了一个合用的而又允许别人使用的话,你可以直接调用那个卷动列表来完成工作,而不用自己再开发一个。你的应用程序并没有吸纳或链接其它应用程序的代码,它只是在有需求的时候启动了其它应用程序的那个功能部分。 为达到这个目的,系统必须在一个应用程序的一部分被需要时启动这个应用程序,并将那个部分的Java对象实例化。与在其它系统上的应用程序不同,Android应用程序没有为应用准备一个单独的程序入口(比如说,没有main()方法), 而是为系统依照需求实例化提供了基本的组件。共有四种组件类型:活动(Activities)一个activity代表用户界面的一个独立屏幕。例如,一个邮件应用程序应该有一个activity用于显示新邮件列表,另一个 activity用于撰写一封邮件,还有一个activity用于读取邮件。尽管所有activitie协同工作以构成邮件应用程序的用户体验,但彼此之间相对独立。应次,不同的应用程序能够从任何一个 activity启动(只要邮件应用程序允许)。例如,用户需要分享一张照片,一个拍照应用程序能够启动邮件应用程序的 activity 。activity是一个实现Activity的子类,你可以在Activities开发者指导部分了解更多。服务(Services)service是在后台运行,执行长时间操作或者执行远程操作。 service不提供用户界面。例如,当用户在另一个应用程序时,一个 service 可在后台播放音乐,或者是从网络上获取数据,而不阻断用户与当前activity的交互。其他组件,比如一个activity ,为了与该service互动,可以启动或者 绑定它。service是一个实现了Service的子类,你可以在Services开发者指导部分了解更多。广播接收器(Broadcast receivers)广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播比如说,通知其它应用程序一些数据下载完成并处于可用状态。内容提供者(Content providers)内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLite数据库或其它方式。内容提供者继承于ContentProvider基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。 Android系统设计的一个独特方面是任何的一个程序都可以启动另一程序的组件。比如,你想让你的程序可以使用照相机拍照,如果已经有了实现这种功能的程序并且你你的程序能使用它(有权限),那么你就没有再要再写一个新的Activity来实现这个功能。你的程序不需要包含或者链接这个拍照程序。相反,你只需要在你的程序中打开这个拍照程序中的实现拍照功能的Activity。当拍完之后,拍好的照片甚至会自动返回给你的程序。者对于用户来说,就好像是想拍照功能的程序就是你的这个程序的一部分一样。 当系统启动一个组件之后,如果这个组件所在的程序之前没有运行的话,系统会自动开始这个程序的进程,并初始化这个组件所需要的相关类。比如,你的程序开启了一个拍照功能程序的Activity,这时系统会启动这个Activity所在的程序,所以这个Activity运行在拍照功能的程序当中,而不是在你的程序中。所以,不像其他操作系统的中的程序一样,Android程序没有一个单独的入口点(比如没有我们常见的main()函数)。 因为系统中的程序运行在自己的独立进程中,并且程序中的文件都有自己的限制其他程序访问的权限,所以,你的程序不能直接激活其他程序中的组件。但是Android系统就可以。具体是这样的实现的,为了激活(activate)其他程序中的组件,你必须向系统发送一个消息来详细说明你要启动其他组件的意图,这样系统才会为你激活这个组件。 激活组件(Activating Components) 四大组件中的三个组件activities、services和broadcast receiver是由一种叫intent的异步消息来激活的。这些intents在运行时(runtime)将这些属于你的程序或不同程序的单独的组件绑定在一起(bind),你可以把这些intents看作是需要其他组件的action的messengers。 一个intent就是一个Intent对象,这个intent定义了一种可以激活(activate)某个特定组件或者某种特定类型的组件,这两种情况分别对应两种intent的定义方式或者显示的或者隐式的。 对于activities和services,一个intent定义了要执行的操作(action)(比如,要“view”或者“send”什么)和要操作的数据的URI。比如,一个intent可能会为一个activity传递一个请求来展示一张图片或者打开一个网页。有时,你可以启动一个activity来得到返回的结果,在这个例子中这个activity的返回的结果也是一个Intent(比如,你可以发送一个intent让用户选择一个personal contact并返回给你这个返回的intent就包含了一个指向用户选择的联系人的URI)。(关于activity和service的启动方式,下面将介绍。) 对于广播接收者来说,intent只是简单的定义了要广播的内容(比如,一个用以表明电池电量很低的广播仅包含了一个表明电池电量很低的字符串)。 最后一种组件类型content provider并不是由intent来激活的(activate)。而是由接收到ContentResolver的请求时激活的。 它们都各自有自己的方法来激活相应的组件:你可以通过传递一个Intent给startActivity()或startActivityForResult()启动一个activity(或者给他一些新的要做的内容)。使用startActivityForResult()你将得到一个返回结果。你可以通过传递一个Intent给startService()来start一个service(或者给一个正在运行的service一些新的指令(instructions))。或者你可以通过把一个Intent传递给bindService()来绑定一个service。你可以通过传递一个Intent给诸如sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()等方法来初始化一个广播。你可以通过调用ContentResolver的query()方法来执行一次content provider的查询操作。更多的关于intent的内容,可以参看文档中的Intents and Intent Filters。更多的关于激活特定组件的内容可以参看文档中的:Activities、Services、BroadcastReceiver、Content Providers。组件声明 Manifest文件的首要任务就是通知系统关于程序中要使用的组件。比如,一个manifest文件可以用如下的方式来声明一个activity:java view plaincopy1. 2. 3. 4. 6. 7. . 8. 9. 在元素中,android:icon属性用于指定一个用于标示该程序的icon。 在元素中,android:name属性用于确定这个扩展自Activity的子类的全路径名,android:label属性用于标示这个activity的对于用户可见的label。 你必须要用以下方式来声明你的程序组件:1、activities:标签2、services:标签3、broadcast receiver:标签4、content providers:标签 如果程序中用到activities、services和content providers,你没有在manifest文件中声明,那么这些组件将不会被系统知道,结果就是你的程序不能运行。然而,broadcast receiver既可以在manifest文件中声明也可以在代码中动态创建(BroadcastReceiver),并通过调用registerReceiver()在系统中注册。 更多关于怎样为你的程序构建manifest文件,请参看文档The AndroidManifes.xml文件。声明组件的能力 正如在上面Activating Components中讨论的那样,你可以使用一个Intent来启动activities、services和broadcast receiver。你可以通过在intent中注明目标组件的名字(使用的是组件的类名)来显示的启动组件。然而,intents真正强大的地方在与关于intent的actions的概念。通过intent的actions,你可以简单的描述你要执行的操作的类型(并且可以有选择的描述你要处理的数据),可以允许系统在device中找到这个组件并启动它。如果有多个组件可以执行intent中描述的action,这时用户就可以选择一个来执行。 系统可以识别能对某intent做出反应的方式是通过将接收到的intent和设备中其他程序的manifest文件的intent filters进行比较实现的。 当你在程序的manifest文件中声明一个组件之后,你可以有选择包含intent filters,这些intent filters表明了组件对接收自其他程序的intent做出反应的能力(capabilities)。你可以通过添加一个元素作为元素的子组件的声明来为你的程序声明一个intent filter。 比如,在一个邮件程序中的一个activity可以编写新的邮件,这样的话你就需要在manifest文件中来声明一个intent filter来对“发送”intent响应(为了发送邮件)。这样,在你的程序中,一个activity就可以创建一个发送intent(ACTION_SEND),这样当你调用startaActivity()时,系统就会匹配邮件程序中的发送activity并启动它。 更多关于创建intent filters的内容,可以参看Intents and Intent Filter文档。声明运行程序所需的条件 Andorid系统可以支持很多不同的设备,并且这些设备的性能特征并不相同。为了防止你的程序被安装在不能正常运行你的程序的较低android系统版本上,通过在manifest文件中声明你的程序支持的设备和软件,便变得尤其重要起来。大多数的这些声明仅是一些信息,而系统并不会读取它们,但是其他的服务比如Android Market却会阅读这些声明来帮助通过通过自己的设备搜索软件的用户过滤软件。 比如,你的程序需要照相机,并且使用的Android2.1的APIs,那么你就必须在你的manifest文件中声明这些需要。这样的话,在Android Market上,没有照相机或者Android系统版本低于2.1将不能安装你的程序。 然而,如果你的程序不需要照相机,你仍可以声明你需要照相机。这种情况下,你的程序必须在运行时做一下检查,来检查这个设备是否含有照相机,如果没有照相机可用,则系统将会使使用照相机的相关程序不能用。 是一些你在设计和开发你的程序时,必须要考虑的关于设备的一些重要方面:屏幕大小和分辨率为了根据屏幕的类型进行分类,Android定义了两个特征:屏幕大小和分辨率。 屏幕尺寸有:小,中,大,超大; 屏幕分辨率类型:低分辨率,中分辨率,高分辨率,超高分辨率; 默认情况下,你的程序可以兼容所有的屏幕尺寸和分辨率,因为Android系统对你的程序的UI布局和image资源做了适当的调整。输入方式: 很多设备有不同类型的输入方式,比如键盘、轨迹球、五类的导航。如果你的程序需要某特定形式的输入方式,则你必须在manifes文件中使用标签来声明。不过这种情况是比较少的。设备配置: 有许多硬件或软件并不全在Android系统的设备上,比如,一个照相机、光线传感器、某个版本的 OpenGL,或者屏幕的保真度(fidelity)。你在任何条件下都不能假定Android设备具备某种特性(feature)(当然得除掉Android标准库的情况),所以如果你的程序使用了某feature,则你必须使用标签来声明。 平台版本不同的Android平台设备通常运行不同版本的Android,比如 Android 1.6或者Android 2.3。每个后续版本通常包含之前版本所不支持的新增API。为了表明哪组APIS可用, 每个平台版本对应一个API Level(例如, Android 1.0 对应于API Level 1 ,Android 2.3 对应于API Level 9)。如果你使用任何在 1.0 版之后平台新增的API,你应该使用元素声明最低API Level 是包含这些API的。 为你的应用程序声明这些要求是至关重要,因为,当你在 Android Market上发布你的应用程序时,Market使用这些声明来过滤该应用程序是否对于每台设备可用。这样,你的应用程序仅对能够满足你的应用程序要求的设备可用。应用程序资源 一个应用程序不仅仅由代码组成它需要区别于源代码的资源,比如图片,音频文件,以及任何与应用程序视觉呈现相关联的内容。例如,你应该使用XML文件定义动画,菜单,风格,颜色,以及activity用户界面的布局。使用应用程序资源文件,可以更容易地更新你的应用程序的特性而无需修改代码,并且通过提供多套可替换资源文件使您能够针对各种设备配置优化你的应用程序(比如不同语言或屏幕大小)。 对于你的安卓工程里面包含的每一项资源,SDK构建工具定义一个唯一的正整数ID标识符,你可以使用该标识符从你的应用程序代码中或者从XML文件中定义的其他资源中特指该资源。例如,如果你的应用程序中包含一个名为logo.png图片文件(保存在res/drawable/文件夹里),SDK工具会生成一个资源ID命名为R.drawable.logo,你可以使用该ID特指这张图片并插入你的用户界面中。 将资源提供工作同你的源代码分隔开来最重要的原因之一是能够使您为不同的设备配置提供可替换的资源文件。例如,在XML中定义UI字符串,你可以将这些字符串翻译成其他语言并保存在特定的文件夹中。然后,基于语言修饰词,你添加资源文件夹名称 (比如res/values-fr/应于法语字符串) 以及用户语言设置,Android 系统会给你的UI提供适当的语言字符串。 对于可替代资源,Android 支持许多不同的修饰符。修饰符是包含在你的资源文件夹名称中的一个短字符串,以便界定哪些设备配置可使用这些资源。另一个例子,对于不同的设备屏幕和大小,你应当为你的activities创建不同的布局。例如,当设备屏幕是纵向的 (高),你可能希望一个按钮垂直排列的布局,但当屏幕是横向的(宽),按钮应当水平排列。为了根据方向调整布局,你可以定义两个不同的布局文件并给每个布局文件夹提供适当的修饰符。这样,系统会根据特定的设备方向自动为其提供适当的布局。第2章开始入手本章内容1.如何安装Android SDK、创建开发环境和试调项目2.理解移动设计中的一些注意事项3.针对速度和效率进行优化的重要性4.针对小屏幕设备及移动数据连接进行优化的重要性5.使用Android虚拟设备、模拟器和其他开发人员工具 只要拥有一份Android SDK的副本和一个Java开发包,你就可以开始开发自己的Android 应用程序了。除非你是一个自甘受苦的受虐狂,否则就需要一个Java IDE来让开发过程变得容易一些Eclipse尤其是个不错的选择。 Windows、Mac和Linux等操作系统下都有各自可用的SDK、JDK和Eclipse版本,所以你可以在任何喜欢的操作系统下对Android进行探索。SDK工具和模拟器在三张OS环境下都可以正常使用,因为Android应用程序是运行在一个Dalvik虚拟机上的,所以在任何特定的操作系统下开发Android应用程序都没有明显优势。Android代码使用Java编写的语法,其Android核心库包括最核心Java api的功能。在您可以运行您的项目之前,您必须将其转化为Dalvik字节码。因此,你熟悉的Java语法而VM上运行您的应用程序获得的优势为移动设备进行了优化。Android SDK起动包包含SDK平台工具,包括SDK管理器,需要下载并安装SDK包的其余部分。Android SDK Manager 用;来下载Android 框架SDK库、可选的曾件(包括Google API和支持包)、完整的文档以及优秀的示例应用程序。他还包含了可以帮助你编写和调试应用程序的工具,如运行项目的Android模拟器和帮助调试的Dalvik调试监控服务(Dalvik Dedug Monitoring Service,DDMS).学完这一章后,你应该懂得下载了Android SDK starter package,并打开它安卓了SDK和SDK的附件、平台工具、文档和示例代码。你会设置开发环境,建立你的Hello World应用程序,并且能用Android虚拟机和DDMS运行及调试该程序。如果你有移动开发的经验,那么肯定知道了它们较小的外形因素、有限的电量以及有限的处理能力和内存会给设计带来一些独特的挑战。即使是这方面的新手,也难看出桌面计算机或者Web的一些特征是手机所不具备的。除了硬件上的限制外,用户环境也是设计者需要考虑的东西。移动设备经常会在移动中使用,而且不会被我们注意到,所以应用程序应该运行速度快,反应流畅并且容易使用。几时应用程序是针对让人长时间集中注意力的设备(如平台电脑或者电视)设计的,刚才举例的设计原则对于提供高质量的用户体验也是十分关键的。本章蒋研究一些Android应用程序开发的最佳实践,来帮助你应对移动开发中国的硬件和环境方面的挑战。我们将讨论如何按照与良好的移动设计原则一致的方式使用Android SDK,而不是尝试涉及所有内容。2.1 Android的开发 Android SDK包含编写引人注目的和强大的移动应用程序需要的所有工具和api。与学习其他开发包一样,API的功能和局限是学习Android的最大挑战。 如果你有Java经验的开发,您将找到接手人的技巧,语法,和语法你已经使用会直接转化为Android,尽管一些具体的优化技术似乎是违反直觉的。 如果你没有Java经验的开发,但是用过其他的语言(如C#),那么你应该发现这种转变也很容易。Android的强大功能来自于它的API,而不是来自于Jvaa,所以即使你不熟悉所有的Java特定类,这也不会成为你的劣势。2.1.1 开始前的工作 因为Android应用程序是运行在Dalvik虚拟机上的,所以可以在任何支持所需的开发人员工具的平台上编写这些程序。当前的平台包括: (1)Microsoft Windows XP(或更高版本)(2)Mac OS X 10.5.8或更高版本(仅英特尔芯片)(3)Linux(包括GNU C库2.7或更高版本)首先,你需要下载并安装如下:(1)Android SDK starter package(2)Java Development Kit (JDK) 5或 6你可以在Sun的网站上下载最新的JDK:/javase/downloads/index.jsp 很多时候,还需要安装一个IDE。接下来的小节将介绍如何安装Android SDK,而且使用Eclipse作为Android IDE.1. 下载和安装Android SDK可以免费下载和使用API,而且Google也不会因为你在Google Paly Store发布完成的应用程序而向你收费或要求你提供应用程序的评估结果。如果要在Google Paly Store上发布应用程序,需要一次性地支付很少的费用。如果不打算通过Google Paly Store发布程序,那么连这笔很小的费用也不用支付了。可以从Android开发主页上下载格式你的开发平台的SDK starter packge的最新版本:/sdk/index.html。starter packge被封装在一个ZIP文件中,其中只包含下载Android SDK包其余部分所需要的Android开发工具的最新版本。通过把SDK解压到一个新文件夹中就可以安装到计算机中了(注意它的安装位置,后面还会用到它)。在开始开发之前,必须至少下载一个SDK平台。为此,在Windows中可以运行SDK Manager.exe可执行文件,而Mac OS或Linux中则可以运行sarter packge下载文件的tools子文件夹中的android可执行文件。所出现的屏幕(如图2-1所示)显示了此次可以下载的每个包。其中包括对应平台工具、每个平台版本和一组ertra(例如Android Support Package和收费许可包)的节点。图2-1 展开每个平台版本节点后,可以看到一个列表,其中列出了该版本中所包含的包,包括开发工具、文档和示例代码包。下载时,首先要选中对应于最新的框架SDK和最新版本的工具。兼容支持包、文档和示例代码的复选框。为使用Google API(其中包括地图API),还需要在支持的平台版本下选中Google APIs by Google包。单机Install Package按钮时,所选的包蒋下载到SDK安装文件夹。所得结果就是一些框架API库、文档和几个示例应用程序。2.下载和安装SDK更新当所有新的Android框架SDK、开发工具、示例代码、文档、兼容库和第三方曾件可用时,可以使用Android SDK Manager下载和安装这些更新。在以后下载的所有包和更新都将下载到相同的SDK位置。3.使用Eclipse 本书提供的示例和对每个步骤的说明都是面向使用Eclipse和Android开发工具(Android Developer Tools ,ADT)插件的开发人员的。不过这两者都不是必需的可以使用任何喜欢的文本编辑器或者Java IDE,并且使用SDK中的开发工具来编译、测试和调试代码段和示例程序。使用具有DT插件的Eclipse进行Android开发是一种备受推荐的方法,而这种方法确实具有一些重要的优势,这些主要是通过IDE中紧密集成了许多Android构建和调试工具实现的。Eclipse是一个开源的IDE(Integrated Development Environment,集成开发环境),在Java开发中非常流行。从Eclipse组织的主页上可以下载到支持Android的每个开发平台(Windows、Mac OS、Linux)的Eclipse安装包: /downloads。在选择需要下载的Eclipse的时候,有很多可选的选项,其中Eclipse3.5(Galileo)及更高版本要求使用ADT插件。下面是本书中使用的Android配置:(1)Eclipse 3.7 (Indigo) (Eclipse Classic 下载)(2)Eclipse Java Development Tools (JDT) 插件(3)Web Standard Tools (WST)大部分Eclipse IDE包中都包含WST和JDT插件。安装Eclipse时,需要把下载好的压缩包解压到一个新文件夹中。当这一步完成之后,运行eclipse可执行文件。当它第一次启动时,为Android开发项目创建一个新的工作空间。4.使用Eclipse的ADT插件 Eclipse的ADT插件通过把包括模拟器、.clays-to-.dcx转换器等开发工具直接集成到IDE中来简化Android开发。虽然并非必须使用ADT插件,但是它确实可以让应用程序的开发、侧试和调试过程变得更加快速和简单。 ADT捅件把以下功能集成到了Eclipse中: (1)Android项目向导,它简化了创建新项目的过程,而且包含了一个基本的应用程序模板。 (2)基于窗体的manifest文件、布局和资源编辑器可以帮助创建、编辑和验证XML资源。 (3)自动地构建Android项目,转换为Android可执行文科.dex),打包为包文料(.apk),并把包安装到Dalvik虚拟机(可运行在模拟器上或者实际设备中)上。 (4)Android虚拟设备管理器允许为运于到特定版本的Android OS、并且具有设定的硬件和内存限制的模拟器创建和管理驻留它们的虚拟设备。 (5)Android模拟器,包括控制模拟器外观、网络连接设置以及模拟来电和SMS消息的能力。 (6)Dalvik调试监控服务(Dalvik Debug Monitoring Service.,DDMS),包括:端口转发(portforwarding).栈、堆和线程查看,进程细节和屏幕捕捉功能。 (7)访问设备或者模拟器的文件系统,允许浏览目录树和转移文件。 (8)运行时调试.这样就可以设置断点和查看调用栈。 (9)所有的Android/Dalvik日志和控制台输出。图2-2显示的是安装了ADT插件的Eclipse中的DDMS视图。图2-2安装ADT插件按服以下步骤安装ADT插件:(1)从Eclipse中选择HelpInstall New Software选项。(2)在弹出的Available Software对话框中.单击Add按钮。(3)在下一个对话框的Name字段中,输入便于记忆的名称(例如Android Developer Tools),并在Locati文本框中输入下面的地址:/android/eclipse/. (4)点击OK按钮后,Eclipse将会搜索ADT抽件。搜索完成以后,它将显示可用的插件,如图2-3所示。单击Developer Tools根节点旁边的复选框进行选择.然后单击Next按钮。 (5)现在Eclipse会下载该插件.当下载完成后,会显示一个开发工具列表供查看。单击Next按钮。 (6)阅读许可协议的条款之后选择Accept,然后单击Next和Finish按钮。由于ADT插件没有签名,所以在安装过程继续之前会有提示。 (7)当安装完成之后,必须重新启动Eclipse并且更新ADT的参数.重新启动后选择Window Preferences(在Mac OS下是选择EclipseIPreferences)。 (8)然后从左边的面板中选择Android。 (9)单击Browse按钮,找到你安装Android SDK的文件夹,然后单击Apply按钮。列表将会得到更新,并显示每个可用的107;4目标,如图2-4所示。单击OK按钮完成SDK的安装过程。图2-4更新ADT插件大部分情况下,要更新ADT插件,只需要:(1)选择HelpCheck for Updates选项。(2)如果存在任何可用的ADT更新,则它们就会被显示出来。选定它们,然后选择Install即可。5.使用支持包 支持库包(原来叫做兼容库)是一个静态库的集合,把它们包含到项目中以后.就可以使用框架不包含的便捷API(例如view Pagcr),或者并不是每个平台都可用、但是非常方便的API(例如Fragmcn)。支持包允许在运行Android 1.6(API level 4)或更高版本的任何设备上使用Android近期版本中引入的API功能。这样,开发人员就可以提供分一致的用户体验,并且由于不必支持多个平台版本,他们的开发过程也可以简化。为在项目中包含支持库,需要执行以下步骤:(1)在项目的根目录下添加一个新的/libs文件夹。(2)从Android SDK安装目录的/extras/android/support/文件夹中复制支持库JAR文件。注意Support文件夹中包含多个子文件夹,每个子文件夹代表该库支持的最低平台版本。只需要找到所代表的版本小于或等于你想要支持的最低平台版本的子文件夹,并使用其中包含的对应JAR文件即可。例如,如果你想支持从Android 1.6(API level 4)往上的所有平台版木,就应该复制v4/android-support-v4 jar。(3)把该文件复制到项目的/libs文件夹后,在Package Explorer中右击,并选择Build PathAdd to Build Path,把该文件添加到项目的构建路径中。2.1.2 创建第一个Android应用程序 在下载了SDK并安装了Eclipse和插件之后,现在可以开始为Android编写程序了。首先,创建一个新的项目,并设置Eclipse的运行和调试配置。具体步骤如以下小节所示。1. 创建一个新的Android项目 可以使用Android New Project Wizard创建一个新的Android项目,操作步骤如下: (1)选择FileNewProject选项。 (2)从Android文件夹中选择Android Project应用类型,然后单击Next按钮。 (3)在出现的向导中输入新项目的详细情况。在向导的第一页(如图2-5所示)中,Project Name是项目文件的名称。在这里还可以选择项目的保存位置。(4)向导的下一个页面(如图2-6所示)允许选择应用程序的构建目标。构建目标指的是开发应用程序时计划使用的Android框架SDK的版本。除了包含在每个平台版本中的开源的Android SDK库,Google还提供了一套专有的API,以允许开发人员使用额外的库(例如Google地图)。如果想使用这些Google专有的API,必须选择对应于目标平台的Google APIs包。图2-5图2-6(5)向导的最后一个页面(如图2-7所示)可以指定应用程序的属性。Application Name是应用程序的名称:Package Name指定了它的Java包:Create Activity用于指定初始Activity类的名称。Minimum SDK用于指定运行应用程所需的最低SDK版本。图2-7(6)输入这终内容之后,单击Finish按钮。如果选中了Create Activity,那么ADT插件将创建一个新项目,该项目包含一个扩展了Activity的类。默认模板并不完全为空,而是实现了Hello World程序。在修改项目以前,可以利用这个机会为运行和试调应用程序配置启动选项。2.创建一个Android虚拟设备 Android虚拟设备(AVD)用于模拟不同Android设备的硬件和软件配置,使开发人员能够在各种硬件平台上测试应用程序。 Android SDK中不包含预建的AVD,所以如果没有实际的设备,你必须创建至少一个AVD,然后才运行和调试应用程序。 (1)选择WindowAVD Manager(或者选择Eclipse工具栏上的AVD Manager图标)。 (2)选择New按钮。 显示的Create new Android Virtual Device(AVD)对话框允许配置AVD的名称、Android构建目标、SD卡的容量和设备的皮肤。 (3)创建一个针对Android 4.0.3的新AVD,命名为My-AVD。将该AVD设为包含一个16MB的SD卡,并使用Galaxy Nexus皮肤,如图2-8所示。(4)单击Create AVD,新的AVD就会创建完成并等待使用。图2-82. 创建一个启动配置 启动配置允许指定运行和调试应用程序的运行时选项。通过使用启动配置,可以指定: (1)要启动的项目和Activity (2)部署目标(虚拟设备或实际设备) (3)模拟器的启动参数 (4)输入/输出设置(包括默认的控制台) 可以为运行和调试应用程序指定不同的启动配置。下面的步骤详细说明了如何为Android应用程序创建一个启动配置: (1)选择Run Configurations(或者选择Debug Configurations)选项。 (2)在项目类型列表的Android Application节点下选择应用程序,或者右击Android Application并选择New命令。 (3)输入配置的名称。可为每一个项目创建多个配置,因此需要创建一个其有描述性的名称,从而可以帮助识别这个特定的设置。 (4)选择启动选项。在第一个(Android)选项卡中可以选择当运行(或者调试)应用程序的时候希望启动的项目和Activity。图2-9显示了之前创建的项目的设置。(5)可以使用图2-10中所示的Target选项卡来选择默认启动的虚拟设备,也可以选择Manual,在每次运行应用程序时选中一个实际设备或一个虚拟设备。此外,还可以配置模拟器的网络连接设置,以及选择是否删除用户数据和是否禁用开机动画。图2-9图2-10(6)最后在Common选项卡中设置其他所有属性。(7)单击Apply按钮,以便保存启动配置。4.运行和调试Android应用程序在前面的内容中,已经创建了第一个项目,并且为它创建了运行和调试配置。在对Hello World项目进行修改之前,可以通过运行和调试该项目来测试安装和项目配置情况。从Run菜单中选择Run或者Debug选项来启动最近选择的配置,或者通过选择Run Configurations.或者Debug Configurations选项来选择一个特定配置。如果正在使用ADT插件,那么运行和调试应用程序将完成以下工作:(1) 编译当前项目,并将其转换为 Android可执行文件(.dex)。(2) 把可执行文件和外部资源打包为Android包(.apk)。(3) 启动你选择的虚拟设备(如果你选择了一个AVD,而它还没有运行)。(4) 把应用程序安装到目标设备_L。(5) 启动应用程序。 如果正在进行调试,那么Eclipse调试器就会允许设置断点和调试代码。如果一切进展顺利,那么将会看到一个新的Activity运行在设备或模拟器上,如图2-11所示。图2-115.理解Hello World 我们回头仔细分析第一个Android应用程序。 Activity是应用程序中可见的交互组件的基类,它大致上等同于传统桌面应用程序开发中的窗体。第3章将详细介绍Activity。程序清单2-1显示了一个基于Activity的类的框架代码。注意,它扩展了Activity,重写了onCreate方法。程序清单 2-1: Hello Worldpackage com.paad.helloworld;import android.app.Activity;import android.os.Bundle;public class MyActivity extends Activity /* Called when the Activity is first created. */Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);在Android中,可视化组件称为视图(View),它们类似于传统桌面应用程序开发中的控件。通过向导创建的Hello World模板中,因为setContentView可以通过扩展一个布局资源来对用户界面进行布局,所以我们重写onCreate方法,用它来调用setContentVtew,参见下面高亮显示的代码:Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);Android项目的资源存储在项目层次结构的res文件夹中,它包含了layout、 values和一系列drawable子文件夹。ADT插件会对这些资源进行解释,并通过R变量来提供对它们的设计时访问。有关R变量的相关内容会在第3章讲述。程序清单2-2显示了定义在由Android项目模板创建、并存储在项目的resflayout文件夹中的main.xml文件中的UI布局。程序清单2-2:Hello World layout resource使用XML定义UI井对其进行扩展是实现用户界面(UI)的首选方法,因为这样做可以把应用程序逻辑和UI设计分离开来。为了在代码中访问UI元素,可以在XML定义中向它们添加标识符属性。之后就可以使用f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区的物业管理及服务创新
- 工业排放控制技术分析
- 工业污染治理的新技术与成果
- 工业建筑设计及其安全防护措施
- 工业废水零排放技术研究与应用推广
- 工业污染防治与环保技术探讨
- 工业污染的防治与绿色生产
- 工业机器人编程与调试技术研究
- 工业设计中的智能产品创新
- 工业自动化在白水泥生产中的应用研究
- 2025年江苏高考真题化学试题(解析版)
- 2024协警辅警考试公安基础知识考试速记辅导资料
- 《平行四边形的面积》说课课件
- 2025年九年级语文中考最后一练口语交际(全国版)(含解析)
- 一例高血压护理个案
- GB/T 18913-2025船舶与海洋技术航海气象图传真接收机
- 2025-2030中国风力发电机机舱行业市场现状供需分析及投资评估规划分析研究报告
- 2025年广东省深圳市龙岗区中考英语二模试卷
- 2024年注册会计师考试《会计》真题及答案解析
- 南通市启东市医疗卫生单位招聘事业编制人员考试真题2024
- 2024-2025学年度人教版二年级数学下学期期末试卷(含答案)
评论
0/150
提交评论