前 言
大约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来下载源代码。下载代码后,只需要用自己喜欢的解压缩软件进行解压缩即可。