描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302441533丛书名: 移动开发经典丛书
通过学习本书,读者将能够掌握Android工具生态系统中*、实用的工具,以及Android App开发中的*实践。可以将实验代码作为模板或框架并在自己的类似App中重用和定制。
Android Studio是一款简单直观、功能丰富且极具包容性的集成开发环境,在开发Android App方面比Eclipse更加高效易用。有了这本书,你将快速掌握Android Studio并*化Android开发时间。远程Web服务上的源代码均面向*的Android Studio发行版——1.2版。
主要内容
● 如何开始使用Android Studio IDE
● 如何导航及使用Android Studio
● 如何使用Git进行版本控制
● 如何使用Gradle
● 如何使用崭新的Android Wear框架
● 如何使用Android Studio调试代码
● 如何管理应用项目
● 如何测试应用
● 如何分析并重构代码
● 如何定制Android Studio
目 录
第1章 Android Studio入门 1
1.1 在Windows上安装Java开发
工具包 1
1.1.1 在Windows上下载JDK 2
1.1.2 在Windows上执行JDK向导 3
1.1.3 配置Windows环境变量 4
1.2 在Mac上安装Java开发工具包 7
1.2.1 在Mac上下载JDK 7
1.2.2 在Mac上执行JDK向导 8
1.2.3 在Mac上配置JDK版本 9
1.3 安装Android
Studio 10
1.4 创建个项目:HelloWorld
12
1.5 使用Android虚拟设备管理器 15
1.6 在AVD上运行HelloWorld 16
1.7 在Andriod设备上运行HelloWorld 17
1.8 小结 19
第2章 在Android Studio中遨游 21
2.1 编辑器 22
2.1.1 Editor选项卡
22
2.1.2 折叠线 23
2.1.3 标记栏 23
2.1.4 工具按钮 23
2.1.5 默认布局 24
2.2 导航工具窗口 24
2.2.1 Project工具窗口 25
2.2.2 Stucture工具窗口 26
2.2.3 Favorites工具窗口 26
2.2.4 TODO工具窗口
27
2.2.5 Commander工具窗口 27
2.3 主菜单栏 27
2.4 工具栏 28
2.5 导航栏 28
2.6 状态栏 28
2.7 常用操作 29
2.7.1 选择文本 29
2.7.2 使用Undo和Redo 29
2.7.3 找到近的文件 30
2.7.4 遍历近的导航操作
30
2.7.5 剪切、复制和粘贴
30
2.8 上下文菜单 31
2.9 获取帮助 32
2.10 使用键盘导航 32
2.10.1 Select In命令 32
2.10.2 Class命令
33
2.10.3 File命令 33
2.10.4 Line命令 33
2.10.5 Related File命令 33
2.10.6 Last Edit Location命令 33
2.10.7 Type Hierarchy命令 34
2.10.8 Declaration命令 34
2.11 查找和替换文本 34
2.11.1 Find命令 34
2.11.2 Find in Path命令 34
2.11.3 Replace命令
35
2.11.4 Replace in Path命令 35
2.12 小结 35
第3章 在Android Studio中编程 37
3.1 使用代码折叠 37
3.2 执行代码补全 39
3.3 注释代码 42
3.4 使用代码生成 42
3.4.1 构造函数 43
3.4.2 getter/setter 44
3.4.3 重载方法 44
3.4.4 toString()方法 45
3.4.5 代理方法 46
3.5 插入动态模板 47
3.6 移动代码 48
3.7 设计代码风格 50
3.7.1 Auto-Indent Lines选项 51
3.7.2 Rearrange Code选项 51
3.7.3 Reformat Code选项 52
3.7.4 Surround With 52
3.8 小结 53
第4章 重构代码 55
4.1 重命名 56
4.2 修改签名 57
4.3 类型迁移 58
4.4 移动 58
4.5 复制 59
4.6 安全删除 60
4.7 抽取 60
4.7.1 抽取变量 61
4.7.2 抽取常量 61
4.7.3 抽取字段 62
4.7.4 抽取参数 62
4.7.5 抽取方法 63
4.8 高级重构 65
4.8.1 下推成员和上拉成员
65
4.8.2 使用代理代替继承
66
4.8.3 封装字段 67
4.8.4 封装方法返回值 68
4.8.5 使用工厂方法代替构造函数 69
4.8.6 将匿名类转换为内部类
69
4.9 小结 70
第5章 备忘录实验:第1部分 71
5.1 启动新项目 73
5.2 初始化Git仓库 74
5.3 构建用户界面 77
5.3.1 使用可视化设计器
78
5.3.2 编辑布局的原始XML
78
5.3.3 添加视觉增强效果
83
5.3.4 向ListView添加条目 84
5.3.5 设置操作栏溢出菜单
86
5.4 持久化备忘录 87
5.4.1 数据模型 87
5.4.2 SQLite API 89
5.5 小结 95
第6章 备忘录实验:第2部分 97
6.1 添加/删除备忘 97
6.2 响应用户交互 100
6.3 提供多选上下文菜单
102
6.3.1 兼容较早的SDK
104
6.3.2 添加上下文操作模式
105
6.4 实现添加、编辑和删除
107
6.4.1 设计自定义对话框
108
6.4.2 将设计转换为代码
108
6.4.3 创建自定义对话框
110
6.4.4 添加自定义图标
113
6.5 小结 115
第7章 Git入门 117
7.1 安装Git 117
7.2 忽略文件 119
7.3 添加文件 120
7.4 克隆参考App:Reminders 121
7.4.1 分叉和克隆 121
7.4.2 使用Git日志 124
7.4.3 分支 125
7.5 在分支上开发 125
7.5.1 Git提交和分支
131
7.5.2 回退在哪里? 132
7.5.3 合并 136
7.5.4 Git重置修改历史
138
7.5.5 Git变基 142
7.5.6 分离头部 144
7.5.7 相对引用 146
7.5.8 在变基时解决冲突
148
7.5.9 Git远端 153
7.6 小结 154
第8章 设计布局 155
8.1 Activity 155
8.2 View和ViewGroup
156
8.2.1 预览面板 157
8.2.2 宽度和高度 159
8.2.3 设计器模式 161
8.2.4 帧布局 161
8.2.5 线性布局 164
8.2.6 相对布局 166
8.2.7 嵌套布局 169
8.2.8 列表视图 173
8.3 布局设计指导原则 180
8.3.1 覆盖各种显示尺寸
180
8.3.2 组合在一起 183
8.4 Fragment 190
8.5 小结 200
第9章 货币实验:第1部分 201
9.1 Currencies规范
201
9.2 初始化Git仓库 205
9.3 修改MainActivity的布局 207
9.4 定义颜色 211
9.5 为布局应用颜色 212
9.6 创建并应用样式 213
9.7 创建JSONParser类 216
9.8 创建启动界面 217
9.9 获取JSON格式的活动货币代码 220
9.10 启动MainActivity
223
9.11 小结 224
第10章 货币实验:第2部分 225
10.1 定义MainActivity的成员 225
10.2 从bundle中解压出货币代码 226
10.3 创建选项菜单 227
10.4 实现选项菜单行为
229
10.5 创建spinner_closed布局 230
10.6 将mCurrencies绑定到选择列表 231
10.7 将选择列表行为代理给MainActivity
232
10.8 创建偏好管理器 234
10.9 根据给定代码查找位置
235
10.10 从货币字符串中抽取代码 236
10.11 实现共同偏好 237
10.12 按钮单击行为 239
10.13 保存开发者密钥
240
10.14 获取开发者密钥
241
10.15 CurrencyConverterTask 242
10.15.1 onPreExecute() 246
10.15.2 doInBackground() 246
10.15.3 onPostExecute() 246
10.16 按钮选择器 247
10.17 启动图标 248
10.18 小结 249
第11章 测试和分析 251
11.1 创建新的仪器测试
251
11.1.1 定义SetUp()和TearDown()方法 252
11.1.2 在MainActivity中定义回调 254
11.1.3 定义一些测试方法
255
11.1.4 运行仪器测试
257
11.1.5 修改Bug 258
11.2 使用Monkey
259
11.3 使用分析工具 260
11.3.1 检查代码 260
11.3.2 分析依赖 261
11.3.3 分析栈轨迹 262
11.4 小结 264
第12章 调试 265
12.1 日志 265
12.1.1 使用logcat
266
12.1.2 写入Android日志 268
12.2 捕捉Bug! 268
12.2.1 使用交互式调试器
272
12.2.2 表达式求值 275
12.2.3 使用栈轨迹 277
12.2.4 探索交互式调试的工具窗口 280
12.2.5 使用断点浏览器
281
12.2.6 条件断点 283
12.3 小结 285
第13章 Gradle 287
13.1 Gradle语法
288
13.2 IntelliJ核心构建系统 289
13.3 Gradle构建概念
290
13.3.1 Gradle Android结构 290
13.3.2 项目依赖 291
13.4 案例研究:使用Gradle的天气预报项目 292
13.5 Android库依赖
299
13.5.1 Java库依赖
303
13.5.2 第三方库 311
13.6 打开较旧的项目 313
13.7 小结 314
第14章 更多SDK工具 315
14.1 Android设备监视器 315
14.1.1 线程监视器 316
14.1.2 堆监视器 317
14.1.3 分配跟踪器 318
14.1.4 网络统计 319
14.1.5 层次查看器 320
14.2 Android监视器
323
14.2.1 内存监视器 323
14.2.2 方法跟踪工具
324
14.2.3 分配跟踪器 325
14.2.4 屏幕抓取 325
14.3 导航编辑器 327
14.3.1 设计用户界面
328
14.3.2 导航编辑器初步
328
14.3.3 连接Activity
330
14.3.4 编辑菜单 331
14.4 终端 333
14.4.1 查询设备 333
14.4.2 安装APK 333
14.4.3 下载文件 333
14.4.4 上传文件 333
14.4.5 端口转发 334
14.5 Google云工具
334
14.5.1 创建HelloCloud前端 335
14.5.2 创建Java后台模块 337
14.5.3 组合在一起 339
14.5.4 部署到App
Engine 343
14.6 小结 346
第15章 Android可穿戴设备实验 347
15.1 设置可穿戴设备环境
347
15.1.1 安装设备驱动程序
347
15.1.2 设置SDK工具 350
15.1.3 设置可穿戴虚拟设备
350
15.1.4 设置Android可穿戴设备硬件 353
15.2 创建MegaDroid项目 353
15.2.1 针对屏幕的优化技术
355
15.2.2 构建watch-face服务 356
15.2.3 初始化可绘制资源和样式 358
15.2.4 管理手表更新
359
15.2.5 绘制界面 363
15.3 小结 367
第16章 定制Android Studio 369
16.1 代码风格 370
16.2 外观、颜色和字体
372
16.3 键盘映射 374
16.4 宏 375
16.5 文件和代码模板 375
16.6 菜单和工具栏 377
16.7 插件 378
16.8 小结 380
前 言
大约5.3亿年前,在那个地质学家称之为“寒武纪大爆发”的时代,包括现存所有门在内的大量物种在短短100万年的时间迅速出现——而这对于地质学时间来说仅仅是一眨眼工夫。科学家们对于此现象一直感到非常惊讶,达尔文自己都认为“寒武纪大爆发”发生如此之快,甚至让他的自然进化论产生了疑点。今天,我们正在经历着科技领域的“寒武纪大爆发”。美国劳工统计局预测现在的高中毕业生在其一生中将从事11份工作,而这种职业生涯短暂现象主要归因于科技的快速变化1。
技术会衍生出更多的技术,而新的技术也正在加速发展。有些新技术几年之后依然会存在,但大多数将会消失。没有比投入时间和精力去掌握一门已经过时或者效用短暂的新技能更糟糕的事情了。我们编写本书是因为相信其中涵盖的工具和技术将会留存下来,而且值得你为之投入。
小即是美
摩尔定律是无情的,它指出CPU的处理能力大约每18个月会翻一倍。在过去几年里,笔记本电脑已经达到了与体积更大的桌面电脑相同的性能。笔记本电脑和平板电脑占据了2014年PC销售额的81%2,而且销量还会继续增长,相反桌面电脑的销量将会下滑。没有哪个人或组织能够阻止或逆转这种趋势——这是经济规律的力量,是个体选择集聚的结果。笔记本电脑在未来大约10年将会是脑力工作者的工具。然而,一场悄无声息的革命正在发生,它将会很快推翻全能的笔记本电脑。大约到2025年,或者可能更早,我们的智能手机将会达到与笔记本电脑相同的性能——也就是说,更大体积的外形已经不再具备任何性能优势了。终,我们的移动电脑(Mobile Computer,MC)将用于大多数计算应用,即使是那些你我现在认为只能在笔记本电脑上完成的应用。这场变革是可预见的,与推翻桌面电脑的变革一样确定。同时,你可以期望MC(换句话说,智能手机或平板电脑)开始发挥出和笔记本电脑一样的功能,包括连接诸如键盘、显示器和鼠标等外围设备。
PC时代即将结束,但MC时代其实更具个性化。不久,一系列新型可穿戴设计即将可用,例如手表、眼镜和鞋子。我们预见在不久后的某一天,我们将会在身上穿着自己的电脑,并在显示器、键盘和鼠标这些外围设备可用的地方连接它们。这将会是一个真正的个人电脑时代,尽管我们不大可能再这样称呼它了。
Android的优势
如果渴望成为一名Android开发者,那么你已经做出了极好的选择。在未来的10年里,这个不断发展的世界上的数十亿人都会来到线上。对于这些人中的大多数,他们的部电脑将会是智能手机,而这些智能手机中的大部分将会搭载Android系统3。我们的乐观是有充分原因的,因为已经有了大量可供推算的历史数据。Gartner Group公司指出2015年将售出12.5亿部Android设备4。在撰写本书时,Android独占了超过四分之三的中国市场份额5,而中国消费者在移动设备上的投入是惊人的,一些人会在新款移动设备上花费70%的月薪,因为互联是参与全球经济的先决条件6。在数量上,中国是的市场,但我们能够在所有发展中国家观察到类似的趋势。更进一步,由于Android操作系统是开源免费的,因此它几乎总是电视游戏机、游戏系统、增强现实系统以及大量其他电子设备厂商的。
出于多种原因,Android将继续巩固其在全球市场的主导地位。Android的模块化架构允许进行各种各样的配置和定制。Android设备标配的所有核心应用均可以被任意数量的第三方应用替代,这包括类似电话拨号器、电子邮件客户端、浏览器甚至操作系统导航器等应用。可用的Android设备有着各种各样令人惊讶的形状和功能,有Android增强现实眼镜、Android游戏机(Ouya是著名的)、Android手表、各种尺寸的Android平板电脑,当然还有Android智能手机。
Android的核心技术毫不逊色于它的主要竞争者。Android的包容性和开源许可证已经吸引了大量盟友,包括三星——全球创新性的公司之一。免费7和可定制的操作系统意味着Android设备厂商可以专注于向市场上推出优秀的产品,而高度竞争的Android设备市场也会持续生产出廉价、高质量且结构上开放的设备。
Android Studio是革命性的
作为一名脑力劳动者,工具的选择极其重要。我们总是在寻求可以提高生产效率并能自动完成工作的工具。某些工具有着显而易见的好处,人们会立刻采纳它。Android Studio就是一款这样的工具。
2013年在Google I/O预发布Android
Studio几天之后,我们就接触了它。在那以前,我们在专业领域和教学时均使用Android开发者工具(Android Developer Tool,ADT)。ADT是一个Android开发环境,内置于一个称为Eclipse的开源集成开发环境(IDE)中。虽然Android Studio仍处于早期预发布阶段,但我们已开始在专业领域内使用Android
Studio。
Android Studio是JetBrains和Google合作的产物。Android Studio基于JetBrain的IntelliJ构建,因此其功能是IntelliJ的超集。能够使用IntelliJ做到的大多数事情,都可以在Android Studio中完成。Android Studio是革命性的,因为它流程化了Android开发过程并让Android开发比以前更加容易接近8。Android
Studio目前是Android的官方IDE。
Android工具生态系统
Android是一个有着自身工具生态系统支持的技术平台。紧随Android Studio之后,Git是Android生态系统中下一个重要的工具。Git是一款分布式的源代码管理工具,它正在迅速成为标准,不仅是在移动开发领域,而是在整个软件工程领域。我们所有的移动开发项目均使用Git来做版本控制,没有例外。Git足可以用一本书来介绍,但幸运的是,你无须了解Git的所有功能就可以熟练地使用它。Android Studio包含优秀的、全功能的且已集成的Git工具,它有着令人印象深刻的图形用户界面。本书涵盖了成为高效Git用户所需要了解的特性,如果想要深入掌握关于这个不可或缺工具的知识,我们为你指出了进一步学习所需的资源。
Android生态系统中的另一个重要工具是Gradle。Gradle是一款类似于Ant和Maven的构建工具,它允许你管理库和库项目、运行仪器测试以及创建条件构建。Android Studio在库管理方面本身已经很不错了,但Gradle使得此项任务更加便捷。与Git一样,Gradle已经完全集成到Android
Studio,而且拥有令人印象深刻的界面,使得用户能够图形化地检查Gradle文件并监测Gradle构建过程的输出。
Android和Java
如果在没有充分了解Java的情况下尝试在Android
Studio中开发Android App,那么你将会遭遇挫折。出于诸多原因,Java是一门极其有用且流行的编程语言。或许Java流行的重要原因是其内存托管机制。内存托管意味着程序员不必考虑释放堆内存,也不必担心内存泄漏。在内存托管环境中进行开发的程序员通常更高效,而且程序的运行时错误会更少。和Java类似,Android也是一种内存托管的编程环境。托管内存被证明是一个非常好的思路,使得微软和苹果公司均在各自的移动开发平台中采用了此模型9。
从ADT/Eclipse转型
如果你是一位有经验的Android开发者而且习惯使用ADT编程,那么你会收获惊喜。幸运的是,所有SDK工具(例如DDMS和Hierarchy Viewer)都依然可用,你将发现在Android Studio中很容易就可以访问到它们。如果你是一位ADT用户,那么你可能需要不断地清理并重新构建项目,以便资源能够与源代码同步(可怕的R.java同步错误)。在使用Android
Studio的这些日子里,我们一直没有被这个问题困扰过。如果你是一位有经验的ADT用户,那么为了提升使用Android Studio的效率,你将需要学习一些键盘快捷键、熟悉Gradle以及适应Android Studio的表现逻辑。总而言之,享受Android Studio带来的强大功能和乐趣只需付出很小的代价。
本书约定
Android Studio在操作系统之间保持了高度的一致性。事实上,Windows和Linux中的用户界面几乎就是一样的。不过,Mac OS用户将会发现部分菜单的位置和键盘快捷键是不同的。当涉及需要系统导航的内容时,我们使用Windows。不过,当给出键盘快捷键时,我们将同时包含Windows-Linux和Mac快捷键,中间使用竖线分隔(例如,Ctrl K
| Cmd K)。我们会适时为Mac用户给出提示、链接和其他资源。
源代码
读者在学习本书中的示例时,可以手动输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从http://www.apress.com下载,还可访问www.tupwk.com.cn/downpage来下载源代码。下载代码后,只需要用自己喜欢的解压缩软件进行解压缩即可。
评论
还没有评论。