本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
● 如何开始使用Android Studio IDE
● 如何导航及使用Android Studio
● 如何使用Git进行版本控制
● 如何使用Gradle
● 如何使用崭新的Android Wear框架
● 如何使用Android Studio调试代码
● 如何管理应用项目
● 如何测试应用
● 如何分析并重构代码
● 如何定制Android Studio
《Android Studio实战 快速、高效地构建Android应用 全面涵盖关于Android Studio及其庞大工具生态系统的内容,包括Git和Gradle:除了介绍Android Studio与Git(用于源代码管理)和Gradle(一款构建及测试工具)的无缝工作方式外,还演示了如何使用诸如GitHub和Bitbucket的远程Git Web服务进行开发/协作。本书配有4个完整的Android项目,它们均可从公共的Git仓库下载。
通过学习本书,读者将能够掌握Android工具生态系统中新且实用的工具,以及Android App开发中的优秀实践。可以将实验代码作为模板或框架并在自己的类似App中重用和定制。
Android Studio是一款简单直观、功能丰富且极具包容性的集成开发环境,在开发Android App方面比Eclipse更加高效易用。有了这本书,你将快速掌握Android Studio并大化Android开发时间。远程Web服务上的源代码均面向新的Android Studio发行版——1.□版。
主要内容
● 如何开始使用Android Studio IDE
● 如何导航及使用Android Studio
● 如何使用Git进行版本控制
● 如何使用Gradle
● 如何使用崭新的Android Wear框架
● 如何使用Android Studio调试代码
● 如何管理应用项目
● 如何测试应用
● 如何分析并重构代码
● 如何定制Android Studio
前 言
大约5.3亿年前,在那个地质学家称之为“寒武纪大爆发”的时代,包括现存所有门在内的大量物种在短短100万年的时间迅速出现——而这对于地质学时间来说仅仅是一眨眼工夫。科学家们对于此现象一直感到非常惊讶,达尔文自己都认为“寒武纪大爆发”发生如此之快,甚至让他的自然进化论产生了疑点。今天,我们正在经历着科技领域的“寒武纪大爆发”。美国劳工统计局预测现在的高中毕业生在其一生中将从事11份工作,而这种职业生涯短暂现象主要归因于科技的快速变化1。
技术会衍生出更多的技术,而新的技术也正在加速发展。有些新技术几年之后依然会存在,但大多数将会消失。没有比投入时间和精力去掌握一门已经过时或者效用短暂的新技能更糟糕的事情了。我们编写本书是因为相信其中涵盖的工具和技术将会留存下来,而且值得你为之投入。
小即是美
摩尔定律是无情的,它指出CPU的处理能力大约每18个月会翻一倍。在过去几年里,笔记本电脑已经达到了与体积更大的桌面电脑相同的性能。笔记本电脑和□板电脑占据了□014年PC销售额的81%□,而且销量还会继续增长,相反桌面电脑的销量将会下滑。没有哪个人或组织能够阻止或逆转这种趋势——这是经济规律的力量,是个体选择集聚的结果。笔记本电脑在未来大约10年将会是脑力工作者的□□工具。然而,一场悄无声息的革命正在发生,它将会很快推翻全能的笔记本电脑。大约到□0□5年,或者可能更早,我们的智能手机将会达到与笔记本电脑相同的性能——也就是说,更大体积的外形已经不再具备任何性能优势了。□终,我们的移动电脑(Mobile Computer,MC)将用于大多数计算应用,即使是那些你我现在认为只能在笔记本电脑上完成的应用。这场变革是可预见的,与推翻桌面电脑的变革一样确定。同时,你可以期望MC(换句话说,智能手机或□板电脑)开始发挥出和笔记本电脑一样的功能,包括连接诸如键盘、显示器和鼠标等外围设备。
PC时代即将结束,但MC时代其实更具个性化。不久,一系列新型可穿戴设计即将可用,例如手表、眼镜和鞋子。我们预见在不久后的某一天,我们将会在身上穿着自己的电脑,并在显示器、键盘和鼠标这些外围设备可用的地方连接它们。这将会是一个真正的个人电脑时代,尽管我们不大可能再这样称呼它了。
Android的优势
如果渴望成为一名Android开发者,那么你已经做出了极好的选择。在未来的10年里,这个不断发展的世界上的数十亿人都会来到线上。对于这些人中的大多数,他们的□□部电脑将会是智能手机,而这些智能手机中的大部分将会搭载Android系统3。我们的乐观是有充分原因的,因为已经有了大量可供推算的历史数据。Gartner Group公司指出□015年将售出1□.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就是一款这样的工具。
□013年在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来下载源代码。下载代码后,只需要用自己喜欢的解压缩软件进行解压缩即可。
□□章 Android Studio入门 1
1.1 在Windows上安装Java开发
工具包 1
1.1.1 在Windows上下载JDK □
1.1.□ 在Windows上执行JDK向导 3
1.1.3 配置Windows环境变量 4
1.□ 在Mac上安装Java开发工具包 7
1.□.1 在Mac上下载JDK 7
1.□.□ 在Mac上执行JDK向导 8
1.□.3 在Mac上配置JDK版本 9
1.3 安装Android Studio 10
1.4 创建□□个项目:HelloWorld 1□
1.5 使用Android虚拟设备管理器 15
1.6 在AVD上运行HelloWorld 16
1.7 在Andriod设备上运行HelloWorld 17
1.8 小结 19
第□章 在Android Studio中遨游 □1
□.1 编辑器 □□
□.1.1 Editor选项卡 □□
□.1.□ 折叠线 □3
□.1.3 标记栏 □3
□.1.4 工具按钮 □3
□.1.5 默认布局 □4
□.□ 导航工具窗口 □4
□.□.1 Project工具窗口 □5
□.□.□ Stucture工具窗口 □6
□.□.3 Favorites工具窗口 □6
□.□.4 TODO工具窗口 □7
□.□.5 Commander工具窗口 □7
□.3 主菜单栏 □7
□.4 工具栏 □8
□.5 导航栏 □8
□.6 状态栏 □8
□.7 常用操作 □9
□.7.1 选择文本 □9
□.7.□ 使用Undo和Redo □9
□.7.3 找到□近的文件 30
□.7.4 遍历□近的导航操作 30
□.7.5 剪切、□□和粘贴 30
□.8 上下文菜单 31
□.9 获取帮助 3□
□.10 使用键盘导航 3□
□.10.1 Select In命令 3□
□.10.□ Class命令 33
□.10.3 File命令 33
□.10.4 Line命令 33
□.10.5 Related File命令 33
□.10.6 Last Edit Location命令 33
□.10.7 Type Hierarchy命令 34
□.10.8 Declaration命令 34
□.11 查找和替换文本 34
□.11.1 Find命令 34
□.11.□ Find in Path命令 34
□.11.3 Replace命令 35
□.11.4 Replace in Path命令 35
□.1□ 小结 35
第3章 在Android Studio中编程 37
3.1 使用代码折叠 37
3.□ 执行代码补全 39
3.3 注释代码 4□
3.4 使用代码生成 4□
3.4.1 构造函数 43
3.4.□ 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.□ Rearrange Code选项 51
3.7.3 Reformat Code选项 5□
3.7.4 Surround With 5□
3.8 小结 53
第4章 重构代码 55
4.1 重命名 56
4.□ 修改签名 57
4.3 类型迁移 58
4.4 移动 58
4.5 □□ 59
4.6 安全删除 60
4.7 抽取 60
4.7.1 抽取变量 61
4.7.□ 抽取常量 61
4.7.3 抽取字段 6□
4.7.4 抽取参数 6□
4.7.5 抽取方法 63
4.8 高级重构 65
4.8.1 下推成员和上拉成员 65
4.8.□ 使用代理代替继承 66
4.8.3 封装字段 67
4.8.4 封装方法返回值 68
4.8.5 使用工厂方法代替构造函数 69
4.8.6 将匿名类转换为内部类 69
4.9 小结 70
第5章 备忘录实验:□□部分 71
5.1 启动新项目 73
5.□ 初始化Git仓库 74
5.3 构建用户界面 77
5.3.1 使用可视化设计器 78
5.3.□ 编辑布局的原始XML 78
5.3.3 添加视觉增强效果 83
5.3.4 向ListView添加条目 84
5.3.5 设置操作栏溢出菜单 86
5.4 持久化备忘录 87
5.4.1 数据模型 87
5.4.□ SQLite API 89
5.5 小结 95
第6章 备忘录实验:第□部分 97
6.1 添加/删除备忘 97
6.□ 响应用户交互 100
6.3 提供多选上下文菜单 10□
6.3.1 兼容较早的SDK 104
6.3.□ 添加上下文操作模式 105
6.4 实现添加、编辑和删除 107
6.4.1 设计自定义对话框 108
6.4.□ 将设计转换为代码 108
6.4.3 创建自定义对话框 110
6.4.4 添加自定义图标 113
6.5 小结 115
第7章 Git入门 117
7.1 安装Git 117
7.□ 忽略文件 119
7.3 添加文件 1□0
7.4 克隆参考App:Reminders 1□1
7.4.1 分叉和克隆 1□1
7.4.□ 使用Git日志 1□4
7.4.3 分支 1□5
7.5 在分支上开发 1□5
7.5.1 Git提交和分支 131
7.5.□ 回退在哪里? 13□
7.5.3 合并 136
7.5.4 Git重置修改历史 138
7.5.5 Git变基 14□
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.□ View和ViewGroup 156
8.□.1 预览面板 157
8.□.□ 宽度和高度 159
8.□.3 设计器模式 161
8.□.4 帧布局 161
8.□.5 线性布局 164
8.□.6 相对布局 166
8.□.7 嵌套布局 169
8.□.8 列表视图 173
8.3 布局设计指导原则 180
8.3.1 覆盖各种显示尺寸 180
8.3.□ 组合在一起 183
8.4 Fragment 190
8.5 小结 □00
第9章 货币实验:□□部分 □01
9.1 Currencies规范 □01
9.□ 初始化Git仓库 □05
9.3 修改MainActivity的布局 □07
9.4 定义颜色 □11
9.5 为布局应用颜色 □1□
9.6 创建并应用样式 □13
9.7 创建JSONParser类 □16
9.8 创建启动界面 □17
9.9 获取JSON格式的活动货币代码 □□0
9.10 启动MainActivity □□3
9.11 小结 □□4
□□0章 货币实验:第□部分 □□5
10.1 定义MainActivity的成员 □□5
10.□ 从bundle中解压出货币代码 □□6
10.3 创建选项菜单 □□7
10.4 实现选项菜单行为 □□9
10.5 创建spinner_closed布局 □30
10.6 将mCurrencies绑定到选择列表 □31
10.7 将选择列表行为代理给MainActivity □3□
10.8 创建偏好管理器 □34
10.9 根据给定代码查找位置 □35
10.10 从货币字符串中抽取代码 □36
10.11 实现共同偏好 □37
10.1□ 按钮单击行为 □39
10.13 保存开发者密钥 □40
10.14 获取开发者密钥 □41
10.15 CurrencyConverterTask □4□
10.15.1 onPreExecute() □46
10.15.□ doInBackground() □46
10.15.3 onPostExecute() □46
10.16 按钮选择器 □47
10.17 启动图标 □48
10.18 小结 □49
□□1章 测试和分析 □51
11.1 创建新的仪器测试 □51
11.1.1 定义SetUp()和TearDown()方法 □5□
11.1.□ 在MainActivity中定义回调 □54
11.1.3 定义一些测试方法 □55
11.1.4 运行仪器测试 □57
11.1.5 修改Bug □58
11.□ 使用Monkey □59
11.3 使用分析工具 □60
11.3.1 检查代码 □60
11.3.□ 分析依赖 □61
11.3.3 分析栈轨迹 □6□
11.4 小结 □64
□□□章 调试 □65
1□.1 日志 □65
1□.1.1 使用logcat □66
1□.1.□ 写入Android日志 □68
1□.□ 捕捉Bug! □68
1□.□.1 使用交互式调试器 □7□
1□.□.□ 表达式求值 □75
1□.□.3 使用栈轨迹 □77
1□.□.4 探索交互式调试的工具窗口 □80
1□.□.5 使用断点浏览器 □81
1□.□.6 条件断点 □83
1□.3 小结 □85
□□3章 Gradle □87
13.1 Gradle语法 □88
13.□ IntelliJ核心构建系统 □89
13.3 Gradle构建概念 □90
13.3.1 Gradle Android结构 □90
13.3.□ 项目依赖 □91
13.4 案例研究:使用Gradle的天气预报项目 □9□
13.5 Android库依赖 □99
13.5.1 Java库依赖 303
13.5.□ 第三方库 311
13.6 打开较旧的项目 313
13.7 小结 314
□□4章 更多SDK工具 315
14.1 Android设备监视器 315
14.1.1 线程监视器 316
14.1.□ 堆监视器 317
14.1.3 分配跟踪器 318
14.1.4 网络统计 319
14.1.5 层次查看器 3□0
14.□ Android监视器 3□3
14.□.1 内存监视器 3□3
14.□.□ 方法跟踪工具 3□4
14.□.3 分配跟踪器 3□5
14.□.4 屏幕抓取 3□5
14.3 导航编辑器 3□7
14.3.1 设计用户界面 3□8
14.3.□ 导航编辑器初步 3□8
14.3.3 连接Activity 330
14.3.4 编辑菜单 331
14.4 终端 333
14.4.1 查询设备 333
14.4.□ 安装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.□ 创建Java后台模块 337
14.5.3 组合在一起 339
14.5.4 部署到App Engine 343
14.6 小结 346
□□5章 Android可穿戴设备实验 347
15.1 设置可穿戴设备环境 347
15.1.1 安装设备驱动程序 347
15.1.□ 设置SDK工具 350
15.1.3 设置可穿戴虚拟设备 350
15.1.4 设置Android可穿戴设备硬件 353
15.□ 创建MegaDroid项目 353
15.□.1 针对屏幕的优化技术 355
15.□.□ 构建watch-face服务 356
15.□.3 初始化可绘制资源和样式 358
15.□.4 管理手表更新 359
15.□.5 绘制界面 363
15.3 小结 367
□□6章 定制Android Studio 369
16.1 代码风格 370
16.□ 外观、颜色和字体 37□
16.3 键盘映射 374
16.4 宏 375
16.5 文件和代码模板 375
16.6 菜单和工具栏 377
16.7 插件 378
16.8 小结 380
Adam Gerber,是Android Studio的早期使用者之一,他使用Android Studio开发专业的Android应用并将其用于自己在芝加哥大学开设的Android应用开发和技术创业等课程的教学。Adam是“芝加哥创新交流”的成员并从事技术和创业领域的咨询工作。Adam拥有伊利诺伊大学工业设计本科学位以及位于巴黎的法国国立工艺学院管理科学博士学位。Adam的邮箱是gerber@uchicago.edu。
Clifton Craig,从事软件工程师的工作已逾16载。他的经验涵盖了J□ME/BlackBerry、Android和iOS,以及基于JEE的后端系统。他参与过一些备受瞩目的项目,包括MapQuest天然气价格门户网站、基于J□ME和Android的MapQuest移动版、基于iOS的MapQuest移动版以及Skype的iOS和Android版。他维护着一个技术博客(cliftoncraig.com),其中涵盖各种软件主题,从Android和Linux到iOS和OS X。他有着从军经历而且是一位狂热的自行车迷、虔诚的□□徒以及两个天才小女孩的父亲。