Android 程序员指南


AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1111 版权©2008 McGraw-Hill 公司 AndroidAndroidAndroidAndroid:程序员指南:程序员指南:程序员指南:程序员指南 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2222 版权©2008 McGraw-Hill 公司 程序员指南 原著:J.F. DiMarzio 翻译: 张劲锋 zyf19870302@126.com 仅供学习使用 版权归属原著作者 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3333 版权©2008 McGraw-Hill 公司 New York Chicago San Francisco Lisbon London Madrid Mexico City Milan New Delhi San Juan Seoul Singapore Sydney Toronto 版权©2008 McGraw-Hill 公司.保留所有权. U.S 出品.除被 U.S 1976 版权法令许可之外,此 出版物的任何部分被禁止用任何形式或者电子书店以及复印组织,没有被原著授予发行权的 出版社以任何形式复制、散布、发行。 0-07-129989-4 本电子书的资料也标注有 0-07-129989-4 的版本标题. 所有商标归它们各自的所有者。而不是在任何交易发生时放一个交易名称的商标符号,我们 只是以编辑形式使用了名称,为了商标所有者的利益,没有对商标的侵害意图。在本书出现 该称号的地方,它们已经被印刷成首标注。 McGraw-Hill 电子书能以特殊数量的折扣作为奖品和增进促销或者公司培训项目来获得、使 用。要获得更多信息,请联系 George Hoare, Special Sales,通过 george_hoare@mcgraw- hill.Com 或者(212)904-4069. TERMS OF USE This is a copyrighted work and The McGraw-Hill Companies, Inc. (“McGraw-Hill”) and its licensors reserve all rights in and to the work. Use of this work is subject to these terms. Except as permitted under the Copyright Act of 1976 and the right to store and retrieve one copy of the work, you may not decompile, disassemble, reverse engineer, reproduce, modify, create derivative works based upon, transmit, distribute ,disseminate, sell, publish or sublicense the work or any part of it without McGraw-Hill’s prior consent. You may use the work for your own noncommercial and personal use; any other use of the work is strictly prohibited. Your right to use the work may be terminated if you fail to comply with these terms. THE WORK IS PROVIDED“AS IS.” McGRAW-HILL AND ITS LICENSORS MAKE NO GUARANTEES OR WARRANTIES ASTO THE ACCURACY, ADEQUACY OR COMPLETENESS OFOR RESULTS TOBE OBTAINED FROM USING THE WORK, INCLUDING ANY INFORMATION THAT CAN BE ACCESSED THROUGH THE WORK VIA HYPERLINK OR OTHERWISE, AND EXPRESSLY DISCLAIM ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. McGraw-Hill and its licensors do not warrant or guarantee that the functions contained in AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4444 版权©2008 McGraw-Hill 公司 the work will meet your requirements or that its operation will be uninterrupted or error free. Neither McGraw-Hill nor its licensors shall be liable to you or anyone else for any inaccuracy, error or omission, regardless of cause, in the work or for any damages resulting therefrom. McGraw-Hill has no responsibility for the content of any information accessed through the work. Under no circumstances shall McGraw-Hill and/or its licensors be liable for any indirect, incidental, special, punitive, consequential or similar damages that result from the use of or inability to use the work, even if any of them has been advised of the possibility of such damages. This limitation of liability shall apply to any claim or cause whatsoever whether such claim or cause arises in contract, tort or otherwise. DOI: 10.1036/0071599886 本书贡献于 Suzannah, Christian, and Sophia 关于作者:关于作者:关于作者:关于作者: J.F.DiMarzio J.F.DiMarzio J.F.DiMarzio J.F.DiMarzio 是一个在网络和程序开发领域拥有超过 15 年经验的程序开发员并且是 7本关于计算机科学书籍的 作者。他已经成为 IT 界顾问和发展的领导人物。他住在 Central Florida. 关于技术编辑:关于技术编辑:关于技术编辑:关于技术编辑: GilbertGilbertGilbertGilbert L.PoloL.PoloL.PoloL.Polo 是一个在电信,财政,最近最多是教育 机构工作上拥有超过 20 年经验的程序开发员。他已经用 多种语言(包括 C,C++,Java 和C#)项目编程。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5555 版权©2008 McGraw-Hill 公司 目录浏览目录浏览目录浏览目录浏览 1.1.1.1.什么是 什么是 什么是 什么是 AndroidAndroidAndroidAndroid????………………………………………………………………………………………………………………………………………………………………………………………………………… 1111 2.2.2.2.下载和安装 下载和安装 下载和安装 下载和安装 EclipseEclipseEclipseEclipse……………………………………………………………………………………………………………………………………………………………………………………………… 9999 3.3.3.3.下载和安装 下载和安装 下载和安装 下载和安装 AndroidAndroidAndroidAndroid SDKSDKSDKSDK………………………………………………………………………………………………………………………………………………………………………… 21212121 4.4.4.4.浏览 浏览 浏览 浏览 AndroidAndroidAndroidAndroid SDKSDKSDKSDK………………………………………………………………………………………………………………………………………………………………………………………………………… 35353535 5.5.5.5.应用程序:应用程序:应用程序:应用程序:HelloHelloHelloHello WorldWorldWorldWorld!!!!……………………………………………………………………………………………………………………………………………………………… 53535353 6.6.6.6.使用命令行工具和 使用命令行工具和 使用命令行工具和 使用命令行工具和 AndroidAndroidAndroidAndroid 模拟器模拟器模拟器模拟器…………………………………………………………………………………………………………………… 83838383 7.7.7.7.使用 使用 使用 使用 Intents Intents Intents Intents 和和和和PhonePhonePhonePhone DialerDialerDialerDialer………………………………………………………………………………………………………………………………………… 117117117117 8.8.8.8.ListsListsListsLists,,,,MenusMenusMenusMenus和其他 和其他 和其他 和其他 ViewViewViewView……………………………………………………………………………………………………………………………………………………………… 149149149149 9.9.9.9.使用 使用 使用 使用 CellCellCellCell Phone Phone Phone Phone 的的的的GPSGPSGPSGPS功能功能功能功能…………………………………………………………………………………………………………………………………………………… 203203203203 10.10.10.10.和和和和GTalkGTalkGTalkGTalk一起使用一起使用一起使用一起使用GoogleGoogleGoogleGoogle APIAPIAPIAPI………………………………………………………………………………………………………………………………………… 232323239999 11.11.11.11.应用程序:应用程序:应用程序:应用程序:FindFindFindFind aaaa FriendFriendFriendFriend…………………………………………………………………………………………………………………………………………………… 257257257257 12.12.12.12.AndroidAndroidAndroidAndroid SDKSDKSDKSDK 工具参考工具参考工具参考工具参考……………………………………………………………………………………………………………………………………………………………… 307307307307 索引索引索引索引…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………313313313313 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 6666 版权©2008 McGraw-Hill 公司 目录 目录 目录 目录 致谢………………………………………………………………… xiii 介绍………………………………………………………………… Xv 1111....什么是 什么是 什么是 什么是 AndroidAndroidAndroidAndroid????……………………………………………………………………………………………………………………………………………………………………………………………… 1111 嵌入式设备开发项目简要历程………………………………… 2 开放手机联盟和 Android……………………………………… 5 Android 介绍…………………………………………………… 6 2222....下载和安装 下载和安装 下载和安装 下载和安装 EclipseEclipseEclipseEclipse……………………………………………………………………………………………………………………………………………………………………………………………… 9999 为什么使用 Eclipse…………………………………………… 11 下载和安装 JRE………………………………………………… 12 下载和安装 Eclipse…………………………………………… 18 3333....下载和安装 下载和安装 下载和安装 下载和安装 AndroidAndroidAndroidAndroid SDKSDKSDKSDK……………………………………………………………………………………………………………………………………………………………… 21212121 下载 Android SDK……………………………………………… 24 下载和安装 Android Eclipse 插件…………………………… 30 配置 Android Eclipse 插件…………………………………… 18 4444....浏览 浏览 浏览 浏览 AndroidAndroidAndroidAndroid SDKSDKSDKSDK……………………………………………………………………………………………………………………………………………………………………………………………… 35353535 Android SDK 中有什么…………………………………………………… 37 Android 文档……………………………………………………………… 38 尝试:运行 APIDemo 例子程序…………………………………………… 41 Android 工具……………………………………………………………… 45 APIS………………………………………………………………………… 48 应用程序生命周期………………………………………………………… 49 标准 ASP 应用程序生命周期……………………………………………… 49 Android 应用程序生命周期……………………………………………… 50 5555....应用程序:应用程序:应用程序:应用程序:HelloHelloHelloHello WorldWorldWorldWorld!!!!……………………………………………………………………………………………………………………………………………………………… 53535353 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 7777 版权©2008 McGraw-Hill 公司 在Eclipse 中创建你的第一个 Android 项目…………………………… 55 细述 Android-生成文件…………………………………………………… 61 AndroidManifest.xml……………………………………………………… 62 参考 运行库………………………………………………………………… 62 说明………………………………………………………………………… 63 再次 Hello world!………………………………………………………… 69 使用 Image Hello world!……………………………………………… 72 Hello World! Code-Based UI……………………………………………… 75 Hello World! XML-Based UI……………………………………………… 78 尝试:使用TextView 和ImageView………………………………………… 81 6666....使用命令行工具和 使用命令行工具和 使用命令行工具和 使用命令行工具和 AndroidAndroidAndroidAndroid 模拟器模拟器模拟器模拟器…………………………………………………………………………………………………………………… 83838383 使用 Windows CLI 创建一个 Shell Activity……………………………… 84 运行 ActivityCreator.Bat………………………………………………… 85 工程结构……………………………………………………………………… 88 在Windows CLI 中创建 HelloWorld!Activity…………………………… 95 编辑工程文件………………………………………………………………… 95 添加 JAVA_HOME 变量………………………………………………………… 96 编译和安装应用程序………………………………………………………… 97 HelloWorld! 在Linux 中………………………………………………… 109 配置 PATH 声明……………………………………………………………… 109 尝试:在 CLI 下创建 Image-Based Helloworld!……………………… 115 7777....使用使用使用使用IntentsIntentsIntentsIntents和和和和PhonePhonePhonePhone DialerDialerDialerDialer………………………………………………………………………………………………………………………………………… 111111117777 什么是 Intents…………………………………………………………… 119 使用 Dialer……………………………………………………………… 124 从你的 Activity 调用 Call……………………………………………… 128 为你的 Activity 添加 Intent………………………………………………129 编辑 Activity 许可………………………………………………………… 131 修改 AndroidPhoneDialer………………………………………………… 136 添加 Button………………………………………………………………… 136 实现一个 EditTextView…………………………………………………… 141 尝试:修改 AndroidPhoneDialer 项目…………………………………… 145 8888....ListsListsListsLists,,,,MenusMenusMenusMenus和其他 和其他 和其他 和其他 ViewViewViewView……………………………………………………………………………………………………………………………………………………………… 141414149999 构造 Activities…………………………………………………………… 151 Intent 代码 .xml 文件…………………………………………………… 152 Intent 代码 .java 文件……………………………………………………154 修改 AndroidManifest.xml…………………………………………………155 使用 Menu…………………………………………………………………… 157 为AutoComplete 创建 Activity………………………………………… 163 Button……………………………………………………………………… 173 CheckBox…………………………………………………………………… 178 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8888 版权©2008 McGraw-Hill 公司 EditText…………………………………………………………………… 183 RadioGroup………………………………………………………………… 189 Spinner……………………………………………………………………… 195 尝试:修改更多 View 属性………………………………………………… 202 9999....使用使用使用使用CellCellCellCell PhonePhonePhonePhone的的的的GPSGPSGPSGPS功能功能功能功能…………………………………………………………………………………………………………………………………………………… 202020203333 使用 Android Location-Based API…………………………………………204 创建一个 kml 文件……………………………………………………………205 track 文件是什么…………………………………………………………… 208 在Windows 下得到 namea 文件………………………………………………208 在Linux 下得到 namea 文件…………………………………………………210 阅读 GPS Android Location-Based API………………………………… 212 创建 AndroidLBS Activity……………………………………………… 212 向Google Maps 传递坐标………………………………………………… 222 添加图像放大控制………………………………………………………… 226 尝试:联系 MapView 的标准和 Statellite Views……………………… 232 10101010....和和和和GTalk GTalk GTalk GTalk 一起使用 一起使用 一起使用 一起使用 GoogleGoogleGoogleGoogle APIAPIAPIAPI……………………………………………………………………………………………………………………………… 239239239239 为GTalk 配置 Android 模拟器………………………………………………241 在Android 中实现 GTalk…………………………………………………… 244 在GoogleAPI.xml 中创建 Activity 的Layout ………………………… 245 向GoogleAPI.Java 中添加包……………………………………………… 247 实现 View.OnClickListener……………………………………………… 248 编译和运行 GoogleAPI……………………………………………………… 252 尝试:给你的 GoogleAPI Activity 添加一个 Setting Feature……… 255 11111111....应用程序:应用程序:应用程序:应用程序:FindFindFindFind aaaa FriendFriendFriendFriend…………………………………………………………………………………………………………………………………………………… 257257257257 创建一个 SQLite 数据库………………………………………………………259 创佳一个 Custom Content Provider……………………………………… 263 编辑 strings.xml…………………………………………………………… 263 创佳你的 Content Provider…………………………………………………265 创建 FindAFriend Activity…………………………………………………276 编辑 AndroidManifest.xml………………………………………………… 276 创建 NameEditor Activity………………………………………………… 278 创建 LocationEditor Activity…………………………………………… 283 创建 FriendsMap Activity………………………………………………… 293 创建 FindAFriend Activity……………………………………………… 299 运行 FindAFriend Activity……………………………………………… 302 尝试:实时本地更新……………………………………………………… 305 12121212....AndroidAndroidAndroidAndroid SDKSDKSDKSDK 工具参考工具参考工具参考工具参考……………………………………………………………………………………………………………………………………………………………… 307307307307 Android 模拟器命令集……………………………………………………… 308 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9999 版权©2008 McGraw-Hill 公司 Android Bebug Bridge 命令集…………………………………………… 310 13131313....索引索引索引索引………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………313313313313 致谢:致谢:致谢:致谢: 我要感谢参与制作这本书的每个人,我的助理,Neil Salkind; Roger, Carly, Janet, Bill,和McGraw-Hill 全 体人员;Gil Polo;和Studio B的每个人。 我也想感谢我的家人,Suzannah, Christian, and Sophia; Brett, Robert,Roger, Zack, Mark, Kurt, Walter, Walter, Walter, Steve, Steve, Steve, 和 Gary—还有我所有在Central Florida的同事,还有我忘记 提到的任何一个人。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 10101010 版权©2008 McGraw-Hill 公司 介绍:介绍:介绍:介绍: 欢迎来到 Android:程序员指南。本书专门为你通向新的、令人兴奋的开源 移动开发世界的最好的第一步做了设计。Android 是最新的移动设备操作系统, 并且这是帮助普通程序员转变为专业无阻的 Android 开发者的第一手书籍的其 中一部。通过本书的课程,会向你介绍使用开源手机联盟的 Android 平台最基本 的移动设备应用程序开发。到了本书的最后,你将能够自信的创建你自己的移动 设备项目。 本书的格式将会以逻辑性的风格带你走遍 Android 应用程序开发。本书开 始通过检查 Android 作为一个平台的构架,看看它是怎么被开发的,它能在什么 上运行,和需要什么样的工具来为 Android 开发项目。在讨论和安装开发工具、 Android SDK 和Eclipse 开发环境(第 2,3,4章节)之后,本书直接跳入设计 和创建 Android 应用程序(第 5章节)。本书包括在现有的 Google 工具(例如: Google Maps(第 9和11 章 节 )、GTalk(第 10 章节))上尝试你自己的应用程序 的教学指导。也包括一个快速参考指导(第 12 章节)。 这本书是一本程序员指南,不是入门指南,意思是,你的却需要拥有一些 编程技术通过本书来获得更过技术。在这些技术中最重要的是基本的 java 编程 知识。Android 应用程序是用 java 语言开发,并且运行在 Linux2.6 内核上。如 果你是一个快速的学习者,你可能明白什么是在一些最基本的目标性经验下进行 开发。第2章节解析怎样下载和安装受偏爱的,综合的开发环境-Eclipse。本书 中所有的代码实例和截屏是用 Eclipse(Europe 版本)和Android Eclipse 插件 提供的。 有任何建议,疑问,或者意见关于本书的任何资源,可以直接联系作者 jfdimarzio@jfdimarzio.comjfdimarzio@jfdimarzio.comjfdimarzio@jfdimarzio.comjfdimarzio@jfdimarzio.com。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 11111111 版权©2008 McGraw-Hill 公司 第一章第一章第一章第一章 什么是 什么是 什么是 什么是 Android?Android?Android?Android? AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 12121212 版权©2008 McGraw-Hill 公司 关键技术关键技术关键技术关键技术&&&&概念概念概念概念 ���� 嵌入式设备编程项目历史嵌入式设备编程项目历史嵌入式设备编程项目历史嵌入式设备编程项目历史 ���� 解释开放手机联盟解释开放手机联盟解释开放手机联盟解释开放手机联盟 ���� 第一次观看 第一次观看 第一次观看 第一次观看 Android Android Android Android 主屏幕主屏幕主屏幕主屏幕 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 能够说,传统的桌面应用程序开发者已经很受宠了。这不是说传统桌面应能够说,传统的桌面应用程序开发者已经很受宠了。这不是说传统桌面应能够说,传统的桌面应用程序开发者已经很受宠了。这不是说传统桌面应能够说,传统的桌面应用程序开发者已经很受宠了。这不是说传统桌面应 用程序开发比其他形式的开发更简单。然而,作为一个传统桌面应用程序开发用程序开发比其他形式的开发更简单。然而,作为一个传统桌面应用程序开发用程序开发比其他形式的开发更简单。然而,作为一个传统桌面应用程序开发用程序开发比其他形式的开发更简单。然而,作为一个传统桌面应用程序开发 者,我们已经有创建所有我们能够想象的任何一种应用程序的能力。我也指包者,我们已经有创建所有我们能够想象的任何一种应用程序的能力。我也指包者,我们已经有创建所有我们能够想象的任何一种应用程序的能力。我也指包者,我们已经有创建所有我们能够想象的任何一种应用程序的能力。我也指包 括我在内,因为我以前就开始桌面项目开发。括我在内,因为我以前就开始桌面项目开发。括我在内,因为我以前就开始桌面项目开发。括我在内,因为我以前就开始桌面项目开发。 一方面,我们已经有能力去和桌面操作系统互动已经使桌面编程开发更易一方面,我们已经有能力去和桌面操作系统互动已经使桌面编程开发更易一方面,我们已经有能力去和桌面操作系统互动已经使桌面编程开发更易一方面,我们已经有能力去和桌面操作系统互动已经使桌面编程开发更易 接受,这样的互动是和任何底层的硬件的。相当自由(或者至少有很小的例外接受,这样的互动是和任何底层的硬件的。相当自由(或者至少有很小的例外接受,这样的互动是和任何底层的硬件的。相当自由(或者至少有很小的例外接受,这样的互动是和任何底层的硬件的。相当自由(或者至少有很小的例外)。)。)。)。 这种自由、独立地编程,已经不再是那些敢于冒险跳进手机开发黑水中的小数这种自由、独立地编程,已经不再是那些敢于冒险跳进手机开发黑水中的小数这种自由、独立地编程,已经不再是那些敢于冒险跳进手机开发黑水中的小数这种自由、独立地编程,已经不再是那些敢于冒险跳进手机开发黑水中的小数 量的开发者能够获得的。量的开发者能够获得的。量的开发者能够获得的。量的开发者能够获得的。 注意:注意:注意:注意: ------------------------------------------------ 在这个讨论中我提及到了两种不同的开发者:传统桌面应用程序开发者,他们在这个讨论中我提及到了两种不同的开发者:传统桌面应用程序开发者,他们在这个讨论中我提及到了两种不同的开发者:传统桌面应用程序开发者,他们在这个讨论中我提及到了两种不同的开发者:传统桌面应用程序开发者,他们 几乎用所有的编程语言来工作,他们的最终产品、应用程序被构建成能运行在几乎用所有的编程语言来工作,他们的最终产品、应用程序被构建成能运行在几乎用所有的编程语言来工作,他们的最终产品、应用程序被构建成能运行在几乎用所有的编程语言来工作,他们的最终产品、应用程序被构建成能运行在 任何一种桌面操作系统上;任何一种桌面操作系统上;任何一种桌面操作系统上;任何一种桌面操作系统上;AndroidAndroidAndroidAndroid开发者(开发者(开发者(开发者(JavaJavaJavaJava开发者),为开发者),为开发者),为开发者),为AndroidAndroidAndroidAndroid平台平台平台平台开开开开 发。这不是有意图说哪一种开发者在某种意义上比另一种更好或者更坏。然而发。这不是有意图说哪一种开发者在某种意义上比另一种更好或者更坏。然而发。这不是有意图说哪一种开发者在某种意义上比另一种更好或者更坏。然而发。这不是有意图说哪一种开发者在某种意义上比另一种更好或者更坏。然而,,,, 这个讨论意图在于:桌面操作系统环境和移动操作系统环境这个讨论意图在于:桌面操作系统环境和移动操作系统环境这个讨论意图在于:桌面操作系统环境和移动操作系统环境这个讨论意图在于:桌面操作系统环境和移动操作系统环境AndroidAndroidAndroidAndroid的开发形的开发形的开发形的开发形 式和开发工具的比较。式和开发工具的比较。式和开发工具的比较。式和开发工具的比较。 简短的嵌入式设备开发历史简短的嵌入式设备开发历史简短的嵌入式设备开发历史简短的嵌入式设备开发历史 很长一段时间,手机开发者构成了一个认作是嵌入式设备开发者的小的稍微大很长一段时间,手机开发者构成了一个认作是嵌入式设备开发者的小的稍微大很长一段时间,手机开发者构成了一个认作是嵌入式设备开发者的小的稍微大很长一段时间,手机开发者构成了一个认作是嵌入式设备开发者的小的稍微大 点的派别。理解成一个小的具有魅力的桌面家族成员点的派别。理解成一个小的具有魅力的桌面家族成员点的派别。理解成一个小的具有魅力的桌面家族成员点的派别。理解成一个小的具有魅力的桌面家族成员----后来的网络后来的网络后来的网络后来的网络Web-Web-Web-Web-开发,开发,开发,开发,嵌嵌嵌嵌 入式设备开发代表性地得到闻名的短的结局,远至硬件和操作系统特色,因为入式设备开发代表性地得到闻名的短的结局,远至硬件和操作系统特色,因为入式设备开发代表性地得到闻名的短的结局,远至硬件和操作系统特色,因为入式设备开发代表性地得到闻名的短的结局,远至硬件和操作系统特色,因为 嵌入式设备制造业在特色支持方面恶名昭彰地吝啬。嵌入式设备制造厂商典型嵌入式设备制造业在特色支持方面恶名昭彰地吝啬。嵌入式设备制造厂商典型嵌入式设备制造业在特色支持方面恶名昭彰地吝啬。嵌入式设备制造厂商典型嵌入式设备制造业在特色支持方面恶名昭彰地吝啬。嵌入式设备制造厂商典型 地需要封闭地保护他们硬件的机密,因此,当嵌入式设备开发者试着去与特殊地需要封闭地保护他们硬件的机密,因此,当嵌入式设备开发者试着去与特殊地需要封闭地保护他们硬件的机密,因此,当嵌入式设备开发者试着去与特殊地需要封闭地保护他们硬件的机密,因此,当嵌入式设备开发者试着去与特殊 的设备互动时嵌入式设备制造厂商给他们很少的函数库去调用。的设备互动时嵌入式设备制造厂商给他们很少的函数库去调用。的设备互动时嵌入式设备制造厂商给他们很少的函数库去调用。的设备互动时嵌入式设备制造厂商给他们很少的函数库去调用。 嵌入式设备不同于桌面系统是一个嵌入式设备是一个典型的嵌入式设备不同于桌面系统是一个嵌入式设备是一个典型的嵌入式设备不同于桌面系统是一个嵌入式设备是一个典型的嵌入式设备不同于桌面系统是一个嵌入式设备是一个典型的““““片上计算机片上计算机片上计算机片上计算机””””。。。。 例如:考虑你的标准电视机的远程控制。它不是真正看上去像一个无法实现的例如:考虑你的标准电视机的远程控制。它不是真正看上去像一个无法实现的例如:考虑你的标准电视机的远程控制。它不是真正看上去像一个无法实现的例如:考虑你的标准电视机的远程控制。它不是真正看上去像一个无法实现的 复杂技术的实现。当任何一个按钮按下,芯片以一种方法解释信号(已经编程复杂技术的实现。当任何一个按钮按下,芯片以一种方法解释信号(已经编程复杂技术的实现。当任何一个按钮按下,芯片以一种方法解释信号(已经编程复杂技术的实现。当任何一个按钮按下,芯片以一种方法解释信号(已经编程 嵌入到设备中)。这允许设备从输入设备(键盘)知道用户期望干什么,和如嵌入到设备中)。这允许设备从输入设备(键盘)知道用户期望干什么,和如嵌入到设备中)。这允许设备从输入设备(键盘)知道用户期望干什么,和如嵌入到设备中)。这允许设备从输入设备(键盘)知道用户期望干什么,和如何何何何 对这些命令响应(例如,打开电视机)。这是一个来自嵌入式设备的编程例子。对这些命令响应(例如,打开电视机)。这是一个来自嵌入式设备的编程例子。对这些命令响应(例如,打开电视机)。这是一个来自嵌入式设备的编程例子。对这些命令响应(例如,打开电视机)。这是一个来自嵌入式设备的编程例子。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 13131313 版权©2008 McGraw-Hill 公司 然而,信或不信,诸如这些简单的设备被明确涉及到早期手机设备和开发的根然而,信或不信,诸如这些简单的设备被明确涉及到早期手机设备和开发的根然而,信或不信,诸如这些简单的设备被明确涉及到早期手机设备和开发的根然而,信或不信,诸如这些简单的设备被明确涉及到早期手机设备和开发的根 源。源。源。源。 大多数嵌入式设备运行(在一些情况仍然运行)在专有的操作系统上。选大多数嵌入式设备运行(在一些情况仍然运行)在专有的操作系统上。选大多数嵌入式设备运行(在一些情况仍然运行)在专有的操作系统上。选大多数嵌入式设备运行(在一些情况仍然运行)在专有的操作系统上。选择择择择 创建一个专有的操作系统而不是使用任何消费者系统的理由是:这是一个产品创建一个专有的操作系统而不是使用任何消费者系统的理由是:这是一个产品创建一个专有的操作系统而不是使用任何消费者系统的理由是:这是一个产品创建一个专有的操作系统而不是使用任何消费者系统的理由是:这是一个产品 正真必需的。简单的设备不需要很耐用、完善的操作系统。正真必需的。简单的设备不需要很耐用、完善的操作系统。正真必需的。简单的设备不需要很耐用、完善的操作系统。正真必需的。简单的设备不需要很耐用、完善的操作系统。 作为一种设备产品的发展,大约作为一种设备产品的发展,大约作为一种设备产品的发展,大约作为一种设备产品的发展,大约2222年前左右,许多复杂的嵌入式设备,例年前左右,许多复杂的嵌入式设备,例年前左右,许多复杂的嵌入式设备,例年前左右,许多复杂的嵌入式设备,例如如如如 早期的早期的早期的早期的PDAsPDAsPDAsPDAs,家庭安全系统,和,家庭安全系统,和,家庭安全系统,和,家庭安全系统,和GPSsGPSsGPSsGPSs,被移植到有点标准化的操作系统平台,被移植到有点标准化的操作系统平台,被移植到有点标准化的操作系统平台,被移植到有点标准化的操作系统平台上 。上 。上 。上 。 小体积的操作系统如 小体积的操作系统如 小体积的操作系统如 小体积的操作系统如 LinuxLinuxLinuxLinux,或甚至嵌入式版本的,或甚至嵌入式版本的,或甚至嵌入式版本的,或甚至嵌入式版本的MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows,已经,已经,已经,已经是是是是 在许多嵌入式设备上很流行了。围绕这个时间段的设备发展,手机从其他的嵌在许多嵌入式设备上很流行了。围绕这个时间段的设备发展,手机从其他的嵌在许多嵌入式设备上很流行了。围绕这个时间段的设备发展,手机从其他的嵌在许多嵌入式设备上很流行了。围绕这个时间段的设备发展,手机从其他的嵌 入式设备分支成他们自己的路线。当你查看他们的业绩时,这个分支显得很明入式设备分支成他们自己的路线。当你查看他们的业绩时,这个分支显得很明入式设备分支成他们自己的路线。当你查看他们的业绩时,这个分支显得很明入式设备分支成他们自己的路线。当你查看他们的业绩时,这个分支显得很明 显。显。显。显。 几乎从他们起初,当运行专有的软件(被制造厂商拥有和控制,几乎也总几乎从他们起初,当运行专有的软件(被制造厂商拥有和控制,几乎也总几乎从他们起初,当运行专有的软件(被制造厂商拥有和控制,几乎也总几乎从他们起初,当运行专有的软件(被制造厂商拥有和控制,几乎也总是是是是 被考虑是被考虑是被考虑是被考虑是““““封闭封闭封闭封闭””””系统)时,手机就已经成为终端设备的范围内。制造厂商使系统)时,手机就已经成为终端设备的范围内。制造厂商使系统)时,手机就已经成为终端设备的范围内。制造厂商使系统)时,手机就已经成为终端设备的范围内。制造厂商使 用专有的操作系统的实践开始比其他任何理由更加不必要。这是因为手机制造用专有的操作系统的实践开始比其他任何理由更加不必要。这是因为手机制造用专有的操作系统的实践开始比其他任何理由更加不必要。这是因为手机制造用专有的操作系统的实践开始比其他任何理由更加不必要。这是因为手机制造 商代表性的使用完全在内部开发出的硬件。或至少硬件是为运行手机设备特别商代表性的使用完全在内部开发出的硬件。或至少硬件是为运行手机设备特别商代表性的使用完全在内部开发出的硬件。或至少硬件是为运行手机设备特别商代表性的使用完全在内部开发出的硬件。或至少硬件是为运行手机设备特别 开发出来的,结果,这些硬件、专有系统不是开发地可获得的,空架的软件包开发出来的,结果,这些硬件、专有系统不是开发地可获得的,空架的软件包开发出来的,结果,这些硬件、专有系统不是开发地可获得的,空架的软件包开发出来的,结果,这些硬件、专有系统不是开发地可获得的,空架的软件包,,,, 或者解答(这些都是能够确切与他们硬件互动的)。自制造商想更可靠地保护或者解答(这些都是能够确切与他们硬件互动的)。自制造商想更可靠地保护或者解答(这些都是能够确切与他们硬件互动的)。自制造商想更可靠地保护或者解答(这些都是能够确切与他们硬件互动的)。自制造商想更可靠地保护他他他他 们的硬件交易机密(通过允许接近设备软件水平可以显露出来),通常的实践们的硬件交易机密(通过允许接近设备软件水平可以显露出来),通常的实践们的硬件交易机密(通过允许接近设备软件水平可以显露出来),通常的实践们的硬件交易机密(通过允许接近设备软件水平可以显露出来),通常的实践是是是是 (在多数情况下仍然是)通过完全(在多数情况下仍然是)通过完全(在多数情况下仍然是)通过完全(在多数情况下仍然是)通过完全专用的和封闭的软件来运行他们的设备。接专用的和封闭的软件来运行他们的设备。接专用的和封闭的软件来运行他们的设备。接专用的和封闭的软件来运行他们的设备。接 下来就是,任何想为手机开发能够在上面运行的应用程序的人不得不去揭秘专下来就是,任何想为手机开发能够在上面运行的应用程序的人不得不去揭秘专下来就是,任何想为手机开发能够在上面运行的应用程序的人不得不去揭秘专下来就是,任何想为手机开发能够在上面运行的应用程序的人不得不去揭秘专 有系统环境。解决方法是直接向制造商购买昂贵的开发工具。这孤立了很多有系统环境。解决方法是直接向制造商购买昂贵的开发工具。这孤立了很多有系统环境。解决方法是直接向制造商购买昂贵的开发工具。这孤立了很多有系统环境。解决方法是直接向制造商购买昂贵的开发工具。这孤立了很多““““业业业业 余爱好余爱好余爱好余爱好””””的开发者们。的开发者们。的开发者们。的开发者们。 注意:注意:注意:注意: ------------------------------------------------------------ 一种成长的业余爱好开发者文化已经拥抱着手机应用程序开发。一种成长的业余爱好开发者文化已经拥抱着手机应用程序开发。一种成长的业余爱好开发者文化已经拥抱着手机应用程序开发。一种成长的业余爱好开发者文化已经拥抱着手机应用程序开发。““““业余爱好者业余爱好者业余爱好者业余爱好者”””” 队伍事实涉及到了那些具有代表性的、不是为手机开发公司工作的开发者和普队伍事实涉及到了那些具有代表性的、不是为手机开发公司工作的开发者和普队伍事实涉及到了那些具有代表性的、不是为手机开发公司工作的开发者和普队伍事实涉及到了那些具有代表性的、不是为手机开发公司工作的开发者和普 遍地小生产,利用他们自己时间开发产品的人。遍地小生产,利用他们自己时间开发产品的人。遍地小生产,利用他们自己时间开发产品的人。遍地小生产,利用他们自己时间开发产品的人。 其他的,更多强制的其他的,更多强制的其他的,更多强制的其他的,更多强制的““““必需品必需品必需品必需品””””是硬件制造商对于是硬件制造商对于是硬件制造商对于是硬件制造商对于““““内存对照需求内存对照需求内存对照需求内存对照需求””””困境的解困境的解困境的解困境的解 答(这使天天进行手机开发的开发者难以入手)。直到最近,手机不是比实现答(这使天天进行手机开发的开发者难以入手)。直到最近,手机不是比实现答(这使天天进行手机开发的开发者难以入手)。直到最近,手机不是比实现答(这使天天进行手机开发的开发者难以入手)。直到最近,手机不是比实现多多多多 一点点,接收电话,跟踪你的联系,并且可能的发送和接收文本短信;当今他一点点,接收电话,跟踪你的联系,并且可能的发送和接收文本短信;当今他一点点,接收电话,跟踪你的联系,并且可能的发送和接收文本短信;当今他一点点,接收电话,跟踪你的联系,并且可能的发送和接收文本短信;当今他 们不是真正的们不是真正的们不是真正的们不是真正的““““瑞士军刀瑞士军刀瑞士军刀瑞士军刀””””技术。甚至迟到技术。甚至迟到技术。甚至迟到技术。甚至迟到2002200220022002年,带有照相机的手机在消年,带有照相机的手机在消年,带有照相机的手机在消年,带有照相机的手机在消费费费费 者的手上一般的也没有见到。者的手上一般的也没有见到。者的手上一般的也没有见到。者的手上一般的也没有见到。 到到到到1997199719971997年,小应用程序例如计算器和游戏(俄罗斯方块,举例)缓慢地在年,小应用程序例如计算器和游戏(俄罗斯方块,举例)缓慢地在年,小应用程序例如计算器和游戏(俄罗斯方块,举例)缓慢地在年,小应用程序例如计算器和游戏(俄罗斯方块,举例)缓慢地在 手机上爬行他们的发展路线,但是这些无法实现的功能仍然是电话拨号程序本手机上爬行他们的发展路线,但是这些无法实现的功能仍然是电话拨号程序本手机上爬行他们的发展路线,但是这些无法实现的功能仍然是电话拨号程序本手机上爬行他们的发展路线,但是这些无法实现的功能仍然是电话拨号程序本 身。手机还没有成为今天它们的多样的,多功能的个人工具。这是可能的,身。手机还没有成为今天它们的多样的,多功能的个人工具。这是可能的,身。手机还没有成为今天它们的多样的,多功能的个人工具。这是可能的,身。手机还没有成为今天它们的多样的,多功能的个人工具。这是可能的,1919191997979797 年,手机制造商完全没有意识到消费者需求是所有功能集聚一个设备上。不过年,手机制造商完全没有意识到消费者需求是所有功能集聚一个设备上。不过年,手机制造商完全没有意识到消费者需求是所有功能集聚一个设备上。不过年,手机制造商完全没有意识到消费者需求是所有功能集聚一个设备上。不过,,,, 即使这个需求是目前的,设备的内存缺乏,存储能力是一个更大的要去克服的即使这个需求是目前的,设备的内存缺乏,存储能力是一个更大的要去克服的即使这个需求是目前的,设备的内存缺乏,存储能力是一个更大的要去克服的即使这个需求是目前的,设备的内存缺乏,存储能力是一个更大的要去克服的 障碍。更多的人可能已经想过他们的设备变成聚集所有功能为一身的工具,但障碍。更多的人可能已经想过他们的设备变成聚集所有功能为一身的工具,但障碍。更多的人可能已经想过他们的设备变成聚集所有功能为一身的工具,但障碍。更多的人可能已经想过他们的设备变成聚集所有功能为一身的工具,但 是制造商仍然不得不攀爬内存障碍。是制造商仍然不得不攀爬内存障碍。是制造商仍然不得不攀爬内存障碍。是制造商仍然不得不攀爬内存障碍。 为了使问题简单,这使得任何设备上让内存去存储和运行应用程序,包括手机为了使问题简单,这使得任何设备上让内存去存储和运行应用程序,包括手机为了使问题简单,这使得任何设备上让内存去存储和运行应用程序,包括手机为了使问题简单,这使得任何设备上让内存去存储和运行应用程序,包括手机。。。。 手机,作为一种设备,直到最近都还没有使手机容易包含额外程序的大量内存手机,作为一种设备,直到最近都还没有使手机容易包含额外程序的大量内存手机,作为一种设备,直到最近都还没有使手机容易包含额外程序的大量内存手机,作为一种设备,直到最近都还没有使手机容易包含额外程序的大量内存。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 14141414 版权©2008 McGraw-Hill 公司 在最近两年里,内存价格已经达到很低的水平了。设备制造商现在有能力以更在最近两年里,内存价格已经达到很低的水平了。设备制造商现在有能力以更在最近两年里,内存价格已经达到很低的水平了。设备制造商现在有能力以更在最近两年里,内存价格已经达到很低的水平了。设备制造商现在有能力以更 低的价格包含更多的内存。现在很多手机拥有比低的价格包含更多的内存。现在很多手机拥有比低的价格包含更多的内存。现在很多手机拥有比低的价格包含更多的内存。现在很多手机拥有比1990199019901990世纪中期普通世纪中期普通世纪中期普通世纪中期普通PCPCPCPC机更标机更标机更标机更标 准的内存。因此,现在我们有了需要、内存,我们可以深入,并且在世界范围准的内存。因此,现在我们有了需要、内存,我们可以深入,并且在世界范围准的内存。因此,现在我们有了需要、内存,我们可以深入,并且在世界范围准的内存。因此,现在我们有了需要、内存,我们可以深入,并且在世界范围 里为手机开发酷的应用程序,对不?不是确切的。里为手机开发酷的应用程序,对不?不是确切的。里为手机开发酷的应用程序,对不?不是确切的。里为手机开发酷的应用程序,对不?不是确切的。 设备制造商仍然封闭地保护运行在他们设备上的操作系统。而一些对这一点已设备制造商仍然封闭地保护运行在他们设备上的操作系统。而一些对这一点已设备制造商仍然封闭地保护运行在他们设备上的操作系统。而一些对这一点已设备制造商仍然封闭地保护运行在他们设备上的操作系统。而一些对这一点已 经开放,他们允许一些以经开放,他们允许一些以经开放,他们允许一些以经开放,他们允许一些以JavaJavaJavaJava为基础的应用程序在手机上的小环境里运行,为基础的应用程序在手机上的小环境里运行,为基础的应用程序在手机上的小环境里运行,为基础的应用程序在手机上的小环境里运行,许许许许 多的都不允许这样做。甚至某些不允许运行一些多的都不允许这样做。甚至某些不允许运行一些多的都不允许这样做。甚至某些不允许运行一些多的都不允许这样做。甚至某些不允许运行一些JavaJavaJavaJava应用程序的系统不允许应用程序的系统不允许应用程序的系统不允许应用程序的系统不允许接接接接 近标准桌面开发者习惯去拥有的核心系统。近标准桌面开发者习惯去拥有的核心系统。近标准桌面开发者习惯去拥有的核心系统。近标准桌面开发者习惯去拥有的核心系统。 开放手机联盟和 开放手机联盟和 开放手机联盟和 开放手机联盟和 AndroidAndroidAndroidAndroid 在在在在2007 2007 2007 2007 年年年年11111111月,当 月,当 月,当 月,当 GoogleGoogleGoogleGoogle,在开放手机联盟下,发布 ,在开放手机联盟下,发布 ,在开放手机联盟下,发布 ,在开放手机联盟下,发布 AndroidAndroidAndroidAndroid,这个对于应,这个对于应,这个对于应,这个对于应 用程序开发者的障开始消失。开放手机联盟是一个硬件和软件开发者组织,它用程序开发者的障开始消失。开放手机联盟是一个硬件和软件开发者组织,它用程序开发者的障开始消失。开放手机联盟是一个硬件和软件开发者组织,它用程序开发者的障开始消失。开放手机联盟是一个硬件和软件开发者组织,它 包括包括包括包括GoogleGoogleGoogleGoogle、、、、NTTNTTNTTNTT DoCoMoDoCoMoDoCoMoDoCoMo,,,,SprintSprintSprintSprint NextelNextelNextelNextel,和,和,和,和HTCHTCHTCHTC,它的目标是创建一个更,它的目标是创建一个更,它的目标是创建一个更,它的目标是创建一个更开开开开 放的手机环境。在开放手机联盟组织下发布的第一个产品是放的手机环境。在开放手机联盟组织下发布的第一个产品是放的手机环境。在开放手机联盟组织下发布的第一个产品是放的手机环境。在开放手机联盟组织下发布的第一个产品是Android-Android-Android-Android-移动设备移动设备移动设备移动设备 操作系统。操作系统。操作系统。操作系统。 (获得更多关于开放手机联盟的信息,登陆(获得更多关于开放手机联盟的信息,登陆(获得更多关于开放手机联盟的信息,登陆(获得更多关于开放手机联盟的信息,登陆www.openhandsetalliance.comwww.openhandsetalliance.comwww.openhandsetalliance.comwww.openhandsetalliance.com)))) 和和和和Android Android Android Android 发行一起,发行一起,发行一起,发行一起,GoogleGoogleGoogleGoogle开发了可获得的主要开发工具和指南去帮助要成开发了可获得的主要开发工具和指南去帮助要成开发了可获得的主要开发工具和指南去帮助要成开发了可获得的主要开发工具和指南去帮助要成 为新系统开发者的人。帮助文档、平台软件开发包(为新系统开发者的人。帮助文档、平台软件开发包(为新系统开发者的人。帮助文档、平台软件开发包(为新系统开发者的人。帮助文档、平台软件开发包(SDKSDKSDKSDK)和甚至在 )和甚至在 )和甚至在 )和甚至在 GoogleGoogleGoogleGoogle的的的的 AndroidAndroidAndroidAndroid网站上能被找到的一个开发者社区,网站上能被找到的一个开发者社区,网站上能被找到的一个开发者社区,网站上能被找到的一个开发者社区, http://code.google.com/android.http://code.google.com/android.http://code.google.com/android.http://code.google.com/android.这个网站应该是你的入门点,我十分鼓励这个网站应该是你的入门点,我十分鼓励这个网站应该是你的入门点,我十分鼓励这个网站应该是你的入门点,我十分鼓励你你你你 去访问该网站。去访问该网站。去访问该网站。去访问该网站。 注意:注意:注意:注意: ------------------------------------------------ GoogleGoogleGoogleGoogle,为促进新的,为促进新的,为促进新的,为促进新的AndroidAndroidAndroidAndroid操作系统,甚至开始了举办了一个操作系统,甚至开始了举办了一个操作系统,甚至开始了举办了一个操作系统,甚至开始了举办了一个1000100010001000万的竞万的竞万的竞万的竞赛 ,赛 ,赛 ,赛 , 寻求新的、令人兴奋地寻求新的、令人兴奋地寻求新的、令人兴奋地寻求新的、令人兴奋地AndroidAndroidAndroidAndroid应用程序。应用程序。应用程序。应用程序。 而运行在而运行在而运行在而运行在LinuxLinuxLinuxLinux、、、、WindowsWindowsWindowsWindows、甚至、甚至、甚至、甚至PalmOSPalmOSPalmOSPalmOS上的手机能轻易找到,到写这书上的手机能轻易找到,到写这书上的手机能轻易找到,到写这书上的手机能轻易找到,到写这书为为为为 止,没有硬件平台被宣布专门为止,没有硬件平台被宣布专门为止,没有硬件平台被宣布专门为止,没有硬件平台被宣布专门为AndroidAndroidAndroidAndroid所运行。所运行。所运行。所运行。HTCHTCHTCHTC、、、、LGLGLGLG电子、电子、电子、电子、Motorola Motorola Motorola Motorola 和和和和 SamsungSamsungSamsungSamsung都是开放手机联盟的成员,在都是开放手机联盟的成员,在都是开放手机联盟的成员,在都是开放手机联盟的成员,在AndroidAndroidAndroidAndroid已经被发布之下,我们只希望已经被发布之下,我们只希望已经被发布之下,我们只希望已经被发布之下,我们只希望他他他他 们为们为们为们为Android-basedAndroid-basedAndroid-basedAndroid-based设备在未来有计划实行。在它设备在未来有计划实行。在它设备在未来有计划实行。在它设备在未来有计划实行。在它2007 2007 2007 2007 年年年年11111111月发行,这系统月发行,这系统月发行,这系统月发行,这系统 本身仍然只是一个测试版软件。这对于开发者是一个好消息,因为它给我们一本身仍然只是一个测试版软件。这对于开发者是一个好消息,因为它给我们一本身仍然只是一个测试版软件。这对于开发者是一个好消息,因为它给我们一本身仍然只是一个测试版软件。这对于开发者是一个好消息,因为它给我们一 个展望未来系统珍贵的进步发展和一个开始开发将会很快在被发布的硬件上运个展望未来系统珍贵的进步发展和一个开始开发将会很快在被发布的硬件上运个展望未来系统珍贵的进步发展和一个开始开发将会很快在被发布的硬件上运个展望未来系统珍贵的进步发展和一个开始开发将会很快在被发布的硬件上运 行的应用程序的机会。行的应用程序的机会。行的应用程序的机会。行的应用程序的机会。 注意:注意:注意:注意: ---------------------------------------------------- 这个策略清楚地给开放手机联盟一个大优势超过别的手机操作系统开发者,因这个策略清楚地给开放手机联盟一个大优势超过别的手机操作系统开发者,因这个策略清楚地给开放手机联盟一个大优势超过别的手机操作系统开发者,因这个策略清楚地给开放手机联盟一个大优势超过别的手机操作系统开发者,因 为对于第一个发布的运行为对于第一个发布的运行为对于第一个发布的运行为对于第一个发布的运行AndroidAndroidAndroidAndroid的设备将会有无数的应用程序可以直接获得的设备将会有无数的应用程序可以直接获得的设备将会有无数的应用程序可以直接获得的设备将会有无数的应用程序可以直接获得。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 15151515 版权©2008 McGraw-Hill 公司 介绍:介绍:介绍:介绍:AndroidAndroidAndroidAndroid AndroidAndroidAndroidAndroid作为一个系统作为一个系统作为一个系统作为一个系统,,,,是一个运行在是一个运行在是一个运行在是一个运行在Linux2.6Linux2.6Linux2.6Linux2.6内核上的基于内核上的基于内核上的基于内核上的基于JavaJavaJavaJava的操作系统的操作系统的操作系统的操作系统.... 这个系统非常轻量级的这个系统非常轻量级的这个系统非常轻量级的这个系统非常轻量级的,,,,并且功能丰富并且功能丰富并且功能丰富并且功能丰富....图图图图1-11-11-11-1展示未修改的展示未修改的展示未修改的展示未修改的AndroidAndroidAndroidAndroid主屏幕。主屏幕。主屏幕。主屏幕。 拥有拥有拥有拥有 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 图图图图1-11-11-11-1 目前版本目前版本目前版本目前版本AndroidAndroidAndroidAndroid主屏幕,模拟器主屏幕,模拟器主屏幕,模拟器主屏幕,模拟器 AndroidAndroidAndroidAndroid应用程序是用应用程序是用应用程序是用应用程序是用JavaJavaJavaJava开发的,能够十分简单的装入新的平台。如果开发的,能够十分简单的装入新的平台。如果开发的,能够十分简单的装入新的平台。如果开发的,能够十分简单的装入新的平台。如果 你还没有下载你还没有下载你还没有下载你还没有下载JavaJavaJavaJava或者不确信需要哪个版本,我在第二章节详述安装开发环或者不确信需要哪个版本,我在第二章节详述安装开发环或者不确信需要哪个版本,我在第二章节详述安装开发环或者不确信需要哪个版本,我在第二章节详述安装开发环境 。境 。境 。境 。 AndroidAndroidAndroidAndroid的其他特色包括加速 的其他特色包括加速 的其他特色包括加速 的其他特色包括加速 3D3D3D3D绘图引擎(依赖于硬件支持),绘图引擎(依赖于硬件支持),绘图引擎(依赖于硬件支持),绘图引擎(依赖于硬件支持),SQLiteSQLiteSQLiteSQLite强力支强力支强力支强力支 持的数据库,和一个综合完整的持的数据库,和一个综合完整的持的数据库,和一个综合完整的持的数据库,和一个综合完整的WebWebWebWeb浏览器。浏览器。浏览器。浏览器。 如果你熟练如果你熟练如果你熟练如果你熟练JavaJavaJavaJava编程或者是一个任何种类的编程或者是一个任何种类的编程或者是一个任何种类的编程或者是一个任何种类的OOPOOPOOPOOP开发者,你可能用过用户开发者,你可能用过用户开发者,你可能用过用户开发者,你可能用过用户 界面(界面(界面(界面(UIUIUIUI)开发,那是)开发,那是)开发,那是)开发,那是UIUIUIUI放置(直接在项目源码中运用的)。放置(直接在项目源码中运用的)。放置(直接在项目源码中运用的)。放置(直接在项目源码中运用的)。AndroidAndroidAndroidAndroid能识别能识别能识别能识别和和和和 允许为项目的允许为项目的允许为项目的允许为项目的UIUIUIUI做开发,也支持更新的,基于做开发,也支持更新的,基于做开发,也支持更新的,基于做开发,也支持更新的,基于XMLXMLXMLXML的的的的UIUIUIUI编排设计。编排设计。编排设计。编排设计。XMLXMLXMLXML UIUIUIUI编编编编 排设计对于一般桌面开发者是一个相当新的概念。在本书支持的章节里我将涵排设计对于一般桌面开发者是一个相当新的概念。在本书支持的章节里我将涵排设计对于一般桌面开发者是一个相当新的概念。在本书支持的章节里我将涵排设计对于一般桌面开发者是一个相当新的概念。在本书支持的章节里我将涵 盖盖盖盖XMLXMLXMLXML UIUIUIUI LayoutLayoutLayoutLayout和项目的和项目的和项目的和项目的UIUIUIUI开发。开发。开发。开发。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 16161616 版权©2008 McGraw-Hill 公司 AndroidAndroidAndroidAndroid一个最令人兴奋和注目的特色是它的架构,三部分运用程序一个最令人兴奋和注目的特色是它的架构,三部分运用程序一个最令人兴奋和注目的特色是它的架构,三部分运用程序一个最令人兴奋和注目的特色是它的架构,三部分运用程序----包括包括包括包括 ““““home-grownhome-grownhome-grownhome-grown””””当这些和内核系统绑定,可带有同样的系统优先权执行。这是当这些和内核系统绑定,可带有同样的系统优先权执行。这是当这些和内核系统绑定,可带有同样的系统优先权执行。这是当这些和内核系统绑定,可带有同样的系统优先权执行。这是 和大多系统一个主要的违背,它给了嵌入式系统应用程序一个比进程优先级(和大多系统一个主要的违背,它给了嵌入式系统应用程序一个比进程优先级(和大多系统一个主要的违背,它给了嵌入式系统应用程序一个比进程优先级(和大多系统一个主要的违背,它给了嵌入式系统应用程序一个比进程优先级(从从从从 第三方开发者创建的应用程序获得)更大的执行权。每一个应用程序在它自己第三方开发者创建的应用程序获得)更大的执行权。每一个应用程序在它自己第三方开发者创建的应用程序获得)更大的执行权。每一个应用程序在它自己第三方开发者创建的应用程序获得)更大的执行权。每一个应用程序在它自己 的进程里使用一个很轻量级的虚拟机执行。的进程里使用一个很轻量级的虚拟机执行。的进程里使用一个很轻量级的虚拟机执行。的进程里使用一个很轻量级的虚拟机执行。 除了我们能够获得用来开发的很大量的除了我们能够获得用来开发的很大量的除了我们能够获得用来开发的很大量的除了我们能够获得用来开发的很大量的SDKSDKSDKSDK和良好的架构库,对于和良好的架构库,对于和良好的架构库,对于和良好的架构库,对于AndroiAndroiAndroiAndroidddd 开发者最令人兴奋的特色是我们现在允许进入任何操作系统所允许的。换句话开发者最令人兴奋的特色是我们现在允许进入任何操作系统所允许的。换句话开发者最令人兴奋的特色是我们现在允许进入任何操作系统所允许的。换句话开发者最令人兴奋的特色是我们现在允许进入任何操作系统所允许的。换句话 说,如果你要创建一个拨电话的应用程序,你可接近电话拨号程序,如果你想说,如果你要创建一个拨电话的应用程序,你可接近电话拨号程序,如果你想说,如果你要创建一个拨电话的应用程序,你可接近电话拨号程序,如果你想说,如果你要创建一个拨电话的应用程序,你可接近电话拨号程序,如果你想 创建一个利用电话的内在创建一个利用电话的内在创建一个利用电话的内在创建一个利用电话的内在GPSGPSGPSGPS的应用程序(如果配备),你可以接近它。对于的应用程序(如果配备),你可以接近它。对于的应用程序(如果配备),你可以接近它。对于的应用程序(如果配备),你可以接近它。对于开开开开 发者创建动态的和令人感兴趣的应用程序的可能性现在是宽阔开放了。发者创建动态的和令人感兴趣的应用程序的可能性现在是宽阔开放了。发者创建动态的和令人感兴趣的应用程序的可能性现在是宽阔开放了。发者创建动态的和令人感兴趣的应用程序的可能性现在是宽阔开放了。 在这些特色中最顶级的是从在这些特色中最顶级的是从在这些特色中最顶级的是从在这些特色中最顶级的是从AndroidAndroidAndroidAndroid网站可获得的平衡,网站可获得的平衡,网站可获得的平衡,网站可获得的平衡,GoogleGoogleGoogleGoogle已经投放已经投放已经投放已经投放 一些它自己非常逗弄的特色。一些它自己非常逗弄的特色。一些它自己非常逗弄的特色。一些它自己非常逗弄的特色。AndroidAndroidAndroidAndroid应用程序开发者将能够去把自己的应用应用程序开发者将能够去把自己的应用应用程序开发者将能够去把自己的应用应用程序开发者将能够去把自己的应用程程程程 序连接到序连接到序连接到序连接到GoogleGoogleGoogleGoogle提供的已经存在的程序(例如提供的已经存在的程序(例如提供的已经存在的程序(例如提供的已经存在的程序(例如GoogleMapsGoogleMapsGoogleMapsGoogleMaps、不所不在的、不所不在的、不所不在的、不所不在的GoogGoogGoogGooglelelele 搜索)上。假设你想写一个获取一个打进电话的发出地的搜索)上。假设你想写一个获取一个打进电话的发出地的搜索)上。假设你想写一个获取一个打进电话的发出地的搜索)上。假设你想写一个获取一个打进电话的发出地的GoogleGoogleGoogleGoogle地图,或者地图,或者地图,或者地图,或者你你你你 想能够存储你联系的一般搜索结果;利用想能够存储你联系的一般搜索结果;利用想能够存储你联系的一般搜索结果;利用想能够存储你联系的一般搜索结果;利用AndroidAndroidAndroidAndroid可能性的大门已经成为直冲可能性的大门已经成为直冲可能性的大门已经成为直冲可能性的大门已经成为直冲 的开放和宽阔。的开放和宽阔。的开放和宽阔。的开放和宽阔。 第二章第二章第二章第二章将开始你的将开始你的将开始你的将开始你的AndroidAndroidAndroidAndroid开发之旅。你将学到怎样和为什么使用特殊的开发之旅。你将学到怎样和为什么使用特殊的开发之旅。你将学到怎样和为什么使用特殊的开发之旅。你将学到怎样和为什么使用特殊的开开开开 发环境或综合完整的开发环境(发环境或综合完整的开发环境(发环境或综合完整的开发环境(发环境或综合完整的开发环境(IDEIDEIDEIDE),并且你将会下载和安装),并且你将会下载和安装),并且你将会下载和安装),并且你将会下载和安装JavaIDEJavaIDEJavaIDEJavaIDE EclipsEclipsEclipsEclipseeee。。。。 专家咨询专家咨询专家咨询专家咨询 Q:Google Q:Google Q:Google Q:Google 和开放手机联盟的区别是什么?和开放手机联盟的区别是什么?和开放手机联盟的区别是什么?和开放手机联盟的区别是什么? A:GoogleA:GoogleA:GoogleA:Google是开放手机联盟的成员之一。在是开放手机联盟的成员之一。在是开放手机联盟的成员之一。在是开放手机联盟的成员之一。在GoogleGoogleGoogleGoogle收购原来的收购原来的收购原来的收购原来的AndroidAndroidAndroidAndroid的开发的开发的开发的开发商 ,商 ,商 ,商 , 在开放手机联盟组织下发布了这个操作系统。在开放手机联盟组织下发布了这个操作系统。在开放手机联盟组织下发布了这个操作系统。在开放手机联盟组织下发布了这个操作系统。 QQQQ:是否:是否:是否:是否AndroidAndroidAndroidAndroid有能力运行任何有能力运行任何有能力运行任何有能力运行任何LinuxLinuxLinuxLinux软件?软件?软件?软件? A:A:A:A:不是必需的。我确认将会有方法打破许多任何开源的系统,应用程序需要被不是必需的。我确认将会有方法打破许多任何开源的系统,应用程序需要被不是必需的。我确认将会有方法打破许多任何开源的系统,应用程序需要被不是必需的。我确认将会有方法打破许多任何开源的系统,应用程序需要被 编译后利用编译后利用编译后利用编译后利用AndroidAndroidAndroidAndroid SDKSDKSDKSDK在在在在AndroidAndroidAndroidAndroid上运行。主要原因是 上运行。主要原因是 上运行。主要原因是 上运行。主要原因是 AndroidAndroidAndroidAndroid应用程序执应用程序执应用程序执应用程序执 行文件是一种特殊的格式;这将在后面章节讨论。行文件是一种特殊的格式;这将在后面章节讨论。行文件是一种特殊的格式;这将在后面章节讨论。行文件是一种特殊的格式;这将在后面章节讨论。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 17171717 版权©2008 McGraw-Hill 公司 第二章第二章第二章第二章 下载和安装 下载和安装 下载和安装 下载和安装 EclipseEclipseEclipseEclipse AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 18181818 版权©2008 McGraw-Hill 公司 关键技术关键技术关键技术关键技术&&&&概念概念概念概念 ���� 选择一个开发环境选择一个开发环境选择一个开发环境选择一个开发环境 ���� 下载下载下载下载EclipseEclipseEclipseEclipse ���� 安装和配置安装和配置安装和配置安装和配置EclipseEclipseEclipseEclipse ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… AndroidAndroidAndroidAndroid应用程序是用应用程序是用应用程序是用应用程序是用JavaJavaJavaJava开发的。开发的。开发的。开发的。AndroidAndroidAndroidAndroid本身不是一种编程语言,而是一本身不是一种编程语言,而是一本身不是一种编程语言,而是一本身不是一种编程语言,而是一 个运行应用程序的环境。如此,你可以理论上使用任何你自己支配的配发的或个运行应用程序的环境。如此,你可以理论上使用任何你自己支配的配发的或个运行应用程序的环境。如此,你可以理论上使用任何你自己支配的配发的或个运行应用程序的环境。如此,你可以理论上使用任何你自己支配的配发的或 是综合完整的开发工具(是综合完整的开发工具(是综合完整的开发工具(是综合完整的开发工具(IDEIDEIDEIDE)来开始你的开发。实际上,你也可以不选择使)来开始你的开发。实际上,你也可以不选择使)来开始你的开发。实际上,你也可以不选择使)来开始你的开发。实际上,你也可以不选择使用用用用 IDEIDEIDEIDE。。。。 贴士贴士贴士贴士 -------------------------------- 在本书后面章节,我将给你介绍不用在本书后面章节,我将给你介绍不用在本书后面章节,我将给你介绍不用在本书后面章节,我将给你介绍不用AndroidAndroidAndroidAndroid 开发环境或是命令行界面(开发环境或是命令行界面(开发环境或是命令行界面(开发环境或是命令行界面(CLICLICLICLI)))) 来开发来开发来开发来开发AndroidAndroidAndroidAndroid应用程序。然而,我不会使用这个技术来涵盖本书的每个例子应用程序。然而,我不会使用这个技术来涵盖本书的每个例子应用程序。然而,我不会使用这个技术来涵盖本书的每个例子应用程序。然而,我不会使用这个技术来涵盖本书的每个例子,,,, 你将获得怎样在你将获得怎样在你将获得怎样在你将获得怎样在CLICLICLICLI中开发的基本技能。中开发的基本技能。中开发的基本技能。中开发的基本技能。 如果你使用的一个如果你使用的一个如果你使用的一个如果你使用的一个JavaIDEJavaIDEJavaIDEJavaIDE更舒适(超过别的任何一个),例如:更舒适(超过别的任何一个),例如:更舒适(超过别的任何一个),例如:更舒适(超过别的任何一个),例如:BorlanBorlanBorlanBorlan JBuiJBuiJBuiJBuilderlderlderlder 或是开源的或是开源的或是开源的或是开源的NetBeansNetBeansNetBeansNetBeans,自由地使用它。用一种中等的经验水平,你应该仍然能,自由地使用它。用一种中等的经验水平,你应该仍然能,自由地使用它。用一种中等的经验水平,你应该仍然能,自由地使用它。用一种中等的经验水平,你应该仍然能 够应用这本书的主要例子跟随本书学习下去。然而,开放手机联盟和够应用这本书的主要例子跟随本书学习下去。然而,开放手机联盟和够应用这本书的主要例子跟随本书学习下去。然而,开放手机联盟和够应用这本书的主要例子跟随本书学习下去。然而,开放手机联盟和GoogleGoogleGoogleGoogle都都都都 支持赞同一个支持赞同一个支持赞同一个支持赞同一个JavaIDEJavaIDEJavaIDEJavaIDE胜过其他的任何一个,它是:胜过其他的任何一个,它是:胜过其他的任何一个,它是:胜过其他的任何一个,它是:EclipseEclipseEclipseEclipse。。。。 注意:注意:注意:注意: -------------------------------------------- 如果你选择跟随这本书的例子,而不使用如果你选择跟随这本书的例子,而不使用如果你选择跟随这本书的例子,而不使用如果你选择跟随这本书的例子,而不使用EclipseEclipseEclipseEclipse,你需要检查你的,你需要检查你的,你需要检查你的,你需要检查你的IDEIDEIDEIDE的文的文的文的文件件件件 来编译和调试你的来编译和调试你的来编译和调试你的来编译和调试你的AndroidAndroidAndroidAndroid 应用程序。本书的例子只是在应用程序。本书的例子只是在应用程序。本书的例子只是在应用程序。本书的例子只是在EclipseEclipseEclipseEclipse环 境 、环 境 、环 境 、环 境 、AndrAndrAndrAndroidoidoidoid EclipseEclipseEclipseEclipse插件中给了相关的编译和调试的说明。插件中给了相关的编译和调试的说明。插件中给了相关的编译和调试的说明。插件中给了相关的编译和调试的说明。 本章节简明的描述了下载和安装本章节简明的描述了下载和安装本章节简明的描述了下载和安装本章节简明的描述了下载和安装EclipseEclipseEclipseEclipse和必需的和必需的和必需的和必需的JavaJavaJavaJava运行环境(运行环境(运行环境(运行环境(JREJREJREJRE)。多 )。多 )。多 )。多 的的的的 时间,安装指导和用户手册,按自己需求不是缺乏更多技术的技术在此之上的时间,安装指导和用户手册,按自己需求不是缺乏更多技术的技术在此之上的时间,安装指导和用户手册,按自己需求不是缺乏更多技术的技术在此之上的时间,安装指导和用户手册,按自己需求不是缺乏更多技术的技术在此之上的 读者可以跳过像这种简单的步骤。我已经建立了那些文本来跳过这些更简单的读者可以跳过像这种简单的步骤。我已经建立了那些文本来跳过这些更简单的读者可以跳过像这种简单的步骤。我已经建立了那些文本来跳过这些更简单的读者可以跳过像这种简单的步骤。我已经建立了那些文本来跳过这些更简单的 步骤,或者是查看重要的条目。由于这个原因,本章我将要介绍所有的下载和步骤,或者是查看重要的条目。由于这个原因,本章我将要介绍所有的下载和步骤,或者是查看重要的条目。由于这个原因,本章我将要介绍所有的下载和步骤,或者是查看重要的条目。由于这个原因,本章我将要介绍所有的下载和 安装步骤。安装步骤。安装步骤。安装步骤。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 19191919 版权©2008 McGraw-Hill 公司 为何使用为何使用为何使用为何使用EclipseEclipseEclipseEclipse???? 为什么为什么为什么为什么EclipseEclipseEclipseEclipse是推荐的是推荐的是推荐的是推荐的AndroidAndroidAndroidAndroid应用程序应用程序应用程序应用程序IDEIDEIDEIDE?这有几个对这个特别支持的?这有几个对这个特别支持的?这有几个对这个特别支持的?这有几个对这个特别支持的理理理理 由:由:由:由: ����为了符合开放手机联盟真正开发手机开放市场的主题,为了符合开放手机联盟真正开发手机开放市场的主题,为了符合开放手机联盟真正开发手机开放市场的主题,为了符合开放手机联盟真正开发手机开放市场的主题,EclipseEclipseEclipseEclipse是一个最是一个最是一个最是一个最完完完完 全该特色、自由、可获得的全该特色、自由、可获得的全该特色、自由、可获得的全该特色、自由、可获得的JavaJavaJavaJava IDEsIDEsIDEsIDEs中的一个。中的一个。中的一个。中的一个。EclipseEclipseEclipseEclipse也使用非常简单,也使用非常简单,也使用非常简单,也使用非常简单,最最最最 小的学习弯路。这使得小的学习弯路。这使得小的学习弯路。这使得小的学习弯路。这使得EclipseEclipseEclipseEclipse成为一个非常吸引人的坚固的开源成为一个非常吸引人的坚固的开源成为一个非常吸引人的坚固的开源成为一个非常吸引人的坚固的开源JavaJavaJavaJava开发开发开发开发 IDEIDEIDEIDE。。。。 ����开放手机联盟已经发布了一个开放手机联盟已经发布了一个开放手机联盟已经发布了一个开放手机联盟已经发布了一个AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件,它允许你创建 插件,它允许你创建 插件,它允许你创建 插件,它允许你创建 AndroidAndroidAndroidAndroid特性的程序项目,编译它们,和使用特性的程序项目,编译它们,和使用特性的程序项目,编译它们,和使用特性的程序项目,编译它们,和使用AndroidAndroidAndroidAndroid模拟器来运行和调试它模拟器来运行和调试它模拟器来运行和调试它模拟器来运行和调试它们 。们 。们 。们 。 当你创建你的第一个 当你创建你的第一个 当你创建你的第一个 当你创建你的第一个 AndroidAndroidAndroidAndroid应用程序时,这些工具和功能将显示出无比的价应用程序时,这些工具和功能将显示出无比的价应用程序时,这些工具和功能将显示出无比的价应用程序时,这些工具和功能将显示出无比的价 值。你也能够用其他的值。你也能够用其他的值。你也能够用其他的值。你也能够用其他的IDEsIDEsIDEsIDEs来创建来创建来创建来创建AndroidAndroidAndroidAndroid应用程序,但是应用程序,但是应用程序,但是应用程序,但是AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件为你创建必要的安装元素,比如文件和编译设置。插件为你创建必要的安装元素,比如文件和编译设置。插件为你创建必要的安装元素,比如文件和编译设置。插件为你创建必要的安装元素,比如文件和编译设置。AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件插件插件插件提提提提 供的帮助节省你宝贵的开发时间和巨大的减少学习弯路,意思就是你可以花更供的帮助节省你宝贵的开发时间和巨大的减少学习弯路,意思就是你可以花更供的帮助节省你宝贵的开发时间和巨大的减少学习弯路,意思就是你可以花更供的帮助节省你宝贵的开发时间和巨大的减少学习弯路,意思就是你可以花更 多时间来创建无法想象的应用程序。多时间来创建无法想象的应用程序。多时间来创建无法想象的应用程序。多时间来创建无法想象的应用程序。 注意:注意:注意:注意: ------------------------------------------------ EclipseEclipseEclipseEclipse也可以为也可以为也可以为也可以为MacMacMacMac和和和和LinuxLinuxLinuxLinux定制获得。具有更大的可用性,在很多数的操定制获得。具有更大的可用性,在很多数的操定制获得。具有更大的可用性,在很多数的操定制获得。具有更大的可用性,在很多数的操作作作作 系统上。意思是几乎任何一个人在任何一台计算机上都能开发系统上。意思是几乎任何一个人在任何一台计算机上都能开发系统上。意思是几乎任何一个人在任何一台计算机上都能开发系统上。意思是几乎任何一个人在任何一台计算机上都能开发AndroidAndroidAndroidAndroid应用程应用程应用程应用程 序。而本书的例子和截屏是来自序。而本书的例子和截屏是来自序。而本书的例子和截屏是来自序。而本书的例子和截屏是来自MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows下的下的下的下的EclipseEclipseEclipseEclipse。如果你不。如果你不。如果你不。如果你不是是是是 在任何一种在任何一种在任何一种在任何一种MicrosoftMicrosoftMicrosoftMicrosoft 环境下使用环境下使用环境下使用环境下使用EclipseEclipseEclipseEclipse,请记住这点。你的界面会明显的,请记住这点。你的界面会明显的,请记住这点。你的界面会明显的,请记住这点。你的界面会明显的 和本书截屏不同,但是全部的功能应是不变的。假如在 和本书截屏不同,但是全部的功能应是不变的。假如在 和本书截屏不同,但是全部的功能应是不变的。假如在 和本书截屏不同,但是全部的功能应是不变的。假如在 LinuxLinuxLinuxLinux下有主要的操作下有主要的操作下有主要的操作下有主要的操作 变化,我将会为这个变动包含一个例子。我也会提供一些在变化,我将会为这个变动包含一个例子。我也会提供一些在变化,我将会为这个变动包含一个例子。我也会提供一些在变化,我将会为这个变动包含一个例子。我也会提供一些在LinuxLinuxLinuxLinux环境下的例环境下的例环境下的例环境下的例 子。主要的这些例子会来自子。主要的这些例子会来自子。主要的这些例子会来自子。主要的这些例子会来自LinuxLinuxLinuxLinux/Android/Android/Android/Android 命令行环境。命令行环境。命令行环境。命令行环境。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 20202020 版权©2008 McGraw-Hill 公司 下载和安装 下载和安装 下载和安装 下载和安装 JREJREJREJRE 在你下载和安装在你下载和安装在你下载和安装在你下载和安装EclipseEclipseEclipseEclipse之前,你不得不确保你有了之前,你不得不确保你有了之前,你不得不确保你有了之前,你不得不确保你有了JavaJavaJavaJava运行环境(运行环境(运行环境(运行环境(JREJREJREJRE)的)的)的)的 下载和安装到你的机器上。因为下载和安装到你的机器上。因为下载和安装到你的机器上。因为下载和安装到你的机器上。因为EclipseEclipseEclipseEclipse是用是用是用是用javajavajavajava编写的应用程序,它需要编写的应用程序,它需要编写的应用程序,它需要编写的应用程序,它需要JJJJRERERERE 来运行。如果来运行。如果来运行。如果来运行。如果JREJREJREJRE没有安装,或是不能被它发现,如果你试着打开没有安装,或是不能被它发现,如果你试着打开没有安装,或是不能被它发现,如果你试着打开没有安装,或是不能被它发现,如果你试着打开EclipseEclipseEclipseEclipse开开开开 发环境,你将会看到下面的错误:发环境,你将会看到下面的错误:发环境,你将会看到下面的错误:发环境,你将会看到下面的错误: 如果你是一个现行的 如果你是一个现行的 如果你是一个现行的 如果你是一个现行的 javajavajavajava开发者并且已经安装了 开发者并且已经安装了 开发者并且已经安装了 开发者并且已经安装了 javajavajavajava在你的电脑上,你将仍在你的电脑上,你将仍在你的电脑上,你将仍在你的电脑上,你将仍 然想照这里来进行下去,只要保证你安装的然想照这里来进行下去,只要保证你安装的然想照这里来进行下去,只要保证你安装的然想照这里来进行下去,只要保证你安装的JREJREJREJRE的正确版本。的正确版本。的正确版本。的正确版本。 注意:注意:注意:注意: ------------------------------------------------ 很多用过网络或是基于网络的应用程序的用户也装过很多用过网络或是基于网络的应用程序的用户也装过很多用过网络或是基于网络的应用程序的用户也装过很多用过网络或是基于网络的应用程序的用户也装过JREJREJREJRE。。。。JREJREJREJRE允许你运行基允许你运行基允许你运行基允许你运行基于于于于 javajavajavajava的应用程序,但它不支持创建的应用程序,但它不支持创建的应用程序,但它不支持创建的应用程序,但它不支持创建javajavajavajava程序。要创建程序。要创建程序。要创建程序。要创建javajavajavajava程序,你需要下载程序,你需要下载程序,你需要下载程序,你需要下载 和安装和安装和安装和安装javajavajavajava开发工具包开发工具包开发工具包开发工具包JDKJDKJDKJDK,它包括了创建,它包括了创建,它包括了创建,它包括了创建javajavajavajava应用程序需要的所有工具和应用程序需要的所有工具和应用程序需要的所有工具和应用程序需要的所有工具和类类类类 库。假如你不熟悉 库。假如你不熟悉 库。假如你不熟悉 库。假如你不熟悉 javajavajavajava,记住这些区别。对于本书例子,我将下载,记住这些区别。对于本书例子,我将下载,记住这些区别。对于本书例子,我将下载,记住这些区别。对于本书例子,我将下载JDKJDKJDKJDK,因为,因为,因为,因为 它也包含它也包含它也包含它也包含JREJREJREJRE。即使你不需要。即使你不需要。即使你不需要。即使你不需要JDKJDKJDKJDK来运行来运行来运行来运行EclipseEclipseEclipseEclipse,你也可以用它来开发本书,你也可以用它来开发本书,你也可以用它来开发本书,你也可以用它来开发本书后后后后 面其他的开发。面其他的开发。面其他的开发。面其他的开发。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 21212121 版权©2008 McGraw-Hill 公司 像下面图中所示,导航进入像下面图中所示,导航进入像下面图中所示,导航进入像下面图中所示,导航进入SunSunSunSun公司开发网(公司开发网(公司开发网(公司开发网(SDNSDNSDNSDN)下载页面:)下载页面:)下载页面:)下载页面: http://developers.sun.com/downloads/http://developers.sun.com/downloads/http://developers.sun.com/downloads/http://developers.sun.com/downloads/,通常你只需要,通常你只需要,通常你只需要,通常你只需要JREJREJREJRE来运行来运行来运行来运行EclipseEclipseEclipseEclipse,,,, 但是为了符合本书目的,你应该下载完整的但是为了符合本书目的,你应该下载完整的但是为了符合本书目的,你应该下载完整的但是为了符合本书目的,你应该下载完整的JDKJDKJDKJDK,它包含了,它包含了,它包含了,它包含了JREJREJREJRE。下载完整。下载完整。下载完整。下载完整JDKJDKJDKJDK 的理由是,在本书中我也将举一些怎样用的理由是,在本书中我也将举一些怎样用的理由是,在本书中我也将举一些怎样用的理由是,在本书中我也将举一些怎样用JDKJDKJDKJDK的工具在的工具在的工具在的工具在EclipseEclipseEclipseEclipse之外来创建之外来创建之外来创建之外来创建 AndroidAndroidAndroidAndroid应用程序的例子。如果你要跟着这本指导书走的话,你需要完整的应用程序的例子。如果你要跟着这本指导书走的话,你需要完整的应用程序的例子。如果你要跟着这本指导书走的话,你需要完整的应用程序的例子。如果你要跟着这本指导书走的话,你需要完整的JDJDJDJDKKKK。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 22222222 版权©2008 McGraw-Hill 公司 从从从从SDNSDNSDNSDN下载页面导航进入合适的下载页面导航进入合适的下载页面导航进入合适的下载页面导航进入合适的JDKJDKJDKJDK的下载区。像下图所示,选择并开始的下载区。像下图所示,选择并开始的下载区。像下图所示,选择并开始的下载区。像下图所示,选择并开始下下下下 载。载。载。载。 由于本书例子,我选择了用由于本书例子,我选择了用由于本书例子,我选择了用由于本书例子,我选择了用Java5Java5Java5Java5 JDKJDKJDKJDK pdatepdatepdatepdate 14141414来进行。因为它是在 来进行。因为它是在 来进行。因为它是在 来进行。因为它是在 EclipseEclipseEclipseEclipse文档中被明确定义的被支持的文档中被明确定义的被支持的文档中被明确定义的被支持的文档中被明确定义的被支持的JavaJavaJavaJava版本。要下载版本。要下载版本。要下载版本。要下载JDK5JDK5JDK5JDK5,选择你想要,选择你想要,选择你想要,选择你想要下下下下 载的平台。假如你选择了 载的平台。假如你选择了 载的平台。假如你选择了 载的平台。假如你选择了 JDK6JDK6JDK6JDK6的话,你也能够轻松地跟着学习下去。然而,的话,你也能够轻松地跟着学习下去。然而,的话,你也能够轻松地跟着学习下去。然而,的话,你也能够轻松地跟着学习下去。然而,假假假假 如你要下载更老版本的如你要下载更老版本的如你要下载更老版本的如你要下载更老版本的JDK5JDK5JDK5JDK5,你需要向下面显示的那样点击以前版本的链接。,你需要向下面显示的那样点击以前版本的链接。,你需要向下面显示的那样点击以前版本的链接。,你需要向下面显示的那样点击以前版本的链接。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 23232323 版权©2008 McGraw-Hill 公司 注意:注意:注意:注意: -------------------------------------------------------- 在你能开始下载之前,你必须同意并接受本页中在你能开始下载之前,你必须同意并接受本页中在你能开始下载之前,你必须同意并接受本页中在你能开始下载之前,你必须同意并接受本页中SunSunSunSun公司的许可协议。公司的许可协议。公司的许可协议。公司的许可协议。 在在在在JavaSEJavaSEJavaSEJavaSE以前版本下载页面上,点击以前版本下载页面上,点击以前版本下载页面上,点击以前版本下载页面上,点击J2SE5.0J2SE5.0J2SE5.0J2SE5.0下载链接,接下来点击下载链接,接下来点击下载链接,接下来点击下载链接,接下来点击JDKJDKJDKJDK5.05.05.05.0 UpdateUpdateUpdateUpdate xxxx 的下载按钮,这里的的下载按钮,这里的的下载按钮,这里的的下载按钮,这里的xxxx是最新的更新号码(是最新的更新号码(是最新的更新号码(是最新的更新号码(14141414是写这本书时候的,是写这本书时候的,是写这本书时候的,是写这本书时候的,但但但但 和你读这本书时候的可能不一样)。和你读这本书时候的可能不一样)。和你读这本书时候的可能不一样)。和你读这本书时候的可能不一样)。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 24242424 版权©2008 McGraw-Hill 公司 假如你正在下载到 假如你正在下载到 假如你正在下载到 假如你正在下载到 MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows环境下,当你看到下图的提示,点环境下,当你看到下图的提示,点环境下,当你看到下图的提示,点环境下,当你看到下图的提示,点击击击击 RunRunRunRun来开始安装来开始安装来开始安装来开始安装JDKJDKJDKJDK。。。。 警告:警告:警告:警告: -------------------------------------------------------- 如果你要保留如果你要保留如果你要保留如果你要保留JDKJDKJDKJDK的安装包的复本,请点击的安装包的复本,请点击的安装包的复本,请点击的安装包的复本,请点击SaveSaveSaveSave,而不是,而不是,而不是,而不是RunRunRunRun。然而,假。然而,假。然而,假。然而,假设设设设 你选择了下载你选择了下载你选择了下载你选择了下载JDKJDKJDKJDK,请确保你记得下载到哪里。下载完之后,你需要导航进入,请确保你记得下载到哪里。下载完之后,你需要导航进入,请确保你记得下载到哪里。下载完之后,你需要导航进入,请确保你记得下载到哪里。下载完之后,你需要导航进入下下下下 载目录手工执行安装包。载目录手工执行安装包。载目录手工执行安装包。载目录手工执行安装包。 在安装期间,你会被催促去阅读并且接受下面所示的许可协议。在同意这在安装期间,你会被催促去阅读并且接受下面所示的许可协议。在同意这在安装期间,你会被催促去阅读并且接受下面所示的许可协议。在同意这在安装期间,你会被催促去阅读并且接受下面所示的许可协议。在同意这标标标标 准协议后点击准协议后点击准协议后点击准协议后点击NextNextNextNext,你就能够选择你的定制安装选项。,你就能够选择你的定制安装选项。,你就能够选择你的定制安装选项。,你就能够选择你的定制安装选项。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 25252525 版权©2008 McGraw-Hill 公司 这里只有很少的地方需要改动,除非你是一个经验很丰富的这里只有很少的地方需要改动,除非你是一个经验很丰富的这里只有很少的地方需要改动,除非你是一个经验很丰富的这里只有很少的地方需要改动,除非你是一个经验很丰富的JavaJavaJavaJava老手并有老手并有老手并有老手并有 让你舒适而自由选择的一些你想要的特殊选择。下图显示了让你舒适而自由选择的一些你想要的特殊选择。下图显示了让你舒适而自由选择的一些你想要的特殊选择。下图显示了让你舒适而自由选择的一些你想要的特殊选择。下图显示了JavaJavaJavaJava JDKJDKJDKJDK的定制的定制的定制的定制安安安安 装界面。装界面。装界面。装界面。 为了让过程简洁和十分标准化,你应该接受推荐的包(默认的每个都被选为了让过程简洁和十分标准化,你应该接受推荐的包(默认的每个都被选为了让过程简洁和十分标准化,你应该接受推荐的包(默认的每个都被选为了让过程简洁和十分标准化,你应该接受推荐的包(默认的每个都被选 择),通过点击择),通过点击择),通过点击择),通过点击NextNextNextNext来继续下一步安装。再强调,如果特殊的更改让你舒适的来继续下一步安装。再强调,如果特殊的更改让你舒适的来继续下一步安装。再强调,如果特殊的更改让你舒适的来继续下一步安装。再强调,如果特殊的更改让你舒适的 话,尽管做就是了。而如果你在后面章节遇到麻烦,你会想改变你的安装选项话,尽管做就是了。而如果你在后面章节遇到麻烦,你会想改变你的安装选项话,尽管做就是了。而如果你在后面章节遇到麻烦,你会想改变你的安装选项话,尽管做就是了。而如果你在后面章节遇到麻烦,你会想改变你的安装选项。。。。 当下图所示的完成安装界面出现,点击当下图所示的完成安装界面出现,点击当下图所示的完成安装界面出现,点击当下图所示的完成安装界面出现,点击FinishFinishFinishFinish,你的安装就完成了。,你的安装就完成了。,你的安装就完成了。,你的安装就完成了。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 26262626 版权©2008 McGraw-Hill 公司 一旦你完成了一旦你完成了一旦你完成了一旦你完成了JavaJavaJavaJava JDKJDKJDKJDK的安装的安装的安装的安装----默认的默认的默认的默认的JREJREJREJRE也被安装了也被安装了也被安装了也被安装了----你可以开始安装你可以开始安装你可以开始安装你可以开始安装 EclipseEclipseEclipseEclipse了。了。了。了。 下载和安装 下载和安装 下载和安装 下载和安装 EclipseEclipseEclipseEclipse 导航进入下图所示的 导航进入下图所示的 导航进入下图所示的 导航进入下图所示的 EclipseEclipseEclipseEclipse 下载页面:下载页面:下载页面:下载页面:www.eclipse.org/downloadswww.eclipse.org/downloadswww.eclipse.org/downloadswww.eclipse.org/downloads。。。。作作作作 为开篇,之前的篇幅你就注意到了,在为开篇,之前的篇幅你就注意到了,在为开篇,之前的篇幅你就注意到了,在为开篇,之前的篇幅你就注意到了,在EclipseEclipseEclipseEclipse开发需要开发需要开发需要开发需要J R EJ R EJ R EJ R E(推荐(推荐(推荐(推荐JavaJavaJavaJava 5555 JJJJRERERERE)。)。)。)。 从此网站下载从此网站下载从此网站下载从此网站下载JavaJavaJavaJava开发者专用的开发者专用的开发者专用的开发者专用的EclipseEclipseEclipseEclipse IDEIDEIDEIDE。安装包十分小(。安装包十分小(。安装包十分小(。安装包十分小(79M79M79M79M),并且下),并且下),并且下),并且下 载也会相当快。确保你不要下载载也会相当快。确保你不要下载载也会相当快。确保你不要下载载也会相当快。确保你不要下载JavaJavaJavaJava EEEEEEEE开发者专用的开发者专用的开发者专用的开发者专用的EclipseEclipseEclipseEclipse IDEIDEIDEIDE,因为这,因为这,因为这,因为这个个个个 IDEIDEIDEIDE稍微有点不一样,我也不会涉及到它的使用。稍微有点不一样,我也不会涉及到它的使用。稍微有点不一样,我也不会涉及到它的使用。稍微有点不一样,我也不会涉及到它的使用。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 27272727 版权©2008 McGraw-Hill 公司 在你已经下载好在你已经下载好在你已经下载好在你已经下载好EclipseEclipseEclipseEclipse后,是时候安装了。导航进入到你下载后,是时候安装了。导航进入到你下载后,是时候安装了。导航进入到你下载后,是时候安装了。导航进入到你下载EclipseEclipseEclipseEclipse 安安安安 装包的目录。正在写本书时,装包的目录。正在写本书时,装包的目录。正在写本书时,装包的目录。正在写本书时,MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows平台下的最想的平台下的最想的平台下的最想的平台下的最想的EclipseEclipseEclipseEclipse安安安安装装装装 包是包是包是包是eclipse-java-europe-fall2-win32.zipeclipse-java-europe-fall2-win32.zipeclipse-java-europe-fall2-win32.zipeclipse-java-europe-fall2-win32.zip。解压安装包,运行。解压安装包,运行。解压安装包,运行。解压安装包,运行eclipse.execlipse.execlipse.execlipse.exeeee。。。。 在在在在MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows下,下,下,下,EclipseEclipseEclipseEclipse默认安装到你用户目录下,但你可能会想默认安装到你用户目录下,但你可能会想默认安装到你用户目录下,但你可能会想默认安装到你用户目录下,但你可能会想安安安安 装到你的装到你的装到你的装到你的ProgramProgramProgramProgram FilesFilesFilesFiles 目录下。这会让你的应用程序可用,也允许你设置不目录下。这会让你的应用程序可用,也允许你设置不目录下。这会让你的应用程序可用,也允许你设置不目录下。这会让你的应用程序可用,也允许你设置不 同的工作空间。下图显示了运行后同的工作空间。下图显示了运行后同的工作空间。下图显示了运行后同的工作空间。下图显示了运行后EclipseEclipseEclipseEclipse的主的主的主的主标题界面。标题界面。标题界面。标题界面。 注意:注意:注意:注意: ------------------------------------------------ 如果你没有看到图中的弹出界面,试试重启你的电脑。假如重启也不起效,如果你没有看到图中的弹出界面,试试重启你的电脑。假如重启也不起效,如果你没有看到图中的弹出界面,试试重启你的电脑。假如重启也不起效,如果你没有看到图中的弹出界面,试试重启你的电脑。假如重启也不起效, 就只有重新下载安装 就只有重新下载安装 就只有重新下载安装 就只有重新下载安装 JavaJavaJavaJava 5555 JREJREJREJRE。。。。 一旦一旦一旦一旦EclipseEclipseEclipseEclipse 安装开始,你会被催促去创建一个默认的工作空间,或是文安装开始,你会被催促去创建一个默认的工作空间,或是文安装开始,你会被催促去创建一个默认的工作空间,或是文安装开始,你会被催促去创建一个默认的工作空间,或是文 件夹。正如多数的开发环境,工程在工作空间里创建和保存。如下图所示,默件夹。正如多数的开发环境,工程在工作空间里创建和保存。如下图所示,默件夹。正如多数的开发环境,工程在工作空间里创建和保存。如下图所示,默件夹。正如多数的开发环境,工程在工作空间里创建和保存。如下图所示,默 认的工作空间路径是你的用户目录。要选择不同的路径,点击认的工作空间路径是你的用户目录。要选择不同的路径,点击认的工作空间路径是你的用户目录。要选择不同的路径,点击认的工作空间路径是你的用户目录。要选择不同的路径,点击BrowseBrowseBrowseBrowse,并且导,并且导,并且导,并且导 航进入来设置它。航进入来设置它。航进入来设置它。航进入来设置它。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 28282828 版权©2008 McGraw-Hill 公司 我推荐你选取默认你所有工程都在特殊工作空间的复选框。通过选取这个我推荐你选取默认你所有工程都在特殊工作空间的复选框。通过选取这个我推荐你选取默认你所有工程都在特殊工作空间的复选框。通过选取这个我推荐你选取默认你所有工程都在特殊工作空间的复选框。通过选取这个复复复复 选框,你将不必担心任何一件事,当你创建一个新的工程,你总会知道在哪个选框,你将不必担心任何一件事,当你创建一个新的工程,你总会知道在哪个选框,你将不必担心任何一件事,当你创建一个新的工程,你总会知道在哪个选框,你将不必担心任何一件事,当你创建一个新的工程,你总会知道在哪个 目录结构中找到你的源文件。在本书中,有时你将会在 目录结构中找到你的源文件。在本书中,有时你将会在 目录结构中找到你的源文件。在本书中,有时你将会在 目录结构中找到你的源文件。在本书中,有时你将会在 AndroidAndroidAndroidAndroid开发环境之外开发环境之外开发环境之外开发环境之外 进入工程文件中工作,因此确切的知道它们在哪里是很有帮助的。进入工程文件中工作,因此确切的知道它们在哪里是很有帮助的。进入工程文件中工作,因此确切的知道它们在哪里是很有帮助的。进入工程文件中工作,因此确切的知道它们在哪里是很有帮助的。 在你选择了你工作空间路径后,点击在你选择了你工作空间路径后,点击在你选择了你工作空间路径后,点击在你选择了你工作空间路径后,点击OKOKOKOK。。。。 到这,你的开发环境被下载和安装好了。而到这,你的开发环境被下载和安装好了。而到这,你的开发环境被下载和安装好了。而到这,你的开发环境被下载和安装好了。而EclipseEclipseEclipseEclipse的安装看上去快得出的安装看上去快得出的安装看上去快得出的安装看上去快得出奇 ,奇 ,奇 ,奇 , 但在你能创建你的第一个但在你能创建你的第一个但在你能创建你的第一个但在你能创建你的第一个AndroidAndroidAndroidAndroid工程前,你仍然需要去做一些配置工作。许工程前,你仍然需要去做一些配置工作。许工程前,你仍然需要去做一些配置工作。许工程前,你仍然需要去做一些配置工作。许 多需要你去完成的配置工作重点是在多需要你去完成的配置工作重点是在多需要你去完成的配置工作重点是在多需要你去完成的配置工作重点是在AndroidAndroidAndroidAndroid SDKSDKSDKSDK和和和和 AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件插件插件插件 上。上。上。上。 下一步你需要下载和安装下一步你需要下载和安装下一步你需要下载和安装下一步你需要下载和安装AndroidAndroidAndroidAndroid SDKSDKSDKSDK、、、、AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件,还有配插件,还有配插件,还有配插件,还有配置置置置 EclipseEclipseEclipseEclipse设置。到了第三章结束,你将会有一个完整配置好的开发环境(在这设置。到了第三章结束,你将会有一个完整配置好的开发环境(在这设置。到了第三章结束,你将会有一个完整配置好的开发环境(在这设置。到了第三章结束,你将会有一个完整配置好的开发环境(在这个个个个 环境里你就能够开始创建你的应用程序了)。接下来在第五章你会去浏览一下环境里你就能够开始创建你的应用程序了)。接下来在第五章你会去浏览一下环境里你就能够开始创建你的应用程序了)。接下来在第五章你会去浏览一下环境里你就能够开始创建你的应用程序了)。接下来在第五章你会去浏览一下 AndroidAndroidAndroidAndroid SDKSDKSDKSDK并开始创建你第一个 并开始创建你第一个 并开始创建你第一个 并开始创建你第一个 HelloWorldHelloWorldHelloWorldHelloWorld程序。程序。程序。程序。 专家咨询专家咨询专家咨询专家咨询 Q:EclipseQ:EclipseQ:EclipseQ:Eclipse是用来开发是用来开发是用来开发是用来开发JavaJavaJavaJava应用程序的,但应用程序的,但应用程序的,但应用程序的,但AndroidAndroidAndroidAndroid能不能运行其他编程语言写的应用程序能不能运行其他编程语言写的应用程序能不能运行其他编程语言写的应用程序能不能运行其他编程语言写的应用程序???? A:A:A:A:当写本书的时候,还没找得到有别的当写本书的时候,还没找得到有别的当写本书的时候,还没找得到有别的当写本书的时候,还没找得到有别的SDKSDKSDKSDK或是模拟器允许或是模拟器允许或是模拟器允许或是模拟器允许AndroidAndroidAndroidAndroid用除用除用除用除JavaJavaJavaJava外任何别的语外任何别的语外任何别的语外任何别的语 言开发。言开发。言开发。言开发。 Q:Q:Q:Q:你能否用带有其他版本的你能否用带有其他版本的你能否用带有其他版本的你能否用带有其他版本的JREJREJREJRE而不是第而不是第而不是第而不是第5555版本的版本的版本的版本的EclipseEclipseEclipseEclipse和和和和AndroidAndroidAndroidAndroid SDKSDKSDKSDK???? A:A:A:A:技术上讲你可以使用带有技术上讲你可以使用带有技术上讲你可以使用带有技术上讲你可以使用带有JRE5JRE5JRE5JRE5的的的的EclipseEclipseEclipseEclipse和更新一点的。而最新版本的和更新一点的。而最新版本的和更新一点的。而最新版本的和更新一点的。而最新版本的EclipseEclipseEclipseEclipse只在只在只在只在JavJavJavJava5a5a5a5 JREJREJREJRE上测试过。上测试过。上测试过。上测试过。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 29292929 版权©2008 McGraw-Hill 公司 第三章第三章第三章第三章 下载和安装下载和安装下载和安装下载和安装 AndroidAndroidAndroidAndroid SDKSDKSDKSDK AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 30303030 版权©2008 McGraw-Hill 公司 关键技术关键技术关键技术关键技术&&&&概念概念概念概念 ���� 下载下载下载下载AndroidAndroidAndroidAndroid SDKSDKSDKSDK ���� 使用使用使用使用EclipseEclipseEclipseEclipse更新特性更新特性更新特性更新特性 ���� 下载、安装和配置 下载、安装和配置 下载、安装和配置 下载、安装和配置 AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件插件插件插件 ���� 检查检查检查检查PATHPATHPATHPATH 变量变量变量变量 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 在前面的章节里,你下载和安装了你主要的开发环境在前面的章节里,你下载和安装了你主要的开发环境在前面的章节里,你下载和安装了你主要的开发环境在前面的章节里,你下载和安装了你主要的开发环境EclipseEclipseEclipseEclipse。现在,你开始。现在,你开始。现在,你开始。现在,你开始的的的的 开发环境被建立了,使用开发环境被建立了,使用开发环境被建立了,使用开发环境被建立了,使用EclipseEclipseEclipseEclipse作为你的作为你的作为你的作为你的JavaJavaJavaJava IDEIDEIDEIDE,你可以使用它来开发,你可以使用它来开发,你可以使用它来开发,你可以使用它来开发JJJJavaavaavaava 应用程序了,但是在你开始创建手机应用程序前,还有一个额外的步骤。你必应用程序了,但是在你开始创建手机应用程序前,还有一个额外的步骤。你必应用程序了,但是在你开始创建手机应用程序前,还有一个额外的步骤。你必应用程序了,但是在你开始创建手机应用程序前,还有一个额外的步骤。你必 须以一定的方式配置它,这会使开发须以一定的方式配置它,这会使开发须以一定的方式配置它,这会使开发须以一定的方式配置它,这会使开发AndroidAndroidAndroidAndroid变得容易。变得容易。变得容易。变得容易。 由于由于由于由于EclipseEclipseEclipseEclipse是一个是一个是一个是一个JavaJavaJavaJava 开发环境,你可以极度轻松的创建和编辑开发环境,你可以极度轻松的创建和编辑开发环境,你可以极度轻松的创建和编辑开发环境,你可以极度轻松的创建和编辑JavaJavaJavaJava 项目。然而,只是给了它,你没有用来理解项目。然而,只是给了它,你没有用来理解项目。然而,只是给了它,你没有用来理解项目。然而,只是给了它,你没有用来理解AndroidAndroidAndroidAndroid应用程序是如何工作的运应用程序是如何工作的运应用程序是如何工作的运应用程序是如何工作的运 行库,你不能够开发任何运行在基于行库,你不能够开发任何运行在基于行库,你不能够开发任何运行在基于行库,你不能够开发任何运行在基于AndroidAndroidAndroidAndroid设备的应用程序。为了开始创建设备的应用程序。为了开始创建设备的应用程序。为了开始创建设备的应用程序。为了开始创建 AndroidAndroidAndroidAndroid工程,你需要下载并安装工程,你需要下载并安装工程,你需要下载并安装工程,你需要下载并安装AndroidAndroidAndroidAndroid SDKSDKSDKSDK。你接下来必须下载相关的。你接下来必须下载相关的。你接下来必须下载相关的。你接下来必须下载相关的 AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件在插件在插件在插件在EclipseEclipseEclipseEclipse IDEIDEIDEIDE中使用中使用中使用中使用AndroidAndroidAndroidAndroid SDKSDKSDKSDK。在这些就绪,你。在这些就绪,你。在这些就绪,你。在这些就绪,你就就就就 可以开始你的开发了。可以开始你的开发了。可以开始你的开发了。可以开始你的开发了。 如果你有任何开发经验,你会非常熟悉使用如果你有任何开发经验,你会非常熟悉使用如果你有任何开发经验,你会非常熟悉使用如果你有任何开发经验,你会非常熟悉使用SDKSDKSDKSDK的过程,使用的过程,使用的过程,使用的过程,使用SDKSDKSDKSDK来创建来创建来创建来创建 即将运行在他们正开发的预期系统上的应用程序。即将运行在他们正开发的预期系统上的应用程序。即将运行在他们正开发的预期系统上的应用程序。即将运行在他们正开发的预期系统上的应用程序。AndroidAndroidAndroidAndroid SDKSDKSDKSDK包含所有的包含所有的包含所有的包含所有的JaJaJaJavavavava 核心库,这些核心库在创建具体运行在 核心库,这些核心库在创建具体运行在 核心库,这些核心库在创建具体运行在 核心库,这些核心库在创建具体运行在 AndroidAndroidAndroidAndroid平台上的运用程序时是必须的平台上的运用程序时是必须的平台上的运用程序时是必须的平台上的运用程序时是必须的,,,, 这和其他的这和其他的这和其他的这和其他的SDKSDKSDKSDK没有什么不同之处。没有什么不同之处。没有什么不同之处。没有什么不同之处。SDKSDKSDKSDK也包含帮助文档,也包含帮助文档,也包含帮助文档,也包含帮助文档,AndroidAndroidAndroidAndroid模拟器和模拟器和模拟器和模拟器和一一一一 些其他主要的开发调试工具。些其他主要的开发调试工具。些其他主要的开发调试工具。些其他主要的开发调试工具。 注意:注意:注意:注意: ------------------------------------------------------------------------ 章节四会深入地涵盖 章节四会深入地涵盖 章节四会深入地涵盖 章节四会深入地涵盖 AndroidAndroidAndroidAndroid SDKSDKSDKSDK的很多功能。的很多功能。的很多功能。的很多功能。 为了开始,你将要从 为了开始,你将要从 为了开始,你将要从 为了开始,你将要从 GoogleGoogleGoogleGoogle AndroidAndroidAndroidAndroid 开发网站下载开发网站下载开发网站下载开发网站下载AndroidAndroidAndroidAndroid SDKSDKSDKSDK,登录,登录,登录,登录 http://code.google.com/androidhttp://code.google.com/androidhttp://code.google.com/androidhttp://code.google.com/android 。。。。GoogleGoogleGoogleGoogle AndroidAndroidAndroidAndroid开发主页包含了很多关开发主页包含了很多关开发主页包含了很多关开发主页包含了很多关于于于于 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 31313131 版权©2008 McGraw-Hill 公司 为为为为AndroidAndroidAndroidAndroid平台开发的有价值的工具和文档,包括平台开发的有价值的工具和文档,包括平台开发的有价值的工具和文档,包括平台开发的有价值的工具和文档,包括AndroidAndroidAndroidAndroid 开发者论坛(或社开发者论坛(或社开发者论坛(或社开发者论坛(或社 区)的超链接。区)的超链接。区)的超链接。区)的超链接。 贴士:贴士:贴士:贴士: ------------------------------------------------------------------------------------------------ 假如你正在开发假如你正在开发假如你正在开发假如你正在开发AndroidAndroidAndroidAndroid 应用程序时遇到困难,首要的找到答案的地方是应用程序时遇到困难,首要的找到答案的地方是应用程序时遇到困难,首要的找到答案的地方是应用程序时遇到困难,首要的找到答案的地方是 AndroidAndroidAndroidAndroid开发者论坛开发者论坛开发者论坛开发者论坛:http://code.google.com/android/groups.html:http://code.google.com/android/groups.html:http://code.google.com/android/groups.html:http://code.google.com/android/groups.html。那有专。那有专。那有专。那有专 门为新手、开发者和黑客们设立的讨论组。给了这个,门为新手、开发者和黑客们设立的讨论组。给了这个,门为新手、开发者和黑客们设立的讨论组。给了这个,门为新手、开发者和黑客们设立的讨论组。给了这个,AndroidAndroidAndroidAndroid是一个十分新是一个十分新是一个十分新是一个十分新的的的的 平台,平台,平台,平台,AndroidAndroidAndroidAndroid开发者论坛是能找到全面、可靠的关于正在为开发者论坛是能找到全面、可靠的关于正在为开发者论坛是能找到全面、可靠的关于正在为开发者论坛是能找到全面、可靠的关于正在为AndroidAndroidAndroidAndroid产品开产品开产品开产品开发发发发 的信息的其中一个地方。的信息的其中一个地方。的信息的其中一个地方。的信息的其中一个地方。 图图图图3-13-13-13-1 GoogleGoogleGoogleGoogle AndroidAndroidAndroidAndroid 开发主页开发主页开发主页开发主页 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 32323232 版权©2008 McGraw-Hill 公司 下载下载下载下载AndroidAndroidAndroidAndroid SDKSDKSDKSDK AndroidAndroidAndroidAndroid SDKSDKSDKSDK很容易从很容易从很容易从很容易从http://code.google.com/androidhttp://code.google.com/androidhttp://code.google.com/androidhttp://code.google.com/android 页面得到。从开页面得到。从开页面得到。从开页面得到。从开 发主页,点击发主页,点击发主页,点击发主页,点击““““GettingGettingGettingGetting StartStartStartStart””””下面的下面的下面的下面的SDKSDKSDKSDK下载链接。在你同意下载链接。在你同意下载链接。在你同意下载链接。在你同意AndroidAndroidAndroidAndroid许许许许可可可可 协议条款后,你将看到协议条款后,你将看到协议条款后,你将看到协议条款后,你将看到AndroidAndroidAndroidAndroid SDKSDKSDKSDK下载页面。下载页面。下载页面。下载页面。AndroidAndroidAndroidAndroid SDKSDKSDKSDK是一个是一个是一个是一个79M79M79M79M的下的下的下的下载载载载 包(对于包(对于包(对于包(对于WindowsWindowsWindowsWindows)并且下载会相当快。点击对应你操作系统的包开始下载。)并且下载会相当快。点击对应你操作系统的包开始下载。)并且下载会相当快。点击对应你操作系统的包开始下载。)并且下载会相当快。点击对应你操作系统的包开始下载。 注意:注意:注意:注意: ---------------------------------------------------------------- 下载大小对于操作系统可以有差异。下载大小对于操作系统可以有差异。下载大小对于操作系统可以有差异。下载大小对于操作系统可以有差异。 对于对于对于对于AndroidAndroidAndroidAndroid SDKSDKSDKSDK,没有,没有,没有,没有““““setupsetupsetupsetup””””或是安装步骤涉及到。相反,你必须遵或是安装步骤涉及到。相反,你必须遵或是安装步骤涉及到。相反,你必须遵或是安装步骤涉及到。相反,你必须遵 照一系列的步骤来把 照一系列的步骤来把 照一系列的步骤来把 照一系列的步骤来把 SDKSDKSDKSDK和你的和你的和你的和你的EclipseEclipseEclipseEclipse 开发环境结合起来。这些步骤的第一开发环境结合起来。这些步骤的第一开发环境结合起来。这些步骤的第一开发环境结合起来。这些步骤的第一 步是获得步是获得步是获得步是获得AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件,这之后你要配置它。插件,这之后你要配置它。插件,这之后你要配置它。插件,这之后你要配置它。 下载和安装 下载和安装 下载和安装 下载和安装 AndroidAndroidAndroidAndroid Eclipse Eclipse Eclipse Eclipse 插件插件插件插件 把把把把AndroidAndroidAndroidAndroid SDKSDKSDKSDK设置到设置到设置到设置到EclipseEclipseEclipseEclipse 开发环境中的第一步是下载和安装开发环境中的第一步是下载和安装开发环境中的第一步是下载和安装开发环境中的第一步是下载和安装AndroiAndroiAndroiAndroidddd EclipseEclipseEclipseEclipse插件。下载和安装插件的任务可以同时进行,并且相当的简单。插件。下载和安装插件的任务可以同时进行,并且相当的简单。插件。下载和安装插件的任务可以同时进行,并且相当的简单。插件。下载和安装插件的任务可以同时进行,并且相当的简单。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 33333333 版权©2008 McGraw-Hill 公司 1.1.1.1.打开打开打开打开EclipseEclipseEclipseEclipse应用程序。你将在 应用程序。你将在 应用程序。你将在 应用程序。你将在 EclipseEclipseEclipseEclipse里面下载里面下载里面下载里面下载AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插插插插 件。件。件。件。 2.2.2.2.选择选择选择选择Help|SoftwareHelp|SoftwareHelp|SoftwareHelp|Software Updates|FindUpdates|FindUpdates|FindUpdates|Find andandandand InstallInstallInstallInstall。。。。 3.3.3.3.在在在在Install/UpdateInstall/UpdateInstall/UpdateInstall/Update 窗口中,它允许你开始下载和安装任何一个对于你窗口中,它允许你开始下载和安装任何一个对于你窗口中,它允许你开始下载和安装任何一个对于你窗口中,它允许你开始下载和安装任何一个对于你的的的的 EclipseEclipseEclipseEclipse可以获得的插件的步骤,点击可以获得的插件的步骤,点击可以获得的插件的步骤,点击可以获得的插件的步骤,点击““““SearchSearchSearchSearch forforforfor NewNewNewNew FeaturesFeaturesFeaturesFeatures totototo InstalInstalInstalInstalllll”””” 点选按钮,接着点击 点选按钮,接着点击 点选按钮,接着点击 点选按钮,接着点击 NextNextNextNext。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 34343434 版权©2008 McGraw-Hill 公司 4.4.4.4.安装窗口中的安装窗口中的安装窗口中的安装窗口中的““““UpdateUpdateUpdateUpdate SitesSitesSitesSites totototo ViewViewViewView””””页面,在下面显示,列出了所页面,在下面显示,列出了所页面,在下面显示,列出了所页面,在下面显示,列出了所有有有有 已经得到的已经得到的已经得到的已经得到的EclipseEclipseEclipseEclipse插件的默认网址。然而,你想要的插件的默认网址。然而,你想要的插件的默认网址。然而,你想要的插件的默认网址。然而,你想要的AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件插件插件插件,,,, 在默认网址里没有。为了下载在默认网址里没有。为了下载在默认网址里没有。为了下载在默认网址里没有。为了下载AndroidAndroidAndroidAndroid 插件,你必须告诉插件,你必须告诉插件,你必须告诉插件,你必须告诉EclipseEclipseEclipseEclipse 在哪里可在哪里可在哪里可在哪里可以以以以 找到它,因此,点击找到它,因此,点击找到它,因此,点击找到它,因此,点击““““NewNewNewNew RemoteRemoteRemoteRemote SitesSitesSitesSites””””按钮。按钮。按钮。按钮。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 35353535 版权©2008 McGraw-Hill 公司 5.5.5.5.在在在在"New"New"New"New UpdateUpdateUpdateUpdate Site"Site"Site"Site"对话框中,下面显示的,你必须键入两个信息来继对话框中,下面显示的,你必须键入两个信息来继对话框中,下面显示的,你必须键入两个信息来继对话框中,下面显示的,你必须键入两个信息来继 续:新站点的名称和可用的续:新站点的名称和可用的续:新站点的名称和可用的续:新站点的名称和可用的URLURLURLURL链接。名称只是为了显示用的,对下载的插件链接。名称只是为了显示用的,对下载的插件链接。名称只是为了显示用的,对下载的插件链接。名称只是为了显示用的,对下载的插件 没有影响。在名称域中,填入没有影响。在名称域中,填入没有影响。在名称域中,填入没有影响。在名称域中,填入AndroidAndroidAndroidAndroid PluginPluginPluginPlugin,,,,URLURLURLURL域中键入域中键入域中键入域中键入EclipseEclipseEclipseEclipse能够从能够从能够从能够从 该该该该URLURLURLURL获得可用插件信息的 获得可用插件信息的 获得可用插件信息的 获得可用插件信息的 URLURLURLURL:::: http://dl-ssl.google.com/android/eclipse/http://dl-ssl.google.com/android/eclipse/http://dl-ssl.google.com/android/eclipse/http://dl-ssl.google.com/android/eclipse/。点击。点击。点击。点击OKOKOKOK。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 36363636 版权©2008 McGraw-Hill 公司 注意:注意:注意:注意: ---------------------------------------------------------------- 你站点的名称可以是任何你想要的名称,只要它能够帮你辨别它是什么链接。你站点的名称可以是任何你想要的名称,只要它能够帮你辨别它是什么链接。你站点的名称可以是任何你想要的名称,只要它能够帮你辨别它是什么链接。你站点的名称可以是任何你想要的名称,只要它能够帮你辨别它是什么链接。 自由的选用其他的,而不是自由的选用其他的,而不是自由的选用其他的,而不是自由的选用其他的,而不是AndroidAndroidAndroidAndroid PluginPluginPluginPlugin。。。。 6.6.6.6.一个叫一个叫一个叫一个叫AndroidAndroidAndroidAndroid PluginPluginPluginPlugin的新站点名现在应该在列表中可以找到。的新站点名现在应该在列表中可以找到。的新站点名现在应该在列表中可以找到。的新站点名现在应该在列表中可以找到。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 37373737 版权©2008 McGraw-Hill 公司 到这里到这里到这里到这里EclipseEclipseEclipseEclipse还没有查找插件,这只是当查找新的插件来安装时,你叫 还没有查找插件,这只是当查找新的插件来安装时,你叫 还没有查找插件,这只是当查找新的插件来安装时,你叫 还没有查找插件,这只是当查找新的插件来安装时,你叫 EclipseEclipseEclipseEclipse来查找的路径列表。来查找的路径列表。来查找的路径列表。来查找的路径列表。 7.7.7.7.检查检查检查检查AndroidAndroidAndroidAndroid PluginPluginPluginPlugin边上的复选框并点击 边上的复选框并点击 边上的复选框并点击 边上的复选框并点击 FinishFinishFinishFinish。。。。EclipseEclipseEclipseEclipse利用这个带利用这个带利用这个带利用这个带 有有有有AndroidAndroidAndroidAndroid 插件站点的插件站点的插件站点的插件站点的URLURLURLURL来寻找任何可用的插件。来寻找任何可用的插件。来寻找任何可用的插件。来寻找任何可用的插件。 8.8.8.8.在更新窗口中的搜索结果页面中,选择在更新窗口中的搜索结果页面中,选择在更新窗口中的搜索结果页面中,选择在更新窗口中的搜索结果页面中,选择AndroidAndroidAndroidAndroid PluginPluginPluginPlugin 并点击并点击并点击并点击FinishFinishFinishFinish。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 38383838 版权©2008 McGraw-Hill 公司 9.9.9.9.在安装窗口中的特色许可页面上,下面所示,为在安装窗口中的特色许可页面上,下面所示,为在安装窗口中的特色许可页面上,下面所示,为在安装窗口中的特色许可页面上,下面所示,为AndroidAndroidAndroidAndroid开发工具接受开发工具接受开发工具接受开发工具接受许许许许 可协议并点击可协议并点击可协议并点击可协议并点击NextNextNextNext。。。。 注意:注意:注意:注意: ------------------------------------------------ 记住一点,所有的记住一点,所有的记住一点,所有的记住一点,所有的EclipseEclipseEclipseEclipse插件都安装在插件都安装在插件都安装在插件都安装在 %%%%安装路径安装路径安装路径安装路径%/eclipse/plugins%/eclipse/plugins%/eclipse/plugins%/eclipse/plugins目录目录目录目录下 。下 。下 。下 。 如果你要查找这些组成如果你要查找这些组成如果你要查找这些组成如果你要查找这些组成AndroidAndroidAndroidAndroid 插件的文件,这个信息将会对你有帮助的。插件的文件,这个信息将会对你有帮助的。插件的文件,这个信息将会对你有帮助的。插件的文件,这个信息将会对你有帮助的。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 39393939 版权©2008 McGraw-Hill 公司 10.10.10.10.EclipseEclipseEclipseEclipse 下载下载下载下载AndroidAndroidAndroidAndroid 插件。在写本书的时候,这个插件的版本是插件。在写本书的时候,这个插件的版本是插件。在写本书的时候,这个插件的版本是插件。在写本书的时候,这个插件的版本是 0.4.0.2008020816350.4.0.2008020816350.4.0.2008020816350.4.0.200802081635。在安装页面的最后一页,特色验证,点击。在安装页面的最后一页,特色验证,点击。在安装页面的最后一页,特色验证,点击。在安装页面的最后一页,特色验证,点击““““InstallInstallInstallInstall AlAlAlAlllll”””” 来完成来完成来完成来完成AndroidAndroidAndroidAndroid 插件的安装。插件的安装。插件的安装。插件的安装。 伴随着伴随着伴随着伴随着AndroidAndroidAndroidAndroid插件被安装,最后你不得不执行的一步是配置插件。插件被安装,最后你不得不执行的一步是配置插件。插件被安装,最后你不得不执行的一步是配置插件。插件被安装,最后你不得不执行的一步是配置插件。 配置配置配置配置AndroidAndroidAndroidAndroid Eclipse Eclipse Eclipse Eclipse 插件插件插件插件 在安装好在安装好在安装好在安装好AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件后,插件后,插件后,插件后,EclipseEclipseEclipseEclipse将会提示你重启。假如它没将会提示你重启。假如它没将会提示你重启。假如它没将会提示你重启。假如它没有有有有 提示你,现在就重启提示你,现在就重启提示你,现在就重启提示你,现在就重启EclipseEclipseEclipseEclipse。重启。重启。重启。重启EclipseEclipseEclipseEclipse将确保这些工程有一个带着这个将确保这些工程有一个带着这个将确保这些工程有一个带着这个将确保这些工程有一个带着这个插插插插 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 40404040 版权©2008 McGraw-Hill 公司 件被安装的更新来重新开始。为了减少错误配置的机率,确保跟随这里的配置件被安装的更新来重新开始。为了减少错误配置的机率,确保跟随这里的配置件被安装的更新来重新开始。为了减少错误配置的机率,确保跟随这里的配置件被安装的更新来重新开始。为了减少错误配置的机率,确保跟随这里的配置 步骤是很重要的。步骤是很重要的。步骤是很重要的。步骤是很重要的。 AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件通过插件通过插件通过插件通过EclipseEclipseEclipseEclipse的配置窗口来进行配置的。步骤如下:的配置窗口来进行配置的。步骤如下:的配置窗口来进行配置的。步骤如下:的配置窗口来进行配置的。步骤如下: 1.1.1.1.从从从从EclipseEclipseEclipseEclipse主窗口选择主窗口选择主窗口选择主窗口选择Window|PreferenceWindow|PreferenceWindow|PreferenceWindow|Preference 。。。。 2.2.2.2.在在在在““““PreferencesPreferencesPreferencesPreferences””””(偏好)窗口中,如下所示,在左边菜单中选择(偏好)窗口中,如下所示,在左边菜单中选择(偏好)窗口中,如下所示,在左边菜单中选择(偏好)窗口中,如下所示,在左边菜单中选择AndrAndrAndrAndroidoidoidoid。。。。 在窗口右边,点击在窗口右边,点击在窗口右边,点击在窗口右边,点击BrowseBrowseBrowseBrowse,找到你硬盘中,找到你硬盘中,找到你硬盘中,找到你硬盘中AndroidAndroidAndroidAndroid SDKSDKSDKSDK的位置,并把它选入到的位置,并把它选入到的位置,并把它选入到的位置,并把它选入到SDKSDKSDKSDK LocationLocationLocationLocation 域中。域中。域中。域中。EclipseEclipseEclipseEclipse需要这个信息才能够使用所有需要这个信息才能够使用所有需要这个信息才能够使用所有需要这个信息才能够使用所有AndroidAndroidAndroidAndroid支持的工具,支持的工具,支持的工具,支持的工具, 例如模拟器。例如模拟器。例如模拟器。例如模拟器。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 41414141 版权©2008 McGraw-Hill 公司 3.3.3.3.选择选择选择选择““““AutomaticallyAutomaticallyAutomaticallyAutomatically SyncSyncSyncSync ProjectProjectProjectProject totototo CurrentCurrentCurrentCurrent SDKSDKSDKSDK ””””复选框并点击复选框并点击复选框并点击复选框并点击 ApplyApplyApplyApply。。。。 注意:注意:注意:注意: ---------------------------------------------------- WindowsWindowsWindowsWindows 下下下下AndroidAndroidAndroidAndroid 插件是以一个插件是以一个插件是以一个插件是以一个zip zip zip zip 文件的方式进行传送的,该文件包含了文件的方式进行传送的,该文件包含了文件的方式进行传送的,该文件包含了文件的方式进行传送的,该文件包含了 一个很长的目录名的目录:一个很长的目录名的目录:一个很长的目录名的目录:一个很长的目录名的目录:android-sdk-m5-rc14-win32android-sdk-m5-rc14-win32android-sdk-m5-rc14-win32android-sdk-m5-rc14-win32。重命名这个目录使。重命名这个目录使。重命名这个目录使。重命名这个目录使它它它它 容易管理,可能在后面章节中,尤其是当用命令行编程时这会很有用。你可能容易管理,可能在后面章节中,尤其是当用命令行编程时这会很有用。你可能容易管理,可能在后面章节中,尤其是当用命令行编程时这会很有用。你可能容易管理,可能在后面章节中,尤其是当用命令行编程时这会很有用。你可能 也会想把也会想把也会想把也会想把SDKSDKSDKSDK取出到工程文件目录。取出到工程文件目录。取出到工程文件目录。取出到工程文件目录。 4.4.4.4.安装安装安装安装AndroidAndroidAndroidAndroid SDKSDKSDKSDK最后一步是把它设入你的最后一步是把它设入你的最后一步是把它设入你的最后一步是把它设入你的PATHPATHPATHPATH变量中。如果你在使用变量中。如果你在使用变量中。如果你在使用变量中。如果你在使用 microsoftmicrosoftmicrosoftmicrosoft windowswindowswindowswindows 机器,右击机器,右击机器,右击机器,右击 ““““电脑电脑电脑电脑””””(或(或(或(或““““我的电脑我的电脑我的电脑我的电脑””””,依赖于你的,依赖于你的,依赖于你的,依赖于你的WindoWindoWindoWindowswswsws 版本),并选择版本),并选择版本),并选择版本),并选择““““属性属性属性属性””””来打开系统属性对话框。点击来打开系统属性对话框。点击来打开系统属性对话框。点击来打开系统属性对话框。点击““““高级高级高级高级””””标签。标签。标签。标签。 5.5.5.5.点击环境变量来显示同名的变量窗口,下图所示。这是你能够编辑点击环境变量来显示同名的变量窗口,下图所示。这是你能够编辑点击环境变量来显示同名的变量窗口,下图所示。这是你能够编辑点击环境变量来显示同名的变量窗口,下图所示。这是你能够编辑PATHPATHPATHPATH 变量的地方。变量的地方。变量的地方。变量的地方。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 42424242 版权©2008 McGraw-Hill 公司 6.6.6.6.在系统变量中,找到 在系统变量中,找到 在系统变量中,找到 在系统变量中,找到 PATHPATHPATHPATH变量并双击它。变量并双击它。变量并双击它。变量并双击它。 7.7.7.7.在系统变量编辑对话框中,下面所示的,添加在系统变量编辑对话框中,下面所示的,添加在系统变量编辑对话框中,下面所示的,添加在系统变量编辑对话框中,下面所示的,添加AndroidAndroidAndroidAndroid SDKSDKSDKSDK的路径的路径的路径的路径((((注意注意注意注意:::: AndroidAndroidAndroidAndroid SDKSDKSDKSDK 下的下的下的下的 toolstoolstoolstools文件夹的路径文件夹的路径文件夹的路径文件夹的路径)-)-)-)-用分号来和存在的路径分隔用分号来和存在的路径分隔用分号来和存在的路径分隔用分号来和存在的路径分隔----并点击并点击并点击并点击 OKOKOKOK来应用你的更改,再次点击环境变量窗口上的来应用你的更改,再次点击环境变量窗口上的来应用你的更改,再次点击环境变量窗口上的来应用你的更改,再次点击环境变量窗口上的OKOKOKOK。。。。 AndroidAndroidAndroidAndroid SDKSDKSDKSDK 、、、、EclipseEclipseEclipseEclipse和和和和AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件现在完整的为开发配置插件现在完整的为开发配置插件现在完整的为开发配置插件现在完整的为开发配置和和和和 准备好了。在下一章节,你将浏览准备好了。在下一章节,你将浏览准备好了。在下一章节,你将浏览准备好了。在下一章节,你将浏览AndroidAndroidAndroidAndroid SDKSDKSDKSDK,并学习它的特性。,并学习它的特性。,并学习它的特性。,并学习它的特性。AndroidAndroidAndroidAndroid SSSSDKDKDKDK 包含了很多的工具来帮助你开发完整特色的手机应用程序,下一章提供了一个包含了很多的工具来帮助你开发完整特色的手机应用程序,下一章提供了一个包含了很多的工具来帮助你开发完整特色的手机应用程序,下一章提供了一个包含了很多的工具来帮助你开发完整特色的手机应用程序,下一章提供了一个 好的概述。好的概述。好的概述。好的概述。 专家咨询专家咨询专家咨询专家咨询 Q:AndroidQ:AndroidQ:AndroidQ:Android SDKSDKSDKSDK 对于任何其他编程语言而不是对于任何其他编程语言而不是对于任何其他编程语言而不是对于任何其他编程语言而不是JavaJavaJavaJava,是可用的吗?,是可用的吗?,是可用的吗?,是可用的吗? A:A:A:A:不是,不是,不是,不是,AndroidAndroidAndroidAndroid 应用程序只是用应用程序只是用应用程序只是用应用程序只是用JavaJavaJavaJava语言来开发的。语言来开发的。语言来开发的。语言来开发的。 Q:Q:Q:Q:是不是会有是不是会有是不是会有是不是会有AndroidAndroidAndroidAndroid SDKSDKSDKSDK的升级?的升级?的升级?的升级? A:A:A:A:是的,甚至在撰写本书时,一个是的,甚至在撰写本书时,一个是的,甚至在撰写本书时,一个是的,甚至在撰写本书时,一个SDKSDKSDKSDK的更新被发布了,更新地址有可能在这的更新被发布了,更新地址有可能在这的更新被发布了,更新地址有可能在这的更新被发布了,更新地址有可能在这 个平台中发布。要获得最新的更新,我建议经常查看一下开发网页面。个平台中发布。要获得最新的更新,我建议经常查看一下开发网页面。个平台中发布。要获得最新的更新,我建议经常查看一下开发网页面。个平台中发布。要获得最新的更新,我建议经常查看一下开发网页面。 Q:Q:Q:Q:假如一个更新发布了,我怎样来升级我的假如一个更新发布了,我怎样来升级我的假如一个更新发布了,我怎样来升级我的假如一个更新发布了,我怎样来升级我的SDK?SDK?SDK?SDK? A:A:A:A:升级升级升级升级SDKSDKSDKSDK应该十分谨慎。当一个新的应该十分谨慎。当一个新的应该十分谨慎。当一个新的应该十分谨慎。当一个新的SDKSDKSDKSDK发布,一个新的插件也会被发布。发布,一个新的插件也会被发布。发布,一个新的插件也会被发布。发布,一个新的插件也会被发布。 在写本书期间,一个新的在写本书期间,一个新的在写本书期间,一个新的在写本书期间,一个新的SDKSDKSDKSDK和新的插件都发布了。我试图去使用提供的升级和新的插件都发布了。我试图去使用提供的升级和新的插件都发布了。我试图去使用提供的升级和新的插件都发布了。我试图去使用提供的升级 工具来改变版本。然而,这被证明没有结果,并使我处于两个冲突的版本中,工具来改变版本。然而,这被证明没有结果,并使我处于两个冲突的版本中,工具来改变版本。然而,这被证明没有结果,并使我处于两个冲突的版本中,工具来改变版本。然而,这被证明没有结果,并使我处于两个冲突的版本中, 没有一个正常工作。我最终不得不卸载两个版本并且只重装最新的版本。这个没有一个正常工作。我最终不得不卸载两个版本并且只重装最新的版本。这个没有一个正常工作。我最终不得不卸载两个版本并且只重装最新的版本。这个没有一个正常工作。我最终不得不卸载两个版本并且只重装最新的版本。这个 最新的最新的最新的最新的SDKSDKSDKSDK接下来正常工作了。我建议任何人可能面临从一个版本的 接下来正常工作了。我建议任何人可能面临从一个版本的 接下来正常工作了。我建议任何人可能面临从一个版本的 接下来正常工作了。我建议任何人可能面临从一个版本的 SDKSDKSDKSDK或插或插或插或插 件升级到另一个版本的时候,使用这个相同的步骤:简单的卸载老版本,并安件升级到另一个版本的时候,使用这个相同的步骤:简单的卸载老版本,并安件升级到另一个版本的时候,使用这个相同的步骤:简单的卸载老版本,并安件升级到另一个版本的时候,使用这个相同的步骤:简单的卸载老版本,并安 装新的一个版本,而不是升级。装新的一个版本,而不是升级。装新的一个版本,而不是升级。装新的一个版本,而不是升级。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 43434343 版权©2008 McGraw-Hill 公司 第四章第四章第四章第四章 浏览 浏览 浏览 浏览 AndroidAndroidAndroidAndroid SDKSDKSDKSDK AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 44444444 版权©2008 McGraw-Hill 公司 关键技术关键技术关键技术关键技术&&&&概念概念概念概念 ���� 使用使用使用使用AndroidAndroidAndroidAndroid SDKSDKSDKSDK 文档文档文档文档 ���� 使用使用使用使用AndroidAndroidAndroidAndroid SDKSDKSDKSDK 工具工具工具工具 ���� 使用例子程序使用例子程序使用例子程序使用例子程序 ���� 学习学习学习学习AndroidAndroidAndroidAndroid 应用程序生命周期应用程序生命周期应用程序生命周期应用程序生命周期 ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… 现在你有了你建立好的开发环境了,你准备去浏览一下现在你有了你建立好的开发环境了,你准备去浏览一下现在你有了你建立好的开发环境了,你准备去浏览一下现在你有了你建立好的开发环境了,你准备去浏览一下AndroidAndroidAndroidAndroid SDKSDKSDKSDK,它,它,它,它包包包包 含了许多特意帮你设计和开发运行在含了许多特意帮你设计和开发运行在含了许多特意帮你设计和开发运行在含了许多特意帮你设计和开发运行在AndroidAndroidAndroidAndroid平台上的应用程序的文件和工具平台上的应用程序的文件和工具平台上的应用程序的文件和工具平台上的应用程序的文件和工具。。。。 这些工具设计很棒并能够帮你编写出一些难以置信的应用程序。在你开始编程这些工具设计很棒并能够帮你编写出一些难以置信的应用程序。在你开始编程这些工具设计很棒并能够帮你编写出一些难以置信的应用程序。在你开始编程这些工具设计很棒并能够帮你编写出一些难以置信的应用程序。在你开始编程 之前,你需要准备去熟悉一下之前,你需要准备去熟悉一下之前,你需要准备去熟悉一下之前,你需要准备去熟悉一下AndroidAndroidAndroidAndroid SDKSDKSDKSDK和它的工具。和它的工具。和它的工具。和它的工具。 AndroidAndroidAndroidAndroid SDKSDKSDKSDK也包含一些用来在核心的也包含一些用来在核心的也包含一些用来在核心的也包含一些用来在核心的AndroidAndroidAndroidAndroid特性中(例如利用电话功特性中(例如利用电话功特性中(例如利用电话功特性中(例如利用电话功能能能能 --------打和接电话,打和接电话,打和接电话,打和接电话,GPSGPSGPSGPS功能,和文本短信功能)测试你应用程序的类库。这些类功能,和文本短信功能)测试你应用程序的类库。这些类功能,和文本短信功能)测试你应用程序的类库。这些类功能,和文本短信功能)测试你应用程序的类库。这些类库库库库 组成了组成了组成了组成了AndroidAndroidAndroidAndroid SDKSDKSDKSDK的核心部分并且是你经常会用到的一些,因此,花一些时的核心部分并且是你经常会用到的一些,因此,花一些时的核心部分并且是你经常会用到的一些,因此,花一些时的核心部分并且是你经常会用到的一些,因此,花一些时 间来学习所有的这些核心类库。间来学习所有的这些核心类库。间来学习所有的这些核心类库。间来学习所有的这些核心类库。 本章节涵盖了本章节涵盖了本章节涵盖了本章节涵盖了AndroidAndroidAndroidAndroid SDKSDKSDKSDK中包含的重点。本章最后,熟悉了中包含的重点。本章最后,熟悉了中包含的重点。本章最后,熟悉了中包含的重点。本章最后,熟悉了AndroidAndroidAndroidAndroid SDSDSDSDKKKK 内容后,你将很轻松舒适地开始写应用程序了。就像任何事一样,在你深入进内容后,你将很轻松舒适地开始写应用程序了。就像任何事一样,在你深入进内容后,你将很轻松舒适地开始写应用程序了。就像任何事一样,在你深入进内容后,你将很轻松舒适地开始写应用程序了。就像任何事一样,在你深入进 行练习之前,你必须熟悉它的内容和使用方法。行练习之前,你必须熟悉它的内容和使用方法。行练习之前,你必须熟悉它的内容和使用方法。行练习之前,你必须熟悉它的内容和使用方法。 警告:警告:警告:警告: ------------------------------------------------ 我不会每一分钟都详述我不会每一分钟都详述我不会每一分钟都详述我不会每一分钟都详述AndroidAndroidAndroidAndroid SDKSDKSDKSDK;;;;GoogleGoogleGoogleGoogle 在它的文档里做了很好的工在它的文档里做了很好的工在它的文档里做了很好的工在它的文档里做了很好的工 作。为例避免花过多时间来讨论事件事工作而不是把它们如何工作展示给你,作。为例避免花过多时间来讨论事件事工作而不是把它们如何工作展示给你,作。为例避免花过多时间来讨论事件事工作而不是把它们如何工作展示给你,作。为例避免花过多时间来讨论事件事工作而不是把它们如何工作展示给你, 我试着来让讨论尽可能简要。我只会涵盖多数重要主题和条款,剩下让你自己我试着来让讨论尽可能简要。我只会涵盖多数重要主题和条款,剩下让你自己我试着来让讨论尽可能简要。我只会涵盖多数重要主题和条款,剩下让你自己我试着来让讨论尽可能简要。我只会涵盖多数重要主题和条款,剩下让你自己 用你的速度自由地深入浏览。用你的速度自由地深入浏览。用你的速度自由地深入浏览。用你的速度自由地深入浏览。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 45454545 版权©2008 McGraw-Hill 公司 AndroidAndroidAndroidAndroid SDK SDK SDK SDK 中有什么中有什么中有什么中有什么???? AndroidAndroidAndroidAndroid SDKSDKSDKSDK 以一个简单的以一个简单的以一个简单的以一个简单的zip zip zip zip 压缩包来下载(如第三章描述)。压缩包来下载(如第三章描述)。压缩包来下载(如第三章描述)。压缩包来下载(如第三章描述)。AndroidAndroidAndroidAndroid SDKSDKSDKSDK的体积,以数字来算文件的话,包括了文档编程的体积,以数字来算文件的话,包括了文档编程的体积,以数字来算文件的话,包括了文档编程的体积,以数字来算文件的话,包括了文档编程APIsAPIsAPIsAPIs,工具和一些组成剩,工具和一些组成剩,工具和一些组成剩,工具和一些组成剩 下部分的例子。本篇提供了近距离的正确审视下部分的例子。本篇提供了近距离的正确审视下部分的例子。本篇提供了近距离的正确审视下部分的例子。本篇提供了近距离的正确审视AndroidAndroidAndroidAndroid SDKSDKSDKSDK中包含了什么。中包含了什么。中包含了什么。中包含了什么。 贴士:贴士:贴士:贴士: ---------------------------------------------------------------- 第三章第三章第三章第三章建议你把建议你把建议你把建议你把AndroidAndroidAndroidAndroid SDKSDKSDKSDK解压到解压到解压到解压到"Program"Program"Program"Program Files"Files"Files"Files"目录下,以便跟踪更目录下,以便跟踪更目录下,以便跟踪更目录下,以便跟踪更 简单。由于你使用了默认的解压设置,如果你在找简单。由于你使用了默认的解压设置,如果你在找简单。由于你使用了默认的解压设置,如果你在找简单。由于你使用了默认的解压设置,如果你在找SDKSDKSDKSDK时有困难,它应该在以时有困难,它应该在以时有困难,它应该在以时有困难,它应该在以 下的文件夹中:下的文件夹中:下的文件夹中:下的文件夹中: /%/%/%/%下载目录下载目录下载目录下载目录%/android-sdk_m5-rc14-windows/android-sdk-m5-rc14_windows%/android-sdk_m5-rc14-windows/android-sdk-m5-rc14_windows%/android-sdk_m5-rc14-windows/android-sdk-m5-rc14_windows%/android-sdk_m5-rc14-windows/android-sdk-m5-rc14_windows。。。。 进入你解压进入你解压进入你解压进入你解压AndroidAndroidAndroidAndroid SDKSDKSDKSDK的地方,以便你能开始浏览里面的文件结构。有的地方,以便你能开始浏览里面的文件结构。有的地方,以便你能开始浏览里面的文件结构。有的地方,以便你能开始浏览里面的文件结构。有一一一一 些文件在根目录,像 些文件在根目录,像 些文件在根目录,像 些文件在根目录,像 android.jarandroid.jarandroid.jarandroid.jar(一个被编译过的 (一个被编译过的 (一个被编译过的 (一个被编译过的 JavaJavaJavaJava应用程序,它包含核应用程序,它包含核应用程序,它包含核应用程序,它包含核 心心心心SDKSDKSDKSDK类库和类库和类库和类库和APIsAPIsAPIsAPIs)和一些发布记录,)和一些发布记录,)和一些发布记录,)和一些发布记录,AndroidAndroidAndroidAndroid SDKSDKSDKSDK余下部分被分隔进三个主余下部分被分隔进三个主余下部分被分隔进三个主余下部分被分隔进三个主 文件夹中:文件夹中:文件夹中:文件夹中: � Doc 包含所有包含所有包含所有包含所有AndroidAndroidAndroidAndroid 的伴随文档的伴随文档的伴随文档的伴随文档 注意:注意:注意:注意: ------------------------------------------------ 在在在在DocsDocsDocsDocs文件夹下找得到的很多文档在文件夹下找得到的很多文档在文件夹下找得到的很多文档在文件夹下找得到的很多文档在http://code.google.com/androidhttp://code.google.com/androidhttp://code.google.com/androidhttp://code.google.com/android AndroidAndroidAndroidAndroid 开发网站中也能找到。开发网站中也能找到。开发网站中也能找到。开发网站中也能找到。 � Samples 包含你可以在包含你可以在包含你可以在包含你可以在EclipseEclipseEclipseEclipse中编译,测试的六个例子程序。中编译,测试的六个例子程序。中编译,测试的六个例子程序。中编译,测试的六个例子程序。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 46464646 版权©2008 McGraw-Hill 公司 � Tools 包含所有开发、编译和调试工具,在你开发包含所有开发、编译和调试工具,在你开发包含所有开发、编译和调试工具,在你开发包含所有开发、编译和调试工具,在你开发AndroidAndroidAndroidAndroid 应用程序过程中你会应用程序过程中你会应用程序过程中你会应用程序过程中你会 需要它们。需要它们。需要它们。需要它们。 关于每个关于每个关于每个关于每个SDKSDKSDKSDK文件夹中包含什么,接下来的篇章讨论更多细节。为了展示文件夹中包含什么,接下来的篇章讨论更多细节。为了展示文件夹中包含什么,接下来的篇章讨论更多细节。为了展示文件夹中包含什么,接下来的篇章讨论更多细节。为了展示 AndroidAndroidAndroidAndroid 的功能,每个的功能,每个的功能,每个的功能,每个APIAPIAPIAPI DemoDemoDemoDemo 被编译和运行。当你学怎样用被编译和运行。当你学怎样用被编译和运行。当你学怎样用被编译和运行。当你学怎样用MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows 和和和和LinuxLinuxLinuxLinux 的命令行来创建和编译应用程序时,许多工具会在后面章节的命令行来创建和编译应用程序时,许多工具会在后面章节的命令行来创建和编译应用程序时,许多工具会在后面章节的命令行来创建和编译应用程序时,许多工具会在后面章节 被讨论和展示。被讨论和展示。被讨论和展示。被讨论和展示。 AndroidAndroidAndroidAndroid 文档文档文档文档 AndroidAndroidAndroidAndroid文档位于文档位于文档位于文档位于AndroidAndroidAndroidAndroid SDKSDKSDKSDK里的里的里的里的DocsDocsDocsDocs文件夹中在文件夹中在文件夹中在文件夹中在/%sdk/%sdk/%sdk/%sdk 文件夹文件夹文件夹文件夹%/DOCS%/DOCS%/DOCS%/DOCS 下。和下。和下。和下。和AndroidAndroidAndroidAndroid SDKSDKSDKSDK一起被提供的一起被提供的一起被提供的一起被提供的AndroidAndroidAndroidAndroid 文档包括下载和安装 文档包括下载和安装 文档包括下载和安装 文档包括下载和安装 SDKSDKSDKSDK的步骤、的步骤、的步骤、的步骤、 快速开始开发应用程序的步骤、包的定义。这个文档是 快速开始开发应用程序的步骤、包的定义。这个文档是 快速开始开发应用程序的步骤、包的定义。这个文档是 快速开始开发应用程序的步骤、包的定义。这个文档是 HTMLHTMLHTMLHTML格式的并能在格式的并能在格式的并能在格式的并能在SDKSDKSDKSDK 文件夹根目录下通过 文件夹根目录下通过 文件夹根目录下通过 文件夹根目录下通过 documentation.htmldocumentation.htmldocumentation.htmldocumentation.html来使用。下图描述了来使用。下图描述了来使用。下图描述了来使用。下图描述了AndroidAndroidAndroidAndroid SDKSDKSDKSDK文文文文 档的主页面。档的主页面。档的主页面。档的主页面。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 47474747 版权©2008 McGraw-Hill 公司 通过通过通过通过documentation.htmldocumentation.htmldocumentation.htmldocumentation.html中的超链接,你可以导航到中的超链接,你可以导航到中的超链接,你可以导航到中的超链接,你可以导航到AndroidAndroidAndroidAndroid SDKSDKSDKSDK中包含中包含中包含中包含 的所有文档。的所有文档。的所有文档。的所有文档。 警告:警告:警告:警告: ------------------------------------------------ 当你进入当你进入当你进入当你进入AndroidAndroidAndroidAndroid SDKSDKSDKSDK,当你点击一些链接时,你可能会想一些页面好像,当你点击一些链接时,你可能会想一些页面好像,当你点击一些链接时,你可能会想一些页面好像,当你点击一些链接时,你可能会想一些页面好像是是是是 丢失链接或是丢失了,因为右边的屏幕可能是空的。然而,如果你滚动下来你丢失链接或是丢失了,因为右边的屏幕可能是空的。然而,如果你滚动下来你丢失链接或是丢失了,因为右边的屏幕可能是空的。然而,如果你滚动下来你丢失链接或是丢失了,因为右边的屏幕可能是空的。然而,如果你滚动下来你 会看到只是没有排好版的页面。会看到只是没有排好版的页面。会看到只是没有排好版的页面。会看到只是没有排好版的页面。 使用使用使用使用AndroidAndroidAndroidAndroid SDKSDKSDKSDK来工作,我发现文档的一些篇幅我比其他更偏爱。对我来工作,我发现文档的一些篇幅我比其他更偏爱。对我来工作,我发现文档的一些篇幅我比其他更偏爱。对我来工作,我发现文档的一些篇幅我比其他更偏爱。对我来来来来 说,说,说,说,AndroidAndroidAndroidAndroid 文档最有价值的部分是下面第一些:(正如在导航栏中出现的)文档最有价值的部分是下面第一些:(正如在导航栏中出现的)文档最有价值的部分是下面第一些:(正如在导航栏中出现的)文档最有价值的部分是下面第一些:(正如在导航栏中出现的) AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 48484848 版权©2008 McGraw-Hill 公司 ���� 参考信息参考信息参考信息参考信息 ���� ClassClassClassClass 索引索引索引索引 ���� 许可列表许可列表许可列表许可列表 ���� 资源类型清单资源类型清单资源类型清单资源类型清单 ���� 常见问题常见问题常见问题常见问题 ���� 故障、维修表故障、维修表故障、维修表故障、维修表 当你开始出差错时,故障、维修表(文档的一小部分)将会十分地有帮助。当你开始出差错时,故障、维修表(文档的一小部分)将会十分地有帮助。当你开始出差错时,故障、维修表(文档的一小部分)将会十分地有帮助。当你开始出差错时,故障、维修表(文档的一小部分)将会十分地有帮助。 当你通过本书来继续,并开始开发你自己的当你通过本书来继续,并开始开发你自己的当你通过本书来继续,并开始开发你自己的当你通过本书来继续,并开始开发你自己的AndroidAndroidAndroidAndroid应用程序时,你将会发现应用程序时,你将会发现应用程序时,你将会发现应用程序时,你将会发现 文档的这参考信息部分更有帮助。例如,当你照本书处理创建更复杂应用程序文档的这参考信息部分更有帮助。例如,当你照本书处理创建更复杂应用程序文档的这参考信息部分更有帮助。例如,当你照本书处理创建更复杂应用程序文档的这参考信息部分更有帮助。例如,当你照本书处理创建更复杂应用程序 的篇幅前进时,许可列表部分将会对你很有用,而现在它对你没有一点用处。的篇幅前进时,许可列表部分将会对你很有用,而现在它对你没有一点用处。的篇幅前进时,许可列表部分将会对你很有用,而现在它对你没有一点用处。的篇幅前进时,许可列表部分将会对你很有用,而现在它对你没有一点用处。 花一些时间来熟悉 花一些时间来熟悉 花一些时间来熟悉 花一些时间来熟悉 AndroidAndroidAndroidAndroid SDKSDKSDKSDK文档和提供给你的成百的文档。文档和提供给你的成百的文档。文档和提供给你的成百的文档。文档和提供给你的成百的文档。 AndroidAndroidAndroidAndroid 示例示例示例示例 示例文件夹,示例文件夹,示例文件夹,示例文件夹,/%sdk/%sdk/%sdk/%sdk 文件夹文件夹文件夹文件夹%/SAMPLES%/SAMPLES%/SAMPLES%/SAMPLES,包含六个展示一个好的,包含六个展示一个好的,包含六个展示一个好的,包含六个展示一个好的AndroidAndroidAndroidAndroid 功功功功 能横截面的例子程序。能横截面的例子程序。能横截面的例子程序。能横截面的例子程序。 ���� APIAPIAPIAPI DemoDemoDemoDemo ((((APIAPIAPIAPI 样例)样例)样例)样例) ���� HelloHelloHelloHello,,,,Activity!Activity!Activity!Activity! ���� LunarLunarLunarLunar LanderLanderLanderLander (月球发射)(月球发射)(月球发射)(月球发射) ���� NotePadNotePadNotePadNotePad(记事本)(记事本)(记事本)(记事本) ���� SkeletonSkeletonSkeletonSkeleton APPAPPAPPAPP (框架程序)(框架程序)(框架程序)(框架程序) ���� SnakeSnakeSnakeSnake(贪食蛇)(贪食蛇)(贪食蛇)(贪食蛇) 这些用来给你一个怎样开发这些用来给你一个怎样开发这些用来给你一个怎样开发这些用来给你一个怎样开发AndroidAndroidAndroidAndroid应用程序的快速思路的例子程序由应用程序的快速思路的例子程序由应用程序的快速思路的例子程序由应用程序的快速思路的例子程序由 GoogleGoogleGoogleGoogle提供。每个示例程序都展示了提供。每个示例程序都展示了提供。每个示例程序都展示了提供。每个示例程序都展示了AndroidAndroidAndroidAndroid 功能的不同面。你可以在功能的不同面。你可以在功能的不同面。你可以在功能的不同面。你可以在EclipEclipEclipEclipsesesese 中来打开和运行这些程序。下面是每个程序的一个简单描述。中来打开和运行这些程序。下面是每个程序的一个简单描述。中来打开和运行这些程序。下面是每个程序的一个简单描述。中来打开和运行这些程序。下面是每个程序的一个简单描述。 APIAPIAPIAPI DemoDemoDemoDemo AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 49494949 版权©2008 McGraw-Hill 公司 APIAPIAPIAPI DemoDemoDemoDemo是一个以单个是一个以单个是一个以单个是一个以单个ActivityActivityActivityActivity来展示多种来展示多种来展示多种来展示多种APIAPIAPIAPI功能的主程序。功能的主程序。功能的主程序。功能的主程序。 注意:注意:注意:注意: ------------------------------------------------ 一个一个一个一个Activity Activity Activity Activity 是一个是一个是一个是一个AndroidAndroidAndroidAndroid 应用程序。应用程序。应用程序。应用程序。Activity Activity Activity Activity 在后面章节涵盖得更深入在后面章节涵盖得更深入在后面章节涵盖得更深入在后面章节涵盖得更深入。。。。 APIAPIAPIAPI DemoDemoDemoDemo 程序,如下图所示,包含多种、更小的程序,如下图所示,包含多种、更小的程序,如下图所示,包含多种、更小的程序,如下图所示,包含多种、更小的AndroidAndroidAndroidAndroid不同功能的示不同功能的示不同功能的示不同功能的示例 。例 。例 。例 。 这些许多被包含在 这些许多被包含在 这些许多被包含在 这些许多被包含在 APIAPIAPIAPI DemoDemoDemoDemo例子中的程序包含了 例子中的程序包含了 例子中的程序包含了 例子中的程序包含了 3D3D3D3D图像转换、列表、前图像转换、列表、前图像转换、列表、前图像转换、列表、前进进进进 对话框和一个触摸屏画图样例。对话框和一个触摸屏画图样例。对话框和一个触摸屏画图样例。对话框和一个触摸屏画图样例。 尝试尝试尝试尝试:运行:运行:运行:运行APIAPIAPIAPI DemoDemoDemoDemo 例子程序例子程序例子程序例子程序 使用使用使用使用EclipseEclipseEclipseEclipse把把把把APIAPIAPIAPI DemosDemosDemosDemos作为新的作为新的作为新的作为新的AndroidAndroidAndroidAndroid 工程项目加载。要这样进行,从工程项目加载。要这样进行,从工程项目加载。要这样进行,从工程项目加载。要这样进行,从 EclipseEclipseEclipseEclipse菜单栏中选择菜单栏中选择菜单栏中选择菜单栏中选择File|New|ProjectFile|New|ProjectFile|New|ProjectFile|New|Project;一个新的;一个新的;一个新的;一个新的AndroidAndroidAndroidAndroid 工程项目向导就工程项目向导就工程项目向导就工程项目向导就 打开了。从现在不要担心在这个向导中的选项了。选择打开了。从现在不要担心在这个向导中的选项了。选择打开了。从现在不要担心在这个向导中的选项了。选择打开了。从现在不要担心在这个向导中的选项了。选择““““从已有的资源创建工从已有的资源创建工从已有的资源创建工从已有的资源创建工 程程程程””””并浏览加载有并浏览加载有并浏览加载有并浏览加载有APIAPIAPIAPI DemoDemoDemoDemo运用程序的文件夹到里面。当工程已经加载,选运用程序的文件夹到里面。当工程已经加载,选运用程序的文件夹到里面。当工程已经加载,选运用程序的文件夹到里面。当工程已经加载,选择择择择 ““““RunRunRunRun””””来看看它在来看看它在来看看它在来看看它在AndroidAndroidAndroidAndroid模拟器中执行。模拟器中执行。模拟器中执行。模拟器中执行。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 50505050 版权©2008 McGraw-Hill 公司 你自己导航到超过四十多个不同程序来观看演示。使用每一个程序来让你你自己导航到超过四十多个不同程序来观看演示。使用每一个程序来让你你自己导航到超过四十多个不同程序来观看演示。使用每一个程序来让你你自己导航到超过四十多个不同程序来观看演示。使用每一个程序来让你熟熟熟熟 悉一下每一个悉一下每一个悉一下每一个悉一下每一个APIAPIAPIAPI工具所展示的技术和功能。工具所展示的技术和功能。工具所展示的技术和功能。工具所展示的技术和功能。 Hello,Activity ! 在下图展示的图中的 在下图展示的图中的 在下图展示的图中的 在下图展示的图中的 HelloHelloHelloHello,,,,ActivityActivityActivityActivity!运用程序是一个简单的!运用程序是一个简单的!运用程序是一个简单的!运用程序是一个简单的HelloWorlHelloWorlHelloWorlHelloWorldddd!!!! --------典型的例子。虽然它内部设计简单,典型的例子。虽然它内部设计简单,典型的例子。虽然它内部设计简单,典型的例子。虽然它内部设计简单,HelloHelloHelloHello,,,,ActivityActivityActivityActivity!很好的展示出了这!很好的展示出了这!很好的展示出了这!很好的展示出了这个个个个 平台的能力。你将会在下一章节中创建你自己的平台的能力。你将会在下一章节中创建你自己的平台的能力。你将会在下一章节中创建你自己的平台的能力。你将会在下一章节中创建你自己的HelloWorldHelloWorldHelloWorldHelloWorld!(经典程序)!(经典程序)!(经典程序)!(经典程序) AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 51515151 版权©2008 McGraw-Hill 公司 Lunar Lander(月球登陆) 下一图中展示的下一图中展示的下一图中展示的下一图中展示的““““月球登陆月球登陆月球登陆月球登陆””””是一个在是一个在是一个在是一个在AndroidAndroidAndroidAndroid模拟器上运行的小游戏。模拟器上运行的小游戏。模拟器上运行的小游戏。模拟器上运行的小游戏。““““月月月月 球登陆球登陆球登陆球登陆””””展示了展示了展示了展示了2D2D2D2D游戏在游戏在游戏在游戏在AndroidAndroidAndroidAndroid上是如何工作的。控制十分简单,并且这上是如何工作的。控制十分简单,并且这上是如何工作的。控制十分简单,并且这上是如何工作的。控制十分简单,并且这个个个个 游戏也不是非常复杂。而给了这些基本的东西,它对于游戏开发来说是一个很游戏也不是非常复杂。而给了这些基本的东西,它对于游戏开发来说是一个很游戏也不是非常复杂。而给了这些基本的东西,它对于游戏开发来说是一个很游戏也不是非常复杂。而给了这些基本的东西,它对于游戏开发来说是一个很 好的入门点。好的入门点。好的入门点。好的入门点。 ““““月球登陆月球登陆月球登陆月球登陆””””实现了一个简单的控制方法(上,下,左,右)。这个游戏也实现了一个简单的控制方法(上,下,左,右)。这个游戏也实现了一个简单的控制方法(上,下,左,右)。这个游戏也实现了一个简单的控制方法(上,下,左,右)。这个游戏也 显示了这个平台给出的给人深刻印象的相对地流动图和样式。如碰撞检测这样显示了这个平台给出的给人深刻印象的相对地流动图和样式。如碰撞检测这样显示了这个平台给出的给人深刻印象的相对地流动图和样式。如碰撞检测这样显示了这个平台给出的给人深刻印象的相对地流动图和样式。如碰撞检测这样 复杂的游戏理论是用一个简单的方法实现的。虽然本书没有涵盖为复杂的游戏理论是用一个简单的方法实现的。虽然本书没有涵盖为复杂的游戏理论是用一个简单的方法实现的。虽然本书没有涵盖为复杂的游戏理论是用一个简单的方法实现的。虽然本书没有涵盖为AndroidAndroidAndroidAndroid平平平平 台开发游戏,假如你很感兴趣做这个,你可能会想看看台开发游戏,假如你很感兴趣做这个,你可能会想看看台开发游戏,假如你很感兴趣做这个,你可能会想看看台开发游戏,假如你很感兴趣做这个,你可能会想看看““““月球登陆月球登陆月球登陆月球登陆””””来获得一来获得一来获得一来获得一 些启发。些启发。些启发。些启发。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 52525252 版权©2008 McGraw-Hill 公司 Note Pad(记事本) 如下图所示的记事本,它允许你打开、创建和编辑一些小记录。如下图所示的记事本,它允许你打开、创建和编辑一些小记录。如下图所示的记事本,它允许你打开、创建和编辑一些小记录。如下图所示的记事本,它允许你打开、创建和编辑一些小记录。NotePadNotePadNotePadNotePad不不不不 是一个全功能的文字编辑器,因此,不要期望它能够做一些事来和是一个全功能的文字编辑器,因此,不要期望它能够做一些事来和是一个全功能的文字编辑器,因此,不要期望它能够做一些事来和是一个全功能的文字编辑器,因此,不要期望它能够做一些事来和WindowsWindowsWindowsWindows MobileMobileMobileMobile的的的的WordWordWordWord媲美。然而,它作为一个用来展示相对少量的代码可能完成的媲美。然而,它作为一个用来展示相对少量的代码可能完成的媲美。然而,它作为一个用来展示相对少量的代码可能完成的媲美。然而,它作为一个用来展示相对少量的代码可能完成的程程程程 序的示范工具是做得很好、有效的。序的示范工具是做得很好、有效的。序的示范工具是做得很好、有效的。序的示范工具是做得很好、有效的。 Skeleton APP(框架程序) 下图所示的框架程序是一个应用程序框架。这是一个更简单的展示了一对下图所示的框架程序是一个应用程序框架。这是一个更简单的展示了一对下图所示的框架程序是一个应用程序框架。这是一个更简单的展示了一对下图所示的框架程序是一个应用程序框架。这是一个更简单的展示了一对不不不不 同的应用程序特性功能(如字体、按钮、图片、表单)的基础程序。如果你只同的应用程序特性功能(如字体、按钮、图片、表单)的基础程序。如果你只同的应用程序特性功能(如字体、按钮、图片、表单)的基础程序。如果你只同的应用程序特性功能(如字体、按钮、图片、表单)的基础程序。如果你只 是通过它自己来运行框架程序,你实际上不会得到它之外多的东西。通过参考是通过它自己来运行框架程序,你实际上不会得到它之外多的东西。通过参考是通过它自己来运行框架程序,你实际上不会得到它之外多的东西。通过参考是通过它自己来运行框架程序,你实际上不会得到它之外多的东西。通过参考 ““““SkeletonSkeletonSkeletonSkeleton APPAPPAPPAPP框架程序框架程序框架程序框架程序””””,它作为怎样实现特别条目的资源,你将会被更好,它作为怎样实现特别条目的资源,你将会被更好,它作为怎样实现特别条目的资源,你将会被更好,它作为怎样实现特别条目的资源,你将会被更好的的的的 服务。服务。服务。服务。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 53535353 版权©2008 McGraw-Hill 公司 Snake(贪食蛇) 最后一个包最后一个包最后一个包最后一个包 含在含在含在含在AndroidSDKAndroidSDKAndroidSDKAndroidSDK 中的例子是中的例子是中的例子是中的例子是""""贪贪贪贪 食蛇食蛇食蛇食蛇"""",这是一,这是一,这是一,这是一个个个个 比起比起比起比起""""月球登陆月球登陆月球登陆月球登陆"""" 更单纯化的更单纯化的更单纯化的更单纯化的 "SNAFU""SNAFU""SNAFU""SNAFU"风格的风格的风格的风格的 小游戏。这幅图小游戏。这幅图小游戏。这幅图小游戏。这幅图 展示了展示了展示了展示了""""贪食蛇贪食蛇贪食蛇贪食蛇"""" 运行的界面。运行的界面。运行的界面。运行的界面。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 54545454 版权©2008 McGraw-Hill 公司 注意:注意:注意:注意: ---------------------------------------------------------------------------------------- 如果你导航进入到每一个例子程序的根文件夹中,你将看到一个命名为 如果你导航进入到每一个例子程序的根文件夹中,你将看到一个命名为 如果你导航进入到每一个例子程序的根文件夹中,你将看到一个命名为 如果你导航进入到每一个例子程序的根文件夹中,你将看到一个命名为 srsrsrsrcccc 的文件夹。这是给出例子的源代码文件夹。你可以用这个来看、编辑和为任何的文件夹。这是给出例子的源代码文件夹。你可以用这个来看、编辑和为任何的文件夹。这是给出例子的源代码文件夹。你可以用这个来看、编辑和为任何的文件夹。这是给出例子的源代码文件夹。你可以用这个来看、编辑和为任何 应用程序来重编译这个代码。利用这个源代码来学习一些关于应用程序来重编译这个代码。利用这个源代码来学习一些关于应用程序来重编译这个代码。利用这个源代码来学习一些关于应用程序来重编译这个代码。利用这个源代码来学习一些关于AndroidAndroidAndroidAndroid平台的平台的平台的平台的 技巧和条目。技巧和条目。技巧和条目。技巧和条目。 AndroidAndroidAndroidAndroid 工具工具工具工具 AndroidAndroidAndroidAndroid SDKSDKSDKSDK为开发者支持了一系列强大和有用的工具。到本书结尾,你为开发者支持了一系列强大和有用的工具。到本书结尾,你为开发者支持了一系列强大和有用的工具。到本书结尾,你为开发者支持了一系列强大和有用的工具。到本书结尾,你将将将将 只是很少的直接来使用它们。本篇幅只是来快速浏览一下这些工具中的一些,只是很少的直接来使用它们。本篇幅只是来快速浏览一下这些工具中的一些,只是很少的直接来使用它们。本篇幅只是来快速浏览一下这些工具中的一些,只是很少的直接来使用它们。本篇幅只是来快速浏览一下这些工具中的一些, 当你进入命令行开发时,这些工具在以后章节中将会涵盖得更深层。当你进入命令行开发时,这些工具在以后章节中将会涵盖得更深层。当你进入命令行开发时,这些工具在以后章节中将会涵盖得更深层。当你进入命令行开发时,这些工具在以后章节中将会涵盖得更深层。 注意:注意:注意:注意: ---------------------------------------------------------------------------- 更多关于更多关于更多关于更多关于AndroidAndroidAndroidAndroid SDKSDKSDKSDK中包含的其他工具的信息,查阅中包含的其他工具的信息,查阅中包含的其他工具的信息,查阅中包含的其他工具的信息,查阅AndroidAndroidAndroidAndroid 文档。文档。文档。文档。 emulator.exe 毋庸置疑,毋庸置疑,毋庸置疑,毋庸置疑,AndroidAndroidAndroidAndroid SDKSDKSDKSDK中包含的一个最重要的工具是中包含的一个最重要的工具是中包含的一个最重要的工具是中包含的一个最重要的工具是emulator.exeemulator.exeemulator.exeemulator.exe。。。。 emulator.exeemulator.exeemulator.exeemulator.exe 运行运行运行运行AndroidAndroidAndroidAndroid模拟器。模拟器。模拟器。模拟器。AndroidAndroidAndroidAndroid模拟器用来在模拟器用来在模拟器用来在模拟器用来在AndroidAndroidAndroidAndroid仿真环境仿真环境仿真环境仿真环境 下运行你的应用程序下运行你的应用程序下运行你的应用程序下运行你的应用程序 。当写这本书时,还没有。当写这本书时,还没有。当写这本书时,还没有。当写这本书时,还没有AndroidAndroidAndroidAndroid平台的硬件设备发布,平台的硬件设备发布,平台的硬件设备发布,平台的硬件设备发布, emulator.exeemulator.exeemulator.exeemulator.exe将会是你唯一将会是你唯一将会是你唯一将会是你唯一““““本地本地本地本地””””平台测试应用程序的途径。平台测试应用程序的途径。平台测试应用程序的途径。平台测试应用程序的途径。 你可以在命令行下运行你可以在命令行下运行你可以在命令行下运行你可以在命令行下运行AndroidAndroidAndroidAndroid模拟器或是从模拟器或是从模拟器或是从模拟器或是从EclipseEclipseEclipseEclipse中执行它。在本书中执行它。在本书中执行它。在本书中执行它。在本书中 ,中 ,中 ,中 , 你通常是让你通常是让你通常是让你通常是让EclipseEclipseEclipseEclipse来为你运行来为你运行来为你运行来为你运行AndroidAndroidAndroidAndroid模拟器环境。然而,在模拟器环境。然而,在模拟器环境。然而,在模拟器环境。然而,在EclipseEclipseEclipseEclipse外用外用外用外用 AndroidAndroidAndroidAndroid SDKSDKSDKSDK开发,在兴趣上给你了所有你需要的信息,当你创建你的 开发,在兴趣上给你了所有你需要的信息,当你创建你的 开发,在兴趣上给你了所有你需要的信息,当你创建你的 开发,在兴趣上给你了所有你需要的信息,当你创建你的 HelloWorldHelloWorldHelloWorldHelloWorld!程序时第六章节涵盖了命令行使用!程序时第六章节涵盖了命令行使用!程序时第六章节涵盖了命令行使用!程序时第六章节涵盖了命令行使用emulator.exeemulator.exeemulator.exeemulator.exe 当使用当使用当使用当使用AndroidAndroidAndroidAndroid模拟器来调试你的应用程序时,你有两种导航用户界面的模拟器来调试你的应用程序时,你有两种导航用户界面的模拟器来调试你的应用程序时,你有两种导航用户界面的模拟器来调试你的应用程序时,你有两种导航用户界面的选选选选 择。第一个,模拟器自带的可用按钮,如图择。第一个,模拟器自带的可用按钮,如图择。第一个,模拟器自带的可用按钮,如图择。第一个,模拟器自带的可用按钮,如图4-14-14-14-1所示。你能使用这些按钮来导所示。你能使用这些按钮来导所示。你能使用这些按钮来导所示。你能使用这些按钮来导 航航航航AndroidAndroidAndroidAndroid和所有你为这平台开发的应用程序。和所有你为这平台开发的应用程序。和所有你为这平台开发的应用程序。和所有你为这平台开发的应用程序。 贴士:贴士:贴士:贴士: ------------------------------------------------------------------------ 电源开电源开电源开电源开////关、音量升关、音量升关、音量升关、音量升////减按钮被隐藏在虚拟设备的边上。当你把鼠标放到它减按钮被隐藏在虚拟设备的边上。当你把鼠标放到它减按钮被隐藏在虚拟设备的边上。当你把鼠标放到它减按钮被隐藏在虚拟设备的边上。当你把鼠标放到它们们们们 上面时,它们就会标示出来。上面时,它们就会标示出来。上面时,它们就会标示出来。上面时,它们就会标示出来。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 55555555 版权©2008 McGraw-Hill 公司 图图图图4-14-14-14-1 AndroidAndroidAndroidAndroid 模拟器导航模拟器导航模拟器导航模拟器导航 现在很多高端手机包含了触摸屏,当你使用模拟器时你拥有的第二种输入现在很多高端手机包含了触摸屏,当你使用模拟器时你拥有的第二种输入现在很多高端手机包含了触摸屏,当你使用模拟器时你拥有的第二种输入现在很多高端手机包含了触摸屏,当你使用模拟器时你拥有的第二种输入选选选选 择是仿真触摸屏。你把鼠标当做触摸笔。通过使用鼠标,在模拟器屏幕上的物择是仿真触摸屏。你把鼠标当做触摸笔。通过使用鼠标,在模拟器屏幕上的物择是仿真触摸屏。你把鼠标当做触摸笔。通过使用鼠标,在模拟器屏幕上的物择是仿真触摸屏。你把鼠标当做触摸笔。通过使用鼠标,在模拟器屏幕上的物 件将会有交互反映。件将会有交互反映。件将会有交互反映。件将会有交互反映。 adb.exe 另一个当你正在使用命令行开发时将会变得非常有用的工具是另一个当你正在使用命令行开发时将会变得非常有用的工具是另一个当你正在使用命令行开发时将会变得非常有用的工具是另一个当你正在使用命令行开发时将会变得非常有用的工具是AndroidAndroidAndroidAndroid调调调调 试桥或者试桥或者试桥或者试桥或者adbadbadbadb((((adb.exeadb.exeadb.exeadb.exe)。这个工具允许你对)。这个工具允许你对)。这个工具允许你对)。这个工具允许你对Emulator.exeEmulator.exeEmulator.exeEmulator.exe工具发出命令。当工具发出命令。当工具发出命令。当工具发出命令。当 你正在命令行开发环境下,你正在命令行开发环境下,你正在命令行开发环境下,你正在命令行开发环境下,adbadbadbadb工具允许你做以下的:工具允许你做以下的:工具允许你做以下的:工具允许你做以下的: ���� 启动和关闭服务启动和关闭服务启动和关闭服务启动和关闭服务 ���� 安装和卸载应用程序安装和卸载应用程序安装和卸载应用程序安装和卸载应用程序 ���� 从模拟器中移出文件或把文件移进模拟器从模拟器中移出文件或把文件移进模拟器从模拟器中移出文件或把文件移进模拟器从模拟器中移出文件或把文件移进模拟器 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 56565656 版权©2008 McGraw-Hill 公司 MKSDCARD.exe 假如你将测试一个需要从一张插入移动设备的假如你将测试一个需要从一张插入移动设备的假如你将测试一个需要从一张插入移动设备的假如你将测试一个需要从一张插入移动设备的SDSDSDSD存储卡中读或写文件的应存储卡中读或写文件的应存储卡中读或写文件的应存储卡中读或写文件的应 用程序,用程序,用程序,用程序,MKSDCARD.exeMKSDCARD.exeMKSDCARD.exeMKSDCARD.exe 是一个非常有用的工具。是一个非常有用的工具。是一个非常有用的工具。是一个非常有用的工具。MKSDCARD.exeMKSDCARD.exeMKSDCARD.exeMKSDCARD.exe 在你的硬盘上在你的硬盘上在你的硬盘上在你的硬盘上 创建一个将装有、保存测试文件的小硬盘分区。模拟器将把这个分区当做一个创建一个将装有、保存测试文件的小硬盘分区。模拟器将把这个分区当做一个创建一个将装有、保存测试文件的小硬盘分区。模拟器将把这个分区当做一个创建一个将装有、保存测试文件的小硬盘分区。模拟器将把这个分区当做一个 真正的真正的真正的真正的SDSDSDSD存储卡。存储卡。存储卡。存储卡。 DX.exe DX.exeDX.exeDX.exeDX.exe是是是是AndroidAndroidAndroidAndroid SDKSDKSDKSDK的编译器。当再次运行你的的编译器。当再次运行你的的编译器。当再次运行你的的编译器。当再次运行你的JavaJavaJavaJava文件,文件,文件,文件,DX.exeDX.exeDX.exeDX.exe将将将将生生生生 成后缀名为成后缀名为成后缀名为成后缀名为.dex.dex.dex.dex的文件的文件的文件的文件--Dalvik--Dalvik--Dalvik--Dalvik可执行格式。这些文件是被解析、运行在可执行格式。这些文件是被解析、运行在可执行格式。这些文件是被解析、运行在可执行格式。这些文件是被解析、运行在 AndroidAndroidAndroidAndroid设备上的正确格式。设备上的正确格式。设备上的正确格式。设备上的正确格式。 注意:注意:注意:注意: ---------------------------------------------------- AndroidAndroidAndroidAndroid 可执行文件被叫做 可执行文件被叫做 可执行文件被叫做 可执行文件被叫做 DalvikDalvikDalvikDalvik可执行文件,作为 可执行文件,作为 可执行文件,作为 可执行文件,作为 AndroidAndroidAndroidAndroid用来运所有用来运所有用来运所有用来运所有 应用程序的应用程序的应用程序的应用程序的DalvikDalvikDalvikDalvik虚拟机相关的文件。虚拟机相关的文件。虚拟机相关的文件。虚拟机相关的文件。DalvikDalvikDalvikDalvik虚拟机在每个应用程序自己的虚拟机在每个应用程序自己的虚拟机在每个应用程序自己的虚拟机在每个应用程序自己的进进进进 程中使用和程中使用和程中使用和程中使用和AndroidAndroidAndroidAndroid核心应用程序相同的优先级运行这个应用程序。核心应用程序相同的优先级运行这个应用程序。核心应用程序相同的优先级运行这个应用程序。核心应用程序相同的优先级运行这个应用程序。 activityCreator(.bat 或.pn) activityCreatoractivityCreatoractivityCreatoractivityCreator是一个用来安装一个基本的开发环境的简单命令行工具。是一个用来安装一个基本的开发环境的简单命令行工具。是一个用来安装一个基本的开发环境的简单命令行工具。是一个用来安装一个基本的开发环境的简单命令行工具。 当从命令行中运行它,当从命令行中运行它,当从命令行中运行它,当从命令行中运行它,activityCreatoractivityCreatoractivityCreatoractivityCreator将会安装创建一个基本将会安装创建一个基本将会安装创建一个基本将会安装创建一个基本AndroidAndroidAndroidAndroid应用应用应用应用程程程程 序必需的框架文件。如果你没使用序必需的框架文件。如果你没使用序必需的框架文件。如果你没使用序必需的框架文件。如果你没使用EclipseEclipseEclipseEclipse,拥有这些文件是尤其有用的。当,拥有这些文件是尤其有用的。当,拥有这些文件是尤其有用的。当,拥有这些文件是尤其有用的。当你你你你 创建一个新的工程时,创建一个新的工程时,创建一个新的工程时,创建一个新的工程时,AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse 插件通过调用插件通过调用插件通过调用插件通过调用activityCreatoractivityCreatoractivityCreatoractivityCreator来为来为来为来为 你搭建这些框架文件。你搭建这些框架文件。你搭建这些框架文件。你搭建这些框架文件。 你将会看到你将会看到你将会看到你将会看到activityCreatoractivityCreatoractivityCreatoractivityCreator表现为不同的脚本文件,这依赖你正运行什表现为不同的脚本文件,这依赖你正运行什表现为不同的脚本文件,这依赖你正运行什表现为不同的脚本文件,这依赖你正运行什么么么么 样的环境。假如你在 样的环境。假如你在 样的环境。假如你在 样的环境。假如你在 windowswindowswindowswindows环境,它将会是一个环境,它将会是一个环境,它将会是一个环境,它将会是一个.bat.bat.bat.bat文件;否则它会是一个文件;否则它会是一个文件;否则它会是一个文件;否则它会是一个 python(.pn)python(.pn)python(.pn)python(.pn)脚本。你简单地执行这个脚本,它带着正确参数来轮流地调用真脚本。你简单地执行这个脚本,它带着正确参数来轮流地调用真脚本。你简单地执行这个脚本,它带着正确参数来轮流地调用真脚本。你简单地执行这个脚本,它带着正确参数来轮流地调用真实实实实 的的的的activityCreatoractivityCreatoractivityCreatoractivityCreator进程。进程。进程。进程。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 57575757 版权©2008 McGraw-Hill 公司 APIsAPIsAPIsAPIs APIAPIAPIAPI,或应用程序编程接口,是,或应用程序编程接口,是,或应用程序编程接口,是,或应用程序编程接口,是AndroidAndroidAndroidAndroid SDKSDKSDKSDK的核心。一个的核心。一个的核心。一个的核心。一个APIAPIAPIAPI是功能、方法、是功能、方法、是功能、方法、是功能、方法、 属性、类和库的集合,它被应用程序开发者用来创建运行在特殊平台上的工程属性、类和库的集合,它被应用程序开发者用来创建运行在特殊平台上的工程属性、类和库的集合,它被应用程序开发者用来创建运行在特殊平台上的工程属性、类和库的集合,它被应用程序开发者用来创建运行在特殊平台上的工程。。。。 AndroidAndroidAndroidAndroid APIAPIAPIAPI包含了所有你创建能工作和交互的基于包含了所有你创建能工作和交互的基于包含了所有你创建能工作和交互的基于包含了所有你创建能工作和交互的基于AndroidAndroidAndroidAndroid应用程序时所需应用程序时所需应用程序时所需应用程序时所需的的的的 特征信息。特征信息。特征信息。特征信息。 AndroidAndroidAndroidAndroid SDKSDKSDKSDK也包含了两个补充的 也包含了两个补充的 也包含了两个补充的 也包含了两个补充的 API--GoogleAPI--GoogleAPI--GoogleAPI--Google APIsAPIsAPIsAPIs和可选和可选和可选和可选APIsAPIsAPIsAPIs。后面章。后面章。后面章。后面章 节中,当你使用这些节中,当你使用这些节中,当你使用这些节中,当你使用这些APIAPIAPIAPI开始写应用程序时将会更多关注它们开始写应用程序时将会更多关注它们开始写应用程序时将会更多关注它们开始写应用程序时将会更多关注它们....现在,快速看现在,快速看现在,快速看现在,快速看一一一一 下它们包含了什么,以便你熟悉他们的用法。下它们包含了什么,以便你熟悉他们的用法。下它们包含了什么,以便你熟悉他们的用法。下它们包含了什么,以便你熟悉他们的用法。 Google APIs GoogleGoogleGoogleGoogle APIsAPIsAPIsAPIs被包含在被包含在被包含在被包含在AndroidAndroidAndroidAndroid SDKSDKSDKSDK中,并由允许你把你的应用程序绑定中,并由允许你把你的应用程序绑定中,并由允许你把你的应用程序绑定中,并由允许你把你的应用程序绑定到到到到 已有的已有的已有的已有的GoogleGoogleGoogleGoogle 服务中的编程参照组成。假如你要写一个应用程序并允许你的服务中的编程参照组成。假如你要写一个应用程序并允许你的服务中的编程参照组成。假如你要写一个应用程序并允许你的服务中的编程参照组成。假如你要写一个应用程序并允许你的使使使使 用者通过你的程序来使用用者通过你的程序来使用用者通过你的程序来使用用者通过你的程序来使用GoogleGoogleGoogleGoogle 服务,你就需要包含 服务,你就需要包含 服务,你就需要包含 服务,你就需要包含 GoogleGoogleGoogleGoogle APIAPIAPIAPI。。。。 打开打开打开打开android.jarandroid.jarandroid.jarandroid.jar文件,文件,文件,文件,GoogleGoogleGoogleGoogle APIAPIAPIAPI包含在包含在包含在包含在com.google.*com.google.*com.google.*com.google.*包中。有很多的包中。有很多的包中。有很多的包中。有很多的 包含包含包含包含GoogleGoogleGoogleGoogle APIAPIAPIAPI的包。许多装有的包。许多装有的包。许多装有的包。许多装有GoogleGoogleGoogleGoogle APIAPIAPIAPI的包中包含那些为图形,便捷、的包中包含那些为图形,便捷、的包中包含那些为图形,便捷、的包中包含那些为图形,便捷、 联系、日历的公用程序。而在本书中将主要关注于联系、日历的公用程序。而在本书中将主要关注于联系、日历的公用程序。而在本书中将主要关注于联系、日历的公用程序。而在本书中将主要关注于GoogleGoogleGoogleGoogle MapsMapsMapsMaps使用的包。使用的包。使用的包。使用的包。 使用使用使用使用com.google.android.mapscom.google.android.mapscom.google.android.mapscom.google.android.maps包,你可以创建和已经常用的包,你可以创建和已经常用的包,你可以创建和已经常用的包,你可以创建和已经常用的GoogleGoogleGoogleGoogle MapMapMapMapssss 界面无缝交互的应用程序。这一系列包开辟了有用的程序只是等待被开发的整界面无缝交互的应用程序。这一系列包开辟了有用的程序只是等待被开发的整界面无缝交互的应用程序。这一系列包开辟了有用的程序只是等待被开发的整界面无缝交互的应用程序。这一系列包开辟了有用的程序只是等待被开发的整 个世界。个世界。个世界。个世界。 GoogleGoogleGoogleGoogle APIAPIAPIAPI也包含了一系列有用的包,这些包允许你利用更新的可扩展信也包含了一系列有用的包,这些包允许你利用更新的可扩展信也包含了一系列有用的包,这些包允许你利用更新的可扩展信也包含了一系列有用的包,这些包允许你利用更新的可扩展信 息传输和出席协议(息传输和出席协议(息传输和出席协议(息传输和出席协议(ExtensibleExtensibleExtensibleExtensible MessagingMessagingMessagingMessaging andandandand PresencePresencePresencePresence ProtocolProtocolProtocolProtocol)()()()(XMPPXMPPXMPPXMPP))))-------- 由由由由JabberJabberJabberJabber开源社区开发。使用开源社区开发。使用开源社区开发。使用开源社区开发。使用XMPPXMPPXMPPXMPP,一个应用程序可以快速成为其他客户的,一个应用程序可以快速成为其他客户的,一个应用程序可以快速成为其他客户的,一个应用程序可以快速成为其他客户的出出出出 席和发信息、通信的可获得的意识。假如你要创建一个使用手机消息功能的席和发信息、通信的可获得的意识。假如你要创建一个使用手机消息功能的席和发信息、通信的可获得的意识。假如你要创建一个使用手机消息功能的席和发信息、通信的可获得的意识。假如你要创建一个使用手机消息功能的““““聊聊聊聊 天天天天””””形式的应用程序,用 形式的应用程序,用 形式的应用程序,用 形式的应用程序,用 XMPPXMPPXMPPXMPP处理的处理的处理的处理的APIAPIAPIAPI包非常有用。包非常有用。包非常有用。包非常有用。 可选 APIs AndroidAndroidAndroidAndroid SDKSDKSDKSDK包含了大量的可选包含了大量的可选包含了大量的可选包含了大量的可选APIAPIAPIAPI,这些可选,这些可选,这些可选,这些可选APIsAPIsAPIsAPIs涵盖了标准涵盖了标准涵盖了标准涵盖了标准AndroidAndroidAndroidAndroid APIAPIAPIAPI 没有的功能。这些可选没有的功能。这些可选没有的功能。这些可选没有的功能。这些可选APIAPIAPIAPI被考虑成可选的,因为它们处理的功能可能在现有被考虑成可选的,因为它们处理的功能可能在现有被考虑成可选的,因为它们处理的功能可能在现有被考虑成可选的,因为它们处理的功能可能在现有 的手机上没有。这就是说许多为的手机上没有。这就是说许多为的手机上没有。这就是说许多为的手机上没有。这就是说许多为AndroidAndroidAndroidAndroid平台开发的设备可能包含其他设备没平台开发的设备可能包含其他设备没平台开发的设备可能包含其他设备没平台开发的设备可能包含其他设备没 有的升级和特色;当你尝试在你的有的升级和特色;当你尝试在你的有的升级和特色;当你尝试在你的有的升级和特色;当你尝试在你的AndroidAndroidAndroidAndroid 应用程序中使用这些特色时,可选应用程序中使用这些特色时,可选应用程序中使用这些特色时,可选应用程序中使用这些特色时,可选 APIAPIAPIAPI涵盖了你的编程选项。涵盖了你的编程选项。涵盖了你的编程选项。涵盖了你的编程选项。 这些特色的其中之一(你将在后面章节中使用)是一个基于手机的这些特色的其中之一(你将在后面章节中使用)是一个基于手机的这些特色的其中之一(你将在后面章节中使用)是一个基于手机的这些特色的其中之一(你将在后面章节中使用)是一个基于手机的GPSGPSGPSGPS。。。。 AndroidAndroidAndroidAndroid LBSLBSLBSLBS(基于本地服务,(基于本地服务,(基于本地服务,(基于本地服务,Location-BasedLocation-BasedLocation-BasedLocation-Based ServicesServicesServicesServices))))APIAPIAPIAPI处理需要从一处理需要从一处理需要从一处理需要从一个个个个 设备的设备的设备的设备的GPSGPSGPSGPS模块中接收和使用信息的功能。(结合模块中接收和使用信息的功能。(结合模块中接收和使用信息的功能。(结合模块中接收和使用信息的功能。(结合AndroidAndroidAndroidAndroid LBSLBSLBSLBS APIAPIAPIAPI和和和和GoogleGoogleGoogleGoogle MapsMapsMapsMaps APIAPIAPIAPI中的信息,你可能拥有一个非常有用的应用程序。它能够及时的自动中的信息,你可能拥有一个非常有用的应用程序。它能够及时的自动中的信息,你可能拥有一个非常有用的应用程序。它能够及时的自动中的信息,你可能拥有一个非常有用的应用程序。它能够及时的自动 显示你任意给出的点的地图。)显示你任意给出的点的地图。)显示你任意给出的点的地图。)显示你任意给出的点的地图。) 其他的可选其他的可选其他的可选其他的可选APIAPIAPIAPI包括使用蓝牙、包括使用蓝牙、包括使用蓝牙、包括使用蓝牙、Wi-FiWi-FiWi-FiWi-Fi、、、、MP3MP3MP3MP3播放,和支持播放,和支持播放,和支持播放,和支持3D-OpenGL3D-OpenGL3D-OpenGL3D-OpenGL,依,依,依,依赖赖赖赖 于硬件。于硬件。于硬件。于硬件。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 58585858 版权©2008 McGraw-Hill 公司 应用程序生命周期应用程序生命周期应用程序生命周期应用程序生命周期 如果你作为一个应用程序开发者有一定的经验的话,你会很熟悉应用程序如果你作为一个应用程序开发者有一定的经验的话,你会很熟悉应用程序如果你作为一个应用程序开发者有一定的经验的话,你会很熟悉应用程序如果你作为一个应用程序开发者有一定的经验的话,你会很熟悉应用程序生生生生 命周期的概念。一个应用程序生命周期由应用程序从执行到终止过程必须遵照命周期的概念。一个应用程序生命周期由应用程序从执行到终止过程必须遵照命周期的概念。一个应用程序生命周期由应用程序从执行到终止过程必须遵照命周期的概念。一个应用程序生命周期由应用程序从执行到终止过程必须遵照 的步骤组成。每一个应用程序,不管它用什么语言编写,都有一个明确的生命的步骤组成。每一个应用程序,不管它用什么语言编写,都有一个明确的生命的步骤组成。每一个应用程序,不管它用什么语言编写,都有一个明确的生命的步骤组成。每一个应用程序,不管它用什么语言编写,都有一个明确的生命 周期,周期,周期,周期,AndroidAndroidAndroidAndroid应用程序也不例外。这篇阐述一个应用程序也不例外。这篇阐述一个应用程序也不例外。这篇阐述一个应用程序也不例外。这篇阐述一个ASPASPASPASP程序的生命周期并和 程序的生命周期并和 程序的生命周期并和 程序的生命周期并和 AndroidAndroidAndroidAndroid 应用程序的生命周期作比较。应用程序的生命周期作比较。应用程序的生命周期作比较。应用程序的生命周期作比较。 标准 ASP 应用程序生命周期 一个标准一个标准一个标准一个标准ASPASPASPASP应用程序的生命周期和应用程序的生命周期和应用程序的生命周期和应用程序的生命周期和AndroidAndroidAndroidAndroid 程序生命周期足够相似,就程序生命周期足够相似,就程序生命周期足够相似,就程序生命周期足够相似,就 用这个来做个好的比较。用这个来做个好的比较。用这个来做个好的比较。用这个来做个好的比较。ASPASPASPASP应用程序从开始到处理经过五个不同的步骤。这应用程序从开始到处理经过五个不同的步骤。这应用程序从开始到处理经过五个不同的步骤。这应用程序从开始到处理经过五个不同的步骤。这些些些些 步骤要求所有的步骤要求所有的步骤要求所有的步骤要求所有的ASPASPASPASP程序都要实现,并真正定义了一个程序都要实现,并真正定义了一个程序都要实现,并真正定义了一个程序都要实现,并真正定义了一个ASPASPASPASP程序是什么。这些程序是什么。这些程序是什么。这些程序是什么。这些 步骤按顺序是:步骤按顺序是:步骤按顺序是:步骤按顺序是: 1.1.1.1. 应用程序应用程序应用程序应用程序____启动启动启动启动 2.2.2.2. 事件事件事件事件 3.3.3.3. HTTPHTTPHTTPHTTP应用程序应用程序应用程序应用程序....初始化初始化初始化初始化 4.4.4.4. 处理、分配(处理、分配(处理、分配(处理、分配(DisposeDisposeDisposeDispose)))) 5.5.5.5. 应用程序应用程序应用程序应用程序____终止终止终止终止 注意:注意:注意:注意: -------------------------------------------------------- 许多许多许多许多ASPASPASPASP参考资料把处理、分配(参考资料把处理、分配(参考资料把处理、分配(参考资料把处理、分配(DisposalDisposalDisposalDisposal)和应用程序)和应用程序)和应用程序)和应用程序____终止考虑成生命终止考虑成生命终止考虑成生命终止考虑成生命 周期的一个步骤。然而,周期的一个步骤。然而,周期的一个步骤。然而,周期的一个步骤。然而,DisposalDisposalDisposalDisposal调用在它经过应用程序调用在它经过应用程序调用在它经过应用程序调用在它经过应用程序____终止之前可以被拦终止之前可以被拦终止之前可以被拦终止之前可以被拦截 。截 。截 。截 。 这就能允许应用程序在它真正销毁前执行特殊的函数。这就能允许应用程序在它真正销毁前执行特殊的函数。这就能允许应用程序在它真正销毁前执行特殊的函数。这就能允许应用程序在它真正销毁前执行特殊的函数。 当应用程序被服务器请求时,应用程序当应用程序被服务器请求时,应用程序当应用程序被服务器请求时,应用程序当应用程序被服务器请求时,应用程序____启动被调用。这个过程依次进入到启动被调用。这个过程依次进入到启动被调用。这个过程依次进入到启动被调用。这个过程依次进入到 事件过程。当所有联系的应用程序组件加载好,事件过程。当所有联系的应用程序组件加载好,事件过程。当所有联系的应用程序组件加载好,事件过程。当所有联系的应用程序组件加载好,HTTPHTTPHTTPHTTP应用程序应用程序应用程序应用程序....初始化被调用。初始化被调用。初始化被调用。初始化被调用。 程序就执行它自己的事件,当用户试图关闭时,程序就执行它自己的事件,当用户试图关闭时,程序就执行它自己的事件,当用户试图关闭时,程序就执行它自己的事件,当用户试图关闭时,DisposeDisposeDisposeDispose被调用。被调用。被调用。被调用。DisposeDisposeDisposeDispose接接接接下下下下 来进入到关闭程序的应用程序来进入到关闭程序的应用程序来进入到关闭程序的应用程序来进入到关闭程序的应用程序____终止过程。终止过程。终止过程。终止过程。 这是一个很标准的应用程序生命周期。大多数程序遵循相似的生命周期:这是一个很标准的应用程序生命周期。大多数程序遵循相似的生命周期:这是一个很标准的应用程序生命周期。大多数程序遵循相似的生命周期:这是一个很标准的应用程序生命周期。大多数程序遵循相似的生命周期:一一一一 个程序被创建,加载,拥有事件,销毁。下篇幅展示怎样和个程序被创建,加载,拥有事件,销毁。下篇幅展示怎样和个程序被创建,加载,拥有事件,销毁。下篇幅展示怎样和个程序被创建,加载,拥有事件,销毁。下篇幅展示怎样和AndroidAndroidAndroidAndroid 应用程序应用程序应用程序应用程序 生命周期来比较。生命周期来比较。生命周期来比较。生命周期来比较。 Android 应用程序生命周期 在许多程序的生命周期中,在许多程序的生命周期中,在许多程序的生命周期中,在许多程序的生命周期中,AndroidAndroidAndroidAndroid应用程序生命周期中系统控制方面是应用程序生命周期中系统控制方面是应用程序生命周期中系统控制方面是应用程序生命周期中系统控制方面是独独独独 一无二的。所有一无二的。所有一无二的。所有一无二的。所有AndroidAndroidAndroidAndroid 程序,或是程序,或是程序,或是程序,或是ActivityActivityActivityActivity,是在它们自己进程中允许的。,是在它们自己进程中允许的。,是在它们自己进程中允许的。,是在它们自己进程中允许的。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 59595959 版权©2008 McGraw-Hill 公司 所有正在运行的进程被所有正在运行的进程被所有正在运行的进程被所有正在运行的进程被AndroidAndroidAndroidAndroid监视并依赖于这个监视并依赖于这个监视并依赖于这个监视并依赖于这个Activity Activity Activity Activity 是如何运行(当是如何运行(当是如何运行(当是如何运行(当前前前前 的的的的ActivityActivityActivityActivity,一个已分配的,一个已分配的,一个已分配的,一个已分配的ActivityActivityActivityActivity,后台,后台,后台,后台ActivityActivityActivityActivity,或是第四种),,或是第四种),,或是第四种),,或是第四种),AndroiAndroiAndroiAndroidddd 可能会选择终止这个 可能会选择终止这个 可能会选择终止这个 可能会选择终止这个 Activity Activity Activity Activity 来收回需要的资源。来收回需要的资源。来收回需要的资源。来收回需要的资源。 注意:注意:注意:注意: ---------------------------------------- 当决定一个当决定一个当决定一个当决定一个Activity Activity Activity Activity 是不是应该关闭时,是不是应该关闭时,是不是应该关闭时,是不是应该关闭时,AndroidAndroidAndroidAndroid考虑许多因素,如用户考虑许多因素,如用户考虑许多因素,如用户考虑许多因素,如用户 输入、内存使用和进程时间。输入、内存使用和进程时间。输入、内存使用和进程时间。输入、内存使用和进程时间。 一些在一些在一些在一些在AndroidAndroidAndroidAndroid ActivityActivityActivityActivity生命周期中调用的特殊方法是:生命周期中调用的特殊方法是:生命周期中调用的特殊方法是:生命周期中调用的特殊方法是: ���� OnCreateOnCreateOnCreateOnCreate ���� OnStartOnStartOnStartOnStart ���� Process-specificProcess-specificProcess-specificProcess-specific 事件(如开启事件(如开启事件(如开启事件(如开启Activity Activity Activity Activity 或使用数据库)或使用数据库)或使用数据库)或使用数据库) ���� OnStopOnStopOnStopOnStop ���� OnDestroyOnDestroyOnDestroyOnDestroy 遵循和其他应用程序生命周期相似的逻辑,一个遵循和其他应用程序生命周期相似的逻辑,一个遵循和其他应用程序生命周期相似的逻辑,一个遵循和其他应用程序生命周期相似的逻辑,一个AndroidAndroidAndroidAndroid 应用程序被创建应用程序被创建应用程序被创建应用程序被创建,,,, 进程被启动,事件被发出,过程停止,接下来程序销毁。虽然有点不同的地方进程被启动,事件被发出,过程停止,接下来程序销毁。虽然有点不同的地方进程被启动,事件被发出,过程停止,接下来程序销毁。虽然有点不同的地方进程被启动,事件被发出,过程停止,接下来程序销毁。虽然有点不同的地方,,,, 但多数应用程序开发者感觉这些在生命周期的步骤应该是舒适的。但多数应用程序开发者感觉这些在生命周期的步骤应该是舒适的。但多数应用程序开发者感觉这些在生命周期的步骤应该是舒适的。但多数应用程序开发者感觉这些在生命周期的步骤应该是舒适的。 专家咨询专家咨询专家咨询专家咨询 Q:GoogleQ:GoogleQ:GoogleQ:Google 曾升级过曾升级过曾升级过曾升级过AndroidAndroidAndroidAndroid SDKSDKSDKSDK吗?吗?吗?吗? A:A:A:A:是的,从我写这本书开始,是的,从我写这本书开始,是的,从我写这本书开始,是的,从我写这本书开始,GoogleGoogleGoogleGoogle已经升级已经升级已经升级已经升级AndroidAndroidAndroidAndroid SDKSDKSDKSDK三次了。当三次了。当三次了。当三次了。当AndroAndroAndroAndroidididid SDKSDKSDKSDK升级可以获得时,升级可以获得时,升级可以获得时,升级可以获得时,GoogleGoogleGoogleGoogle会发布在会发布在会发布在会发布在AndroidAndroidAndroidAndroid 网站上。网站上。网站上。网站上。 Q:APIQ:APIQ:APIQ:API DemoDemoDemoDemo展示程序会不会出现在最终的产品中?展示程序会不会出现在最终的产品中?展示程序会不会出现在最终的产品中?展示程序会不会出现在最终的产品中? A:A:A:A:可能不会。可能不会。可能不会。可能不会。APIAPIAPIAPI DemoDemoDemoDemo被创建用来展示出被创建用来展示出被创建用来展示出被创建用来展示出AndroidAndroidAndroidAndroid功能。虽然有核心的特征程功能。虽然有核心的特征程功能。虽然有核心的特征程功能。虽然有核心的特征程 序,它可能包含了一些在序,它可能包含了一些在序,它可能包含了一些在序,它可能包含了一些在APIAPIAPIAPI DemoDemoDemoDemo中找得到的元素。但我们可能不会在最终中找得到的元素。但我们可能不会在最终中找得到的元素。但我们可能不会在最终中找得到的元素。但我们可能不会在最终版版版版 本中看到本中看到本中看到本中看到““““月球登陆月球登陆月球登陆月球登陆””””。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 60606060 版权©2008 McGraw-Hill 公司 第五章第五章第五章第五章 应用程序:应用程序:应用程序:应用程序:HelloWorldHelloWorldHelloWorldHelloWorld AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 61616161 版权©2008 McGraw-Hill 公司 关键技术关键技术关键技术关键技术&&&&概念概念概念概念 ���� 创佳一个新的 创佳一个新的 创佳一个新的 创佳一个新的 AndroidAndroidAndroidAndroid工程工程工程工程 ���� 用用用用ViewViewViewView视图来工作视图来工作视图来工作视图来工作 ���� 使用使用使用使用TextViewTextViewTextViewTextView ���� 修改修改修改修改main.xmlmain.xmlmain.xmlmain.xml文件文件文件文件 ���� 在在在在AndroidAndroidAndroidAndroid 模拟器上运行应用程序模拟器上运行应用程序模拟器上运行应用程序模拟器上运行应用程序 ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… 在本章,你将创建你的第一个在本章,你将创建你的第一个在本章,你将创建你的第一个在本章,你将创建你的第一个AndroidAndroidAndroidAndroid ActivityActivityActivityActivity。本章细查了构建应用程序从。本章细查了构建应用程序从。本章细查了构建应用程序从。本章细查了构建应用程序从 开始到结束的过程。我将向你展示如何在开始到结束的过程。我将向你展示如何在开始到结束的过程。我将向你展示如何在开始到结束的过程。我将向你展示如何在EclipseEclipseEclipseEclipse中创建一个中创建一个中创建一个中创建一个AndroidAndroidAndroidAndroid工 程 ,工 程 ,工 程 ,工 程 , 并在并在并在并在AndroidAndroidAndroidAndroid模拟器中运行编写完的应用程序。最后的应用会是一个运行在模拟器中运行编写完的应用程序。最后的应用会是一个运行在模拟器中运行编写完的应用程序。最后的应用会是一个运行在模拟器中运行编写完的应用程序。最后的应用会是一个运行在 AndroidAndroidAndroidAndroid平台上完整功能的项目。平台上完整功能的项目。平台上完整功能的项目。平台上完整功能的项目。 实际上,当你来到这个章节时,你将创建更多的实际上,当你来到这个章节时,你将创建更多的实际上,当你来到这个章节时,你将创建更多的实际上,当你来到这个章节时,你将创建更多的AndroidAndroidAndroidAndroid ActivityActivityActivityActivity。计算机。计算机。计算机。计算机 编程传统规定你的第一个应用程序是经典的编程传统规定你的第一个应用程序是经典的编程传统规定你的第一个应用程序是经典的编程传统规定你的第一个应用程序是经典的HelloHelloHelloHello WorldWorldWorldWorld!程序,因此,在第!程序,因此,在第!程序,因此,在第!程序,因此,在第一一一一 部分你将创佳一个标准的只有一个空背景和部分你将创佳一个标准的只有一个空背景和部分你将创佳一个标准的只有一个空背景和部分你将创佳一个标准的只有一个空背景和"Hello"Hello"Hello"Hello WorldWorldWorldWorld!!!!""""文本的文本的文本的文本的HelloHelloHelloHello WorldWorldWorldWorld!程序。这将给你一个好的!程序。这将给你一个好的!程序。这将给你一个好的!程序。这将给你一个好的AndroidAndroidAndroidAndroid控制和内部工作介绍。控制和内部工作介绍。控制和内部工作介绍。控制和内部工作介绍。 注意:注意:注意:注意: ------------------------------------------------------------ 你将经常看到你将经常看到你将经常看到你将经常看到"Application""Application""Application""Application"和和和和"Activity""Activity""Activity""Activity"被交替使用。它两个不同处是一个被交替使用。它两个不同处是一个被交替使用。它两个不同处是一个被交替使用。它两个不同处是一个 "application""application""application""application"可一个由多个可一个由多个可一个由多个可一个由多个Activity Activity Activity Activity 组成,但是一个组成,但是一个组成,但是一个组成,但是一个"application""application""application""application"必须至必须至必须至必须至少少少少 含有一个含有一个含有一个含有一个ActivityActivityActivityActivity。你应用程序每一个。你应用程序每一个。你应用程序每一个。你应用程序每一个""""窗口窗口窗口窗口""""或是屏幕是一个单独的或是屏幕是一个单独的或是屏幕是一个单独的或是屏幕是一个单独的ActivitActivitActivitActivityyyy。。。。 因此,如果你创建一个十分简单的只带一个数据屏幕的应用程序因此,如果你创建一个十分简单的只带一个数据屏幕的应用程序因此,如果你创建一个十分简单的只带一个数据屏幕的应用程序因此,如果你创建一个十分简单的只带一个数据屏幕的应用程序((((像本章中的像本章中的像本章中的像本章中的 HelloHelloHelloHello WorldWorldWorldWorld!程序!程序!程序!程序)))),那就只是一个,那就只是一个,那就只是一个,那就只是一个ActivityActivityActivityActivity。在以后章节中你将会创建有多。在以后章节中你将会创建有多。在以后章节中你将会创建有多。在以后章节中你将会创建有多 个个个个Activity Activity Activity Activity 的应用程序。的应用程序。的应用程序。的应用程序。 为了确保你对为了确保你对为了确保你对为了确保你对AndroidAndroidAndroidAndroid开发编程有个全面的审视,第六章节将使用开发编程有个全面的审视,第六章节将使用开发编程有个全面的审视,第六章节将使用开发编程有个全面的审视,第六章节将使用 MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows和和和和LinuxLinuxLinuxLinux的的的的AndroidAndroidAndroidAndroid SDKSDKSDKSDK命令行环境创建这些程序。换句命令行环境创建这些程序。换句命令行环境创建这些程序。换句命令行环境创建这些程序。换句话话话话 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 62626262 版权©2008 McGraw-Hill 公司 说,本章节涵盖在 说,本章节涵盖在 说,本章节涵盖在 说,本章节涵盖在 EclipseEclipseEclipseEclipse中创建的过程,第六章节涵盖了命令行工具的创建中创建的过程,第六章节涵盖了命令行工具的创建中创建的过程,第六章节涵盖了命令行工具的创建中创建的过程,第六章节涵盖了命令行工具的创建 过程。因此,在继续之前,你应该检查一下你的过程。因此,在继续之前,你应该检查一下你的过程。因此,在继续之前,你应该检查一下你的过程。因此,在继续之前,你应该检查一下你的EclipseEclipseEclipseEclipse环境被正确配置。回环境被正确配置。回环境被正确配置。回环境被正确配置。回 顾第三章为顾第三章为顾第三章为顾第三章为AndroidAndroidAndroidAndroid SDKSDKSDKSDK设置设置设置设置PATHPATHPATHPATH声明的步骤。你也应该确保声明的步骤。你也应该确保声明的步骤。你也应该确保声明的步骤。你也应该确保JREJREJREJRE在你的在你的在你的在你的PATPATPATPATHHHH 声明中正确无误。声明中正确无误。声明中正确无误。声明中正确无误。 贴士贴士贴士贴士 -------------------------------------------------------- 当你试着去用任何一个命令行例子开发时,如果你有配置相关的问题,试当你试着去用任何一个命令行例子开发时,如果你有配置相关的问题,试当你试着去用任何一个命令行例子开发时,如果你有配置相关的问题,试当你试着去用任何一个命令行例子开发时,如果你有配置相关的问题,试着着着着 参考第二、三章节的配置步骤;并看一下参考第二、三章节的配置步骤;并看一下参考第二、三章节的配置步骤;并看一下参考第二、三章节的配置步骤;并看一下AndroidAndroidAndroidAndroid SDKSDKSDKSDK文档。文档。文档。文档。 在在在在Eclipse Eclipse Eclipse Eclipse 中创建你的第一个 中创建你的第一个 中创建你的第一个 中创建你的第一个 Android Android Android Android 项目项目项目项目 要开始你第一个要开始你第一个要开始你第一个要开始你第一个AndroidAndroidAndroidAndroid工程项目,打开工程项目,打开工程项目,打开工程项目,打开EclipseEclipseEclipseEclipse。当你第一次打开。当你第一次打开。当你第一次打开。当你第一次打开EclipseEclipseEclipseEclipse时 ,时 ,时 ,时 , 它开启一个空的开发环境它开启一个空的开发环境它开启一个空的开发环境它开启一个空的开发环境((((参看参看参看参看 图图图图5-1)5-1)5-1)5-1),那就是你想要开始的地方。第一任务,那就是你想要开始的地方。第一任务,那就是你想要开始的地方。第一任务,那就是你想要开始的地方。第一任务 是为你的程序设定和命名工作空间。选择是为你的程序设定和命名工作空间。选择是为你的程序设定和命名工作空间。选择是为你的程序设定和命名工作空间。选择File|New|AndroidFile|New|AndroidFile|New|AndroidFile|New|Android ProjectProjectProjectProject,这将开,这将开,这将开,这将开 启新启新启新启新AndroidAndroidAndroidAndroid 项目向导。项目向导。项目向导。项目向导。 警告警告警告警告 ------------------------------------------------------------ 不要从新菜单中选择 不要从新菜单中选择 不要从新菜单中选择 不要从新菜单中选择 JavaJavaJavaJava ProjectProjectProjectProject。虽然。虽然。虽然。虽然AndroidAndroidAndroidAndroid应用程序是用应用程序是用应用程序是用应用程序是用JavaJavaJavaJava编写,编写,编写,编写,并并并并 且你在且你在且你在且你在JavaJavaJavaJava项目中进行你所有的开发,但这个选项会创建一个标准的 项目中进行你所有的开发,但这个选项会创建一个标准的 项目中进行你所有的开发,但这个选项会创建一个标准的 项目中进行你所有的开发,但这个选项会创建一个标准的 JavaJavaJavaJava应应应应 用程序。选择用程序。选择用程序。选择用程序。选择AndroidAndroidAndroidAndroid ProjectProjectProjectProject使你能够创建具有 使你能够创建具有 使你能够创建具有 使你能够创建具有 AndroidAndroidAndroidAndroid特性的应用程序。特性的应用程序。特性的应用程序。特性的应用程序。 如果你没有看见如果你没有看见如果你没有看见如果你没有看见AndroidAndroidAndroidAndroid ProjectProjectProjectProject选项,这就表示选项,这就表示选项,这就表示选项,这就表示AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件插件插件插件损损损损 坏或没有正确安装。回顾第三章给坏或没有正确安装。回顾第三章给坏或没有正确安装。回顾第三章给坏或没有正确安装。回顾第三章给EclipseEclipseEclipseEclipse安装安装安装安装AndroidAndroidAndroidAndroid EclipseEclipseEclipseEclipse插件过程来插件过程来插件过程来插件过程来 修复该问题。修复该问题。修复该问题。修复该问题。 AndroidAndroidAndroidAndroid ProjectProjectProjectProject向导为你创建两个东西:向导为你创建两个东西:向导为你创建两个东西:向导为你创建两个东西: ���� 一个绑定到一个绑定到一个绑定到一个绑定到AndroidAndroidAndroidAndroid SDKSDKSDKSDK的框架程序,通过使用的框架程序,通过使用的框架程序,通过使用的框架程序,通过使用android.jarandroid.jarandroid.jarandroid.jar文件并把工文件并把工文件并把工文件并把工程程程程 绑定到绑定到绑定到绑定到AndroidAndroidAndroidAndroid模拟器中。这将允许你使用所有的模拟器中。这将允许你使用所有的模拟器中。这将允许你使用所有的模拟器中。这将允许你使用所有的AndroidAndroidAndroidAndroid类库和包来编写代类库和包来编写代类库和包来编写代类库和包来编写代 码,也让你能在适当的环境中调试你的应用程序。码,也让你能在适当的环境中调试你的应用程序。码,也让你能在适当的环境中调试你的应用程序。码,也让你能在适当的环境中调试你的应用程序。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 63636363 版权©2008 McGraw-Hill 公司 图图图图5-15-15-15-1 空的空的空的空的EclipseEclipseEclipseEclipse开发环境开发环境开发环境开发环境 ���� 你第一个新工程的框架文件。这些框架文件包含一些重要的应用程序架构,你第一个新工程的框架文件。这些框架文件包含一些重要的应用程序架构,你第一个新工程的框架文件。这些框架文件包含一些重要的应用程序架构,你第一个新工程的框架文件。这些框架文件包含一些重要的应用程序架构, 在这些架构之上你将可以构建你的工程。和许多方式类似,像在在这些架构之上你将可以构建你的工程。和许多方式类似,像在在这些架构之上你将可以构建你的工程。和许多方式类似,像在在这些架构之上你将可以构建你的工程。和许多方式类似,像在VisualVisualVisualVisual StudiStudiStudiStudioooo 中创建一个中创建一个中创建一个中创建一个MicrosoftMicrosoftMicrosoftMicrosoft .NET.NET.NET.NET应用程序的方式在你的文件里自动生成一些应用程序的方式在你的文件里自动生成一些应用程序的方式在你的文件里自动生成一些应用程序的方式在你的文件里自动生成一些 WindowsWindowsWindowsWindows创建工程代码,使用创建工程代码,使用创建工程代码,使用创建工程代码,使用EclipseEclipseEclipseEclipse中的中的中的中的AndroidAndroidAndroidAndroid ProjectProjectProjectProject向导来自动生成向导来自动生成向导来自动生成向导来自动生成你你你你 的初始工程文件和一些的初始工程文件和一些的初始工程文件和一些的初始工程文件和一些AndroidAndroidAndroidAndroid创建的代码。创建的代码。创建的代码。创建的代码。 新新新新AndroidAndroidAndroidAndroid 项目向导。项目向导。项目向导。项目向导。 另外,新另外,新另外,新另外,新AndroidAndroidAndroidAndroid ProjectProjectProjectProject向导包括一些选项,下面所示,你必须设置它们来向导包括一些选项,下面所示,你必须设置它们来向导包括一些选项,下面所示,你必须设置它们来向导包括一些选项,下面所示,你必须设置它们来 开始开始开始开始AndroidAndroidAndroidAndroid项目开发。项目开发。项目开发。项目开发。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 64646464 版权©2008 McGraw-Hill 公司 对于对于对于对于ProjectProjectProjectProject NameNameNameName 输入框域,由于本例的目的,使用输入框域,由于本例的目的,使用输入框域,由于本例的目的,使用输入框域,由于本例的目的,使用HellWorldTextHellWorldTextHellWorldTextHellWorldText标标标标题 。题 。题 。题 。 这个名称足以让这个 这个名称足以让这个 这个名称足以让这个 这个名称足以让这个 HelloWorldHelloWorldHelloWorldHelloWorld!和其他将在本章中创建的工程区分开。!和其他将在本章中创建的工程区分开。!和其他将在本章中创建的工程区分开。!和其他将在本章中创建的工程区分开。 在在在在ContentContentContentContent区域,保持默认选项:区域,保持默认选项:区域,保持默认选项:区域,保持默认选项:"Create"Create"Create"Create NewNewNewNew ProjectProjectProjectProject inininin Workspace"Workspace"Workspace"Workspace"单单单单 选按钮应该被选中,并且选按钮应该被选中,并且选按钮应该被选中,并且选按钮应该被选中,并且"Use"Use"Use"Use DefaultDefaultDefaultDefault Location"Location"Location"Location"复选框应该被选择。这将允复选框应该被选择。这将允复选框应该被选择。这将允复选框应该被选择。这将允 许许许许EclipseEclipseEclipseEclipse在你默认工作空间中创建你的工程项目。保持默认选项的好处是你在你默认工作空间中创建你的工程项目。保持默认选项的好处是你在你默认工作空间中创建你的工程项目。保持默认选项的好处是你在你默认工作空间中创建你的工程项目。保持默认选项的好处是你 的工程可以被放在一个使排序、管理、查找这些工程十分容易地重要地方。例的工程可以被放在一个使排序、管理、查找这些工程十分容易地重要地方。例的工程可以被放在一个使排序、管理、查找这些工程十分容易地重要地方。例的工程可以被放在一个使排序、管理、查找这些工程十分容易地重要地方。例 如,假如你在基于 如,假如你在基于 如,假如你在基于 如,假如你在基于 UnixUnixUnixUnix环境下开发,这个路径指向你的环境下开发,这个路径指向你的环境下开发,这个路径指向你的环境下开发,这个路径指向你的$HOME$HOME$HOME$HOME目录。目录。目录。目录。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 65656565 版权©2008 McGraw-Hill 公司 如果你在如果你在如果你在如果你在MicrosoftMicrosoftMicrosoftMicrosoft WindowsWindowsWindowsWindows环境开发,工作空间的路径会是:环境开发,工作空间的路径会是:环境开发,工作空间的路径会是:环境开发,工作空间的路径会是: C:/Users//workspace,C:/Users//workspace,C:/Users//workspace,C:/Users//workspace,如上图所示。如上图所示。如上图所示。如上图所示。 然而,由于任何原因,你可能不想选择然而,由于任何原因,你可能不想选择然而,由于任何原因,你可能不想选择然而,由于任何原因,你可能不想选择"Use"Use"Use"Use DefaultDefaultDefaultDefault Location"Location"Location"Location"复选框并复选框并复选框并复选框并为为为为 你的工程选择一个不同的地方,一个原因,如果你想为这个与别的你的工程选择一个不同的地方,一个原因,如果你想为这个与别的你的工程选择一个不同的地方,一个原因,如果你想为这个与别的你的工程选择一个不同的地方,一个原因,如果你想为这个与别的AndroidAndroidAndroidAndroid项项项项 目区别开的特殊项目选择一个位置,你可能想要在这里指定一个不同的简单位目区别开的特殊项目选择一个位置,你可能想要在这里指定一个不同的简单位目区别开的特殊项目选择一个位置,你可能想要在这里指定一个不同的简单位目区别开的特殊项目选择一个位置,你可能想要在这里指定一个不同的简单位 置。例如,你可能想让你在本书中创建的这些项目保存在一个和你将来自己创置。例如,你可能想让你在本书中创建的这些项目保存在一个和你将来自己创置。例如,你可能想让你在本书中创建的这些项目保存在一个和你将来自己创置。例如,你可能想让你在本书中创建的这些项目保存在一个和你将来自己创 建的工程存放位置不同的地方。如果是这样,简单地重写位置选项来为你的工建的工程存放位置不同的地方。如果是这样,简单地重写位置选项来为你的工建的工程存放位置不同的地方。如果是这样,简单地重写位置选项来为你的工建的工程存放位置不同的地方。如果是这样,简单地重写位置选项来为你的工 程指定你自己的自定义位置目录。程指定你自己的自定义位置目录。程指定你自己的自定义位置目录。程指定你自己的自定义位置目录。 另一方面,如果你不选择另一方面,如果你不选择另一方面,如果你不选择另一方面,如果你不选择"Use"Use"Use"Use thisthisthisthis asasasas DefaultDefaultDefaultDefault """"并且不想在并且不想在并且不想在并且不想在EclipseEclipseEclipseEclipse启启启启动动动动 (如第二章最后部分的建议)期间再被对话框问起:选择一个默认工作空间;(如第二章最后部分的建议)期间再被对话框问起:选择一个默认工作空间;(如第二章最后部分的建议)期间再被对话框问起:选择一个默认工作空间;(如第二章最后部分的建议)期间再被对话框问起:选择一个默认工作空间; 你可能被请求指定一个工程位置。在你可能被请求指定一个工程位置。在你可能被请求指定一个工程位置。在你可能被请求指定一个工程位置。在EclipseEclipseEclipseEclipse启动期间选择那个复选框则默认启动期间选择那个复选框则默认启动期间选择那个复选框则默认启动期间选择那个复选框则默认 所有新的项目保存到 所有新的项目保存到 所有新的项目保存到 所有新的项目保存到 workspace workspace workspace workspace 目录中(并且在新 目录中(并且在新 目录中(并且在新 目录中(并且在新 AndroidAndroidAndroidAndroid工程向导中的工程向导中的工程向导中的工程向导中的 "Location""Location""Location""Location"输入框域中显示默认位置)。假如你在输入框域中显示默认位置)。假如你在输入框域中显示默认位置)。假如你在输入框域中显示默认位置)。假如你在EclipseEclipseEclipseEclipse启动过程期间没有启动过程期间没有启动过程期间没有启动过程期间没有选选选选 择这个复选框,现在你需要为你的新项目选择一个路径,通过点击择这个复选框,现在你需要为你的新项目选择一个路径,通过点击择这个复选框,现在你需要为你的新项目选择一个路径,通过点击择这个复选框,现在你需要为你的新项目选择一个路径,通过点击"Browse""Browse""Browse""Browse"按按按按 钮并选入新路径。钮并选入新路径。钮并选入新路径。钮并选入新路径。 新新新新AndroidAndroidAndroidAndroid ProjectProjectProjectProject向导中最后的三个选项是在属性域中。这些属性定义向导中最后的三个选项是在属性域中。这些属性定义向导中最后的三个选项是在属性域中。这些属性定义向导中最后的三个选项是在属性域中。这些属性定义了了了了 你的项目如何集成到 你的项目如何集成到 你的项目如何集成到 你的项目如何集成到 AndroidAndroidAndroidAndroid 环境中。在环境中。在环境中。在环境中。在"Package"Package"Package"Package Name"Name"Name"Name"输入域中,你给你的输入域中,你给你的输入域中,你给你的输入域中,你给你的 应用程序套件包指定名字空间。例如,应用程序套件包指定名字空间。例如,应用程序套件包指定名字空间。例如,应用程序套件包指定名字空间。例如,android.app.Activityandroid.app.Activityandroid.app.Activityandroid.app.Activity或者或者或者或者 com.google.android.map.MapActivitycom.google.android.map.MapActivitycom.google.android.map.MapActivitycom.google.android.map.MapActivity。。。。 警告:警告:警告:警告: ---------------------------------------- PackagePackagePackagePackage名称遵循标准名称遵循标准名称遵循标准名称遵循标准JavaJavaJavaJava包命名规则,它使两个包用同名称发布的风险包命名规则,它使两个包用同名称发布的风险包命名规则,它使两个包用同名称发布的风险包命名规则,它使两个包用同名称发布的风险 降低了。最顶级包名是公司的域标示符(例如:降低了。最顶级包名是公司的域标示符(例如:降低了。最顶级包名是公司的域标示符(例如:降低了。最顶级包名是公司的域标示符(例如:comcomcomcom、、、、orgorgorgorg和和和和netnetnetnet)。这被域名)。这被域名)。这被域名)。这被域名所所所所 遵循,例如遵循,例如遵循,例如遵循,例如googlegooglegooglegoogle。最后,包的内容描述标题就被提供了。由于本章的目的,。最后,包的内容描述标题就被提供了。由于本章的目的,。最后,包的内容描述标题就被提供了。由于本章的目的,。最后,包的内容描述标题就被提供了。由于本章的目的, 我我我我HelloHelloHelloHello WorldWorldWorldWorld应用程序的包名将省略应用程序的包名将省略应用程序的包名将省略应用程序的包名将省略"com""com""com""com"来识别它是一个文本应用程序并来识别它是一个文本应用程序并来识别它是一个文本应用程序并来识别它是一个文本应用程序并不不不不 是意味要被发布。所有未来在本书中创建的包将会被发布并使用是意味要被发布。所有未来在本书中创建的包将会被发布并使用是意味要被发布。所有未来在本书中创建的包将会被发布并使用是意味要被发布。所有未来在本书中创建的包将会被发布并使用"com""com""com""com"来识别。来识别。来识别。来识别。 对于对于对于对于HelloHelloHelloHello worldworldworldworld文本应用程序,使用包名文本应用程序,使用包名文本应用程序,使用包名文本应用程序,使用包名 android_programmers_guide.HelloWorldTextandroid_programmers_guide.HelloWorldTextandroid_programmers_guide.HelloWorldTextandroid_programmers_guide.HelloWorldText。这个名称唯一地标识这个代码。这个名称唯一地标识这个代码。这个名称唯一地标识这个代码。这个名称唯一地标识这个代码 属于这个应用程序并且让这个测试程序和别的你将要在本书中开发的应用程序属于这个应用程序并且让这个测试程序和别的你将要在本书中开发的应用程序属于这个应用程序并且让这个测试程序和别的你将要在本书中开发的应用程序属于这个应用程序并且让这个测试程序和别的你将要在本书中开发的应用程序 区别开来。区别开来。区别开来。区别开来。 注意:注意:注意:注意: ---------------------------------------------------- 假如你正关注屏幕,如你正在尝试一样,当你键入包名时,你将注意到一假如你正关注屏幕,如你正在尝试一样,当你键入包名时,你将注意到一假如你正关注屏幕,如你正在尝试一样,当你键入包名时,你将注意到一假如你正关注屏幕,如你正在尝试一样,当你键入包名时,你将注意到一个个个个 错误信息出现在向导的顶部,说明你必须填满所有的这些输入框来继续进行。错误信息出现在向导的顶部,说明你必须填满所有的这些输入框来继续进行。错误信息出现在向导的顶部,说明你必须填满所有的这些输入框来继续进行。错误信息出现在向导的顶部,说明你必须填满所有的这些输入框来继续进行。 这个错误信息过早并令人困惑,因为你还没有尝试去填满其他在属性域中的输这个错误信息过早并令人困惑,因为你还没有尝试去填满其他在属性域中的输这个错误信息过早并令人困惑,因为你还没有尝试去填满其他在属性域中的输这个错误信息过早并令人困惑,因为你还没有尝试去填满其他在属性域中的输 入框。如果你看到这样的错误信息,只是别理它并继续,完成下面两个属性域入框。如果你看到这样的错误信息,只是别理它并继续,完成下面两个属性域入框。如果你看到这样的错误信息,只是别理它并继续,完成下面两个属性域入框。如果你看到这样的错误信息,只是别理它并继续,完成下面两个属性域 中的输入框。中的输入框。中的输入框。中的输入框。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 66666666 版权©2008 McGraw-Hill 公司 下一个属性输入框,下一个属性输入框,下一个属性输入框,下一个属性输入框,Activity Activity Activity Activity 名称,是必须的,因为它是你应用程序主屏名称,是必须的,因为它是你应用程序主屏名称,是必须的,因为它是你应用程序主屏名称,是必须的,因为它是你应用程序主屏 幕的引用。那就是,把幕的引用。那就是,把幕的引用。那就是,把幕的引用。那就是,把ActivityActivityActivityActivity想成在你应用程序中显示的想成在你应用程序中显示的想成在你应用程序中显示的想成在你应用程序中显示的""""窗口窗口窗口窗口""""。没有。没有。没有。没有 ActivityActivityActivityActivity,你的应用程序将不能做任何事。然而,由于,你的应用程序将不能做任何事。然而,由于,你的应用程序将不能做任何事。然而,由于,你的应用程序将不能做任何事。然而,由于AndroidAndroidAndroidAndroid应用程序可以应用程序可以应用程序可以应用程序可以 用多个用多个用多个用多个Activity Activity Activity Activity 来创建,来创建,来创建,来创建,"New"New"New"New AndroidAndroidAndroidAndroid ProjectProjectProjectProject wizard"wizard"wizard"wizard"需要知道哪个需要知道哪个需要知道哪个需要知道哪个 Activity Activity Activity Activity 将会是默认的。将会是默认的。将会是默认的。将会是默认的。ActivityActivityActivityActivity名称是必须的并且没有默认值,因此,你名称是必须的并且没有默认值,因此,你名称是必须的并且没有默认值,因此,你名称是必须的并且没有默认值,因此,你必必必必 须提供一个来继续进行(像前面警告所指出的)。由于本示例的目的,使用须提供一个来继续进行(像前面警告所指出的)。由于本示例的目的,使用须提供一个来继续进行(像前面警告所指出的)。由于本示例的目的,使用须提供一个来继续进行(像前面警告所指出的)。由于本示例的目的,使用 "HelloWorldText""HelloWorldText""HelloWorldText""HelloWorldText"。。。。这个保持应用程序简单并只是如它需求一时的描述。这个保持应用程序简单并只是如它需求一时的描述。这个保持应用程序简单并只是如它需求一时的描述。这个保持应用程序简单并只是如它需求一时的描述。 最后一个属性域,应用程序名称,指定你应用程序的名称。当它安装到设最后一个属性域,应用程序名称,指定你应用程序的名称。当它安装到设最后一个属性域,应用程序名称,指定你应用程序的名称。当它安装到设最后一个属性域,应用程序名称,指定你应用程序的名称。当它安装到设备备备备 上时,这个是被用来管理你的应用程序的名字。再次地,未来保持事情简单的上时,这个是被用来管理你的应用程序的名字。再次地,未来保持事情简单的上时,这个是被用来管理你的应用程序的名字。再次地,未来保持事情简单的上时,这个是被用来管理你的应用程序的名字。再次地,未来保持事情简单的 缘故,用缘故,用缘故,用缘故,用"HelloWorldText""HelloWorldText""HelloWorldText""HelloWorldText"作为这个程序的名称。下图显示了已完成填写的作为这个程序的名称。下图显示了已完成填写的作为这个程序的名称。下图显示了已完成填写的作为这个程序的名称。下图显示了已完成填写的"N"N"N"Newewewew AndroidAndroidAndroidAndroid ProjectProjectProjectProject wizard"wizard"wizard"wizard"。。。。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 67676767 版权©2008 McGraw-Hill 公司 贴士:贴士:贴士:贴士: ---------------------------------------------------- 应用程序名称和应用程序名称和应用程序名称和应用程序名称和Activity Activity Activity Activity 名称输入域不是必须相一致的。实际上,许多项名称输入域不是必须相一致的。实际上,许多项名称输入域不是必须相一致的。实际上,许多项名称输入域不是必须相一致的。实际上,许多项 目使用了更旧的习惯:一个应用程序目使用了更旧的习惯:一个应用程序目使用了更旧的习惯:一个应用程序目使用了更旧的习惯:一个应用程序""""启动启动启动启动""""屏幕通常被叫做屏幕通常被叫做屏幕通常被叫做屏幕通常被叫做MainMainMainMain或或或或StartupStartupStartupStartup。。。。 使用任何你舒适的习惯。由于示范目的,本章假设你使用了建议的名称。使用任何你舒适的习惯。由于示范目的,本章假设你使用了建议的名称。使用任何你舒适的习惯。由于示范目的,本章假设你使用了建议的名称。使用任何你舒适的习惯。由于示范目的,本章假设你使用了建议的名称。 点击点击点击点击"Finish""Finish""Finish""Finish"来结束创建过程。向导运行一个后台进程,帮助一些必须文来结束创建过程。向导运行一个后台进程,帮助一些必须文来结束创建过程。向导运行一个后台进程,帮助一些必须文来结束创建过程。向导运行一个后台进程,帮助一些必须文件件件件 自动生成,并创建支持自动生成,并创建支持自动生成,并创建支持自动生成,并创建支持AndroidAndroidAndroidAndroid应用程序项目需要的目录结构。当该过程完成应用程序项目需要的目录结构。当该过程完成应用程序项目需要的目录结构。当该过程完成应用程序项目需要的目录结构。当该过程完成,,,, 你将拥有你第一个 你将拥有你第一个 你将拥有你第一个 你将拥有你第一个 AndroidAndroidAndroidAndroid应用程序项目,如图 应用程序项目,如图 应用程序项目,如图 应用程序项目,如图 5-25-25-25-2所示。所示。所示。所示。 图图图图 5-25-25-25-2 你第一个你第一个你第一个你第一个AndroidAndroidAndroidAndroid应用程序项目应用程序项目应用程序项目应用程序项目 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 68686868 版权©2008 McGraw-Hill 公司 贴士:贴士:贴士:贴士: ------------------------------------------------ 如果如果如果如果"Finish""Finish""Finish""Finish"按钮不能使用,你可能在这些属性域中的输入框里犯了错误。按钮不能使用,你可能在这些属性域中的输入框里犯了错误。按钮不能使用,你可能在这些属性域中的输入框里犯了错误。按钮不能使用,你可能在这些属性域中的输入框里犯了错误。 确保属性域被正确地填写,如果任何一个你键入的可能导致问题,确保属性域被正确地填写,如果任何一个你键入的可能导致问题,确保属性域被正确地填写,如果任何一个你键入的可能导致问题,确保属性域被正确地填写,如果任何一个你键入的可能导致问题,EclipseEclipseEclipseEclipse将将将将不不不不 会允许你结束该过程。会允许你结束该过程。会允许你结束该过程。会允许你结束该过程。 下一部分细述自动生成的下一部分细述自动生成的下一部分细述自动生成的下一部分细述自动生成的AndroidAndroidAndroidAndroid文件内容和许多框架项目对于你的程序文件内容和许多框架项目对于你的程序文件内容和许多框架项目对于你的程序文件内容和许多框架项目对于你的程序 的目的。的目的。的目的。的目的。 细述细述细述细述Android-Android-Android-Android-生成文件生成文件生成文件生成文件 本部分讨论本部分讨论本部分讨论本部分讨论AndroidAndroidAndroidAndroid已经为你创建的新文件。一个相当健壮的架构已经为已经为你创建的新文件。一个相当健壮的架构已经为已经为你创建的新文件。一个相当健壮的架构已经为已经为你创建的新文件。一个相当健壮的架构已经为你你你你 创建了,并且如果你不知道你将要寻找什么,你可能最后在不应该放代码的地创建了,并且如果你不知道你将要寻找什么,你可能最后在不应该放代码的地创建了,并且如果你不知道你将要寻找什么,你可能最后在不应该放代码的地创建了,并且如果你不知道你将要寻找什么,你可能最后在不应该放代码的地 方添加了代码。有一些方添加了代码。有一些方添加了代码。有一些方添加了代码。有一些AndroidAndroidAndroidAndroid提供的文件你需要修改,也有一些你不应该修提供的文件你需要修改,也有一些你不应该修提供的文件你需要修改,也有一些你不应该修提供的文件你需要修改,也有一些你不应该修 改;明白了区别可能会把你从不得不重新创建工程中拯救出来。改;明白了区别可能会把你从不得不重新创建工程中拯救出来。改;明白了区别可能会把你从不得不重新创建工程中拯救出来。改;明白了区别可能会把你从不得不重新创建工程中拯救出来。 打开了你新程序,看一下包浏览器打开了你新程序,看一下包浏览器打开了你新程序,看一下包浏览器打开了你新程序,看一下包浏览器"Package"Package"Package"Package Explorer"Explorer"Explorer"Explorer",两个标签中的一,两个标签中的一,两个标签中的一,两个标签中的一个 ,个 ,个 ,个 , 位于主开发区域左边方框中。下图展示位于主开发区域左边方框中。下图展示位于主开发区域左边方框中。下图展示位于主开发区域左边方框中。下图展示"Package"Package"Package"Package Explorer"Explorer"Explorer"Explorer"的外观。的外观。的外观。的外观。 注意:注意:注意:注意: ---------------------------------------------------- 如果如果如果如果"Package"Package"Package"Package Explorer"Explorer"Explorer"Explorer"没有被打开,你可以通过选择没有被打开,你可以通过选择没有被打开,你可以通过选择没有被打开,你可以通过选择 Window|Window|Window|Window| ShowShowShowShow View|PackageView|PackageView|PackageView|Package ExplorerExplorerExplorerExplorer来实现打开。来实现打开。来实现打开。来实现打开。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 69696969 版权©2008 McGraw-Hill 公司 你应该看一下根目录,在本例中名叫你应该看一下根目录,在本例中名叫你应该看一下根目录,在本例中名叫你应该看一下根目录,在本例中名叫HelloWorldTextHelloWorldTextHelloWorldTextHelloWorldText。根目录是你所有工。根目录是你所有工。根目录是你所有工。根目录是你所有工 程文件的程文件的程文件的程文件的homehomehomehome或是容器。你的用户创建文件和或是容器。你的用户创建文件和或是容器。你的用户创建文件和或是容器。你的用户创建文件和AndroidAndroidAndroidAndroid自动生成文件将都被自动生成文件将都被自动生成文件将都被自动生成文件将都被放放放放 到这个目录中,从到这个目录中,从到这个目录中,从到这个目录中,从"Package"Package"Package"Package Explorer"Explorer"Explorer"Explorer"中轻易访问得到。当前,应该有一些项中轻易访问得到。当前,应该有一些项中轻易访问得到。当前,应该有一些项中轻易访问得到。当前,应该有一些项 目在你的根目录中。一个目在你的根目录中。一个目在你的根目录中。一个目在你的根目录中。一个AndroidManifest.XmlAndroidManifest.XmlAndroidManifest.XmlAndroidManifest.Xml文件,一个包含了相关类库的文件,一个包含了相关类库的文件,一个包含了相关类库的文件,一个包含了相关类库的 包,和三个目录包,和三个目录包,和三个目录包,和三个目录(res,assets(res,assets(res,assets(res,assets 和和和和src)src)src)src)。这些项目在下一轮中讨论。。这些项目在下一轮中讨论。。这些项目在下一轮中讨论。。这些项目在下一轮中讨论。 AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml文件是你全局设定的地方。如果你是一个文件是你全局设定的地方。如果你是一个文件是你全局设定的地方。如果你是一个文件是你全局设定的地方。如果你是一个ASP.NETASP.NETASP.NETASP.NET开发开发开发开发者 ,者 ,者 ,者 , 你能把你能把你能把你能把AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml文件想成文件想成文件想成文件想成Web.configWeb.configWeb.configWeb.config和和和和Global.asaxGlobal.asaxGlobal.asaxGlobal.asax 中的一个。中的一个。中的一个。中的一个。 ((((假如你不是假如你不是假如你不是假如你不是ASP.NETASP.NETASP.NETASP.NET开发者,这意思是开发者,这意思是开发者,这意思是开发者,这意思是AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml文件是存储设文件是存储设文件是存储设文件是存储设置置置置 的地方。的地方。的地方。的地方。)AndroidManifest.xml)AndroidManifest.xml)AndroidManifest.xml)AndroidManifest.xml文件包括像应用程序许可、文件包括像应用程序许可、文件包括像应用程序许可、文件包括像应用程序许可、ActivityActivityActivityActivity、和、和、和、和 IntentFilterIntentFilterIntentFilterIntentFilter这样的设置。这样的设置。这样的设置。这样的设置。 标准的标准的标准的标准的AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml文件应该包含以下信息:文件应该包含以下信息:文件应该包含以下信息:文件应该包含以下信息: encoding="utf-8"?>encoding="utf-8"?>encoding="utf-8"?> package="testPackage.HelloWorldText">package="testPackage.HelloWorldText">package="testPackage.HelloWorldText"> android:icon="@drawable/icon">android:icon="@drawable/icon">android:icon="@drawable/icon"> android:label="@string/app_name">android:label="@string/app_name">android:label="@string/app_name"> />/>/> />/>/> 当你创建未来的应用程序,你将会向这个文件中添加信息。记住,你提供当你创建未来的应用程序,你将会向这个文件中添加信息。记住,你提供当你创建未来的应用程序,你将会向这个文件中添加信息。记住,你提供当你创建未来的应用程序,你将会向这个文件中添加信息。记住,你提供的的的的 packagepackagepackagepackage名称在这里被列出了,你名称在这里被列出了,你名称在这里被列出了,你名称在这里被列出了,你Activity Activity Activity Activity 将要捕获的将要捕获的将要捕获的将要捕获的actionactionactionaction也列出了。也列出了。也列出了。也列出了。 AndroidAndroidAndroidAndroid:程序员指南 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 70707070 版权©2008 McGraw-Hill 公司 后面章节正在翻译中后面章节正在翻译中后面章节正在翻译中后面章节正在翻译中……………………
还剩69页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

cbgxx

贡献于2015-11-05

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf