Android编程实战

更多详情

内容简介: 《Android编程实战》针对如火如荼的Android 市场,深入挖掘Android 平台的功能,帮助开发者构建更高级的应用程序。书中内容包括三大部分。第一部分介绍了Android 开发者可用的工具及用于Android 开发的Java 编程语言。第二部分介绍了核心Android 组件及其最优使用方式。第三部分主要介绍一些最新技术,包括Android 平台及可供Android 设备使用的服务。
《Android编程实战》适合具有Android 编程经验并想进一步学习高级API 和技巧的Android 开发者,也适合使用Java 语言编程并且希望学习一门新语言的程序员,以及所有喜欢测试新特性、乐于尝试新事物的读者。
你是否从事Android操作系统开发,会创建简单的Android应用,但想进一步提升自己的开发技巧?你是否想深入挖掘Android操作系统的特性与功能,挑战现有开发水准?你是否正在想方设法创建高级、直观、创新的Android应用?毫无疑问,这本书适合你。
《Android编程实战》从自定义视图、多点触摸手势讲起,到集成在线Web服务,进一步扩展到探索地理围栏和活动识别等新技术。作为一名经验丰富的Android工程师,Erik Hellman通过本书深入剖析了一些专业技巧、诀窍、容易绊倒开发者的陷阱,以及一些鲜为人知的技术:
优化组件,以实现尽可能流畅的用户体验
创建自定义视图
全面理解Android SDK
掌握Android Studio和Gradle
使用Android音频、视频和图形API
文本转语音以及语音识别项目
充分利用新的Android位置API
使用Android连接技术与远程设备通信
执行后台处理
使用Android加密API
找到并安全使用隐藏API
使用Google Play Service为应用启用云计算
在Google Play Store中发布和销售应用

目录: 《Android编程实战》
第一部分 构建更好的基础
第1章 完善开发环境  2
1.1  可供选择的操作系统  2
1.2  Android SDK进阶  2
1.2.1  adb工具  3
1.2.2  用Monkey对应用UI做压力测试  5
1.2.3  在Android上使用Gradle构建系统  6
1.2.4  用ProGuard优化和混淆代码  9
1.3  Android库项目以及第三方库  9
1.3.1  使用JAR库  9
1.3.2  创建库项目  10
1.4  版本控制和源代码管理  11
1.5  熟练使用IDE  13
1.5.1  调试Android应用  14
1.5.2  使用lint做静态代码分析  15
1.5.3  重构代码  18
1.6  Android设备上的Developer选项  20
1.7  小结  22
1.8  延伸阅读  22
第2章 在Android上编写高效的Java代码  23
2.1  比较Android上的Dalvik Java和
Java SE  23
2.2  优化Android上的Java代码  25
2.2.1  Android上的类型安全枚举  26
2.2.2  Android中增强版的for循环  27
2.2.3  队列、同步和锁  28
2.3  管理和分配内存  30
2.4  Android中的多线程  33
2.4.1  Thread类  34
2.4.2  AsyncTask  35
2.4.3  Handler类  36
2.4.4  选择合适的线程  41
2.5  小结  41
2.6  延伸阅读  42
第二部分 充分利用组件
第3章 组件、清单及资源  44
3.1  Android组件  44
3.1.1  Activity  44
3.1.2  Service  45
3.1.3  BroadcastReceiver  45
3.1.4  ContentProvider  46
3.1.5  Application  46
3.1.6  应用架构  48
3.2  应用程序清单  49
3.2.1  manifest元素  49
3.2.2  Google Play过滤器和权限  50
3.2.3  application节点元素  51
3.2.4  组件元素和属性  52
3.2.5  Intent过滤  53
3.3  resources和assets  55
3.3.1  高级string资源  55
3.3.2  本地化  57
3.3.3  使用资源限定符  58
3.3.4  使用assets  59
3.4  小结  59
3.5  延伸阅读  60
第4章 Android用户体验和界面设计  61
4.1  用户故事  61
4.2  Android UI设计  62
4.2.1  导航  63
4.2.2  用户界面原型  63
4.3  Android用户界面元素  64
4.4  Android应用程序文本  65
4.4.1  字体  65
4.4.2  文本布局  65
4.5  尺寸和大小  66
4.5.1  推荐尺寸  66
4.5.2  图标大小  67
4.5.3  字体大小  67
4.6  颜色  68
4.7  图像和图标  69
4.7.1  典型透视  69
4.7.2  几何离子  70
4.7.3  人脸识别  70
4.8  可用性  71
4.9  用户奖励机制  71
4.10  小结  73
4.11  延伸阅读  73
第5章 Android用户界面操作  75
5.1  Activity和Fragment  75
5.2  使用多个屏幕  77
5.3  设计自定义视图  79
5.3.1  View的生命周期  79
5.3.2  钢琴键盘部件  80
5.4  多点触控  85
5.4.1  PointerCoordinates  87
5.4.2  旋转手势  87
5.5  OpenGL ES  89
5.6  小结  90
5.7  延伸阅读  90
第6章 Service和后台任务  91
6.1  何时以及如何使用Service  91
6.2  理解Service生命周期  92
6.2.1  Service的创建和销毁  92
6.2.2  启动Service  92
6.2.3  绑定Service  94
6.2.4  保持活跃  96
6.2.5  停止Service  97
6.3  在后台运行  99
6.3.1  IntentService  99
6.3.2  并行执行  100
6.4  和Service通信  103
6.4.1  使用Intent进行异步消息传递  103
6.4.2  本地绑定的Servcie  104
6.5  小结  107
6.6  延伸阅读  108
第7章 Android IPC  109
7.1  Binder简介  109
7.1.1  Binder地址  110
7.1.2  Binder事务  111
7.1.3  Parcel  112
7.1.4  link to death  114
7.2  设计API  114
7.2.1  AIDL  115
7.2.2  Messenger  119
7.2.3  使用库工程包装API  122
7.3  保护远程API  125
7.4  小结  126
7.5  延伸阅读  126
第8章 掌握BroadcastReceiver以及配置更改  127
8.1  BroadcastReceiver  128
8.1.1  本地BroadcastReceiver  129
8.1.2  普通广播和有序广播  130
8.1.3  粘性广播  132
8.1.4  定向广播  132
8.1.5  启用和禁用广播接收器  133
8.1.6  系统广播Intent  133
8.2  设备配置更改  137
8.3  小结  137
8.4  延伸阅读  138
第9章 数据存储和序列化技术  139
9.1  Android持久化选项  139
9.2  在偏好文件中存储数据  140
9.3  用户选项和设置用户界面  142
9.4  高性能ContentProvider  144
9.4.1  Android数据库设计  144
9.4.2  创建和升级数据库  145
9.4.3  实现查询方法  147
9.4.4  数据库事务  149
9.4.5  在ContentProvider中存储二进制数据  150
9.5  序列化数据  152
9.5.1  JSON  152
9.5.2  使用Gson进行高级JSON处理  154
9.5.3  Google Protocol Buffer  156
9.6  应用数据备份  159
9.7  小结  160
9.8  延伸阅读  160
第10章 编写自动化测试  162
10.1  Android测试原则  162
10.1.1  测试内容  163
10.1.2  基本的单元测试  163
10.1.3  测试Activity  165
10.1.4  测试Service  167
10.1.5  测试ContentProvider  168
10.1.6  运行测试  171
10.2  持续集成  172
10.3  小结  173
10.4  延伸阅读  173
第三部分 超越极限
第11章 高级音频、视频及相机应用  176
11.1  高级音频应用  176
11.1.1  低延迟音频  176
11.1.2  OpenSL ES  179
11.1.3  文字转语音  183
11.1.4  语音识别  184
11.2  使用OpenGL ES 2.0处理视频  186
11.3  使用OpenGL ES 2.0处理相机  190
11.4  多媒体编码  192
11.5  小结  196
11.6  延伸阅读  196
第12章 Android应用安全问题  197
12.1  Android安全的概念  197
12.1.1  签名和密钥  197
12.1.2  Android权限  198
12.1.3  保护用户数据  199
12.1.4  验证调用应用  200
12.2  客户端数据加密  201
12.2.1  Android的加密API  201
12.2.2  生成密钥  201
12.2.3  加密数据  202
12.2.4  解密数据  202
12.2.5  处理加密数据  203
12.3  Android的钥匙链管理  204
12.4  设备管理API  208
12.5  小结  211
12.6  扩展阅读  212
第13章 地图、位置和活动API  213
13.1  融合位置管理器  213
13.2  集成Google Maps v2  214
13.3  使用Google Maps  216
13.3.1  地图标记  217
13.3.2  绘制圆形区域  218
13.3.3  绘制多边形  219
13.3.4  有用的位置API工具  220
13.3.5  地理编码  221
13.4  使用LocationClient  222
13.5  地理围栏  223
13.6  活动识别  225
13.7  小结  227
13.8  延伸阅读  228
第14章 本地代码和JNI  229
14.1  关于CPU体系结构  229
14.2  用C语言编写Android应用程序  230
14.2.1  Android NDK编译脚本  230
14.2.2  本地Activity  231
14.3  使用JNI  232
14.3.1  从Java调用本地函数  232
14.3.2  从本地调用Java方法  235
14.4  Android本地API  238
14.4.1  C语言库  238
14.4.2  本地Android日志  238
14.4.3  本地OpenGL ES 2.0  238
14.4.4  OpenSL ES中的本地音频  239
14.5  移植本地库到Android  239
14.6  小结  245
14.7  延伸阅读  245
第15章 隐藏的Android API  246
15.1  官方API和隐藏API  246
15.2  发现隐藏API  247
15.3  安全地调用隐藏API  249
15.3.1  从设备中提取隐藏API  249
15.3.2  使用反射调用隐藏API  252
15.4  隐藏API示例  252
15.4.1  接收和阅读SMS  252
15.4.2  Wi-Fi网络共享  254
15.4.3  隐藏设置  255
15.5  小结  256
15.6  延伸阅读  256
第16章 深入研究Android平台  257
16.1  解锁设备  258
16.1.1  刷新出厂映像  259
16.1.2  解锁非Nexus设备  259
16.1.3  社区支持的固件  260
16.2  Android源码  260
16.2.1  设置构建环境  260
16.2.2  构建并刷新固件  261
16.3  编写系统应用  262
16.3.1  平台证书  262
16.3.2  编写签名的应用  263
16.4  探索Android平台  265
16.4.1  设置IDE  265
16.4.2  Android项目  265
16.4.3  Android Linux Kernel  267
16.4.4  添加系统服务  267
16.4.5  加快平台开发周期  270
16.5  为AOSP贡献代码  271
16.6  小结  273
16.7  延伸阅读  273
第17章 网络、Web服务和远程API  274
17.1  Android上的网络调用  274
17.1.1  HttpUrlConnection  275
17.1.2  Volley  278
17.1.3  OkHttp和SPDY  280
17.1.4  Web Socket  281
17.2  集成Web服务  285
17.2.1  Google Static Maps v2  285
17.2.2  使用OAuth2访问Foursquare API  286
17.2.3  在Android中使用Facebook SDK  290
17.2.4  寻找在线Web服务和API  294
17.3  网络和功耗  294
17.3.1  一般准则  295
17.3.2  高效的网络轮询  296
17.3.3  服务器端推送  297
17.4  小结  299
17.5  延伸阅读  299
第18章 与远程设备通信  300
18.1  Android中的连接技术  300
18.2  Android USB  301
18.3  蓝牙低功耗  303
18.4  Android Wi-Fi  306
18.4.1  服务发现  306
18.4.2  Wi-Fi Direct  308
18.5  设备上的Web服务  311
18.5.1  使用Restlet创建RESTful API  311
18.5.2  Web Socket服务器  315
18.6  小结  317
18.7  延伸阅读  317
第19章 Google Play Service  318
19.1  授权  318
19.2  Google Drive应用程序数据  321
19.3  Google Cloud Endpoint  324
19.4  谷歌云消息  327
19.5  Google Play Game Service  331
19.5.1  数据消息  333
19.5.2  消息策略  334
19.6  小结  335
19.7  延伸阅读  336
第20章 在Google Play Store发布应用  337
20.1  应用内付费  338
20.1.1  消费产品  340
20.1.2  应用内订阅  340
20.2  在应用内添加广告  341
20.2.1  定位广告  342
20.2.2  广告颜色  343
20.2.3  插播式广告  343
20.3  应用程序许可  344
20.4  APK扩展文件  345
20.4.1  创建扩展文件  346
20.4.2  下载扩展文件  346
20.5  小结  348
20.6  延伸阅读  348

前言: 引  言
正在阅读本书的读者一定很了解Android平台、智能手机和应用程序开发,也一定知道Android设备在过去几年里的飞速发展和这个平台对开发者的无限潜力。本书可以列出关于Android的一些数字和统计信息,但是这样做意义并不大,因为这些数据在读者阅读本书时很可能已然无效。显然,Android市场发展如火如荼,而且在接下来几年内,这种发展势头必将持续下去。
这种趋势简直就是Android开发者的福音,希冀成为Android开发专家的开发者们前景一片光明。移动互联网行业对专业Android应用程序开发人员的需求数量日益增长,与此同时,对于开发人员的技术要求也越来越高,因为用户需求的功能和新技术所提供的可能性要求开发者必须高瞻远瞩。
尽管谷歌为开发者提供了一套伟大的编程工具和API,开发者仍需在Android上不断创新。这就是本书的目的:进一步发挥Android平台的功能,构建更高级的应用程序。
目标读者
本书适合以下读者:具有Android编程经验并想进一步学习更高级的API和技巧;平时使用Java语言编程,但也希望学习一门新的语言;敢于尝试新事物,不管是新的IDE还是全新的API;喜欢测试所有新特性并且在刚开始遇到失败时不会气馁。
本书并非是关于Android开发的入门图书,而是针对具有Android应用程序开发经验的读者。读者需要了解Android的基本知识,能使用Activity、Service、BroadcastReceiver和ContentProvider这些类创建应用程序。读者需要熟悉有关应用程序清单的核心概念以及不同类型的应用程序资源。如果读者能够在几分钟内构建一个简单的Android应用程序,那么将可以很好地理解本书内容。
本书的目的是带领读者挑战极限。每一章都试图对开发者通常所了解以及日常使用的知识加以延伸。尽管读者可能对书中的某些章节很熟悉,但本书会对这些章节展开更深入的讨论。所以,Android开发者们大可放心,本书绝对会提供新东西。
本书内容
Android平台发展速度惊人。即使是在本书撰写期间,也不得不改变原先撰写计划,因为谷歌不断为Android开发者推出新的API、工具和技术。书中许多示例需要较新的Android版本,本书假定读者熟悉不同的API级别,知道每个用例需要使用哪个Android版本。
本书主要讨论对于Android开发者有价值的技术,而某些技术并未涵盖在内,是因为它们没有“超越极限”,或者说对本书的实际价值不大。因此,这本书不是有关Android应用程序开发的方法论,也不是一一罗列所有特性,而是在每章都深入探讨相关的技术细节。本书也不会提供完整的应用程序,而是提供大量代码供开发者改进自己的应用。
由于经验不尽相同,开发者可能会遇到不太熟悉的技术。例如,第12章介绍了安全话题,需要读者对数据加密、私钥/公钥有基本的了解;第18章涉及USB通信、蓝牙低功耗和Wi-Fi Direct技术。但读者不必担心,涉及较陌生技术时,本书会提供让读者找到更多相关信息的资源。每章都有“延伸阅读”部分,列出了书籍或网站等资源,以供读者进一步了解相关主题。
本书结构
本书包括三大部分。第一部分介绍了Android开发者可用的工具及用于Android开发的Java编程语言。第二部分介绍了核心Android组件及其最优使用方式。第三部分主要介绍一些最新和最先进的技术,包括Android平台及可供Android设备使用的服务。
第一部分:构建更好的基础
第1章:完善开发环境介绍Android开发工具。这一章介绍用于Android开发的新的IDE——
Android Studio,简单介绍目前标准的Android应用程序构建系统Gradle。
第2章:在Android上编写高效的Java代码侧重于Java编程语言和Android的相关细节。这一章讨论一些能够减少内存负载和Dalvik垃圾回收器负载的技巧,并用示例展现各种多线程实现的优缺点。
第二部分:充分利用组件
第3章:组件、清单及资源概述了各种组件,描述了应用程序清单中较少用到的方面,给出了Android资源高级用法的示例。
第4章:Android用户体验和界面设计主要介绍用户界面设计的相关理论。这一章详细阐述了如何设计用户界面。先是介绍了用户故事、人物角色和应用程序各种屏幕块的设计过程,接着解释了用户如何思考、反馈及理解用户界面的各个方面,然后深入探讨了字体的相关细节及影响字体可读性的因素。这一章会让读者更好地了解优秀设计背后的理论,并在日后的界面设计中加以应用。
第5章:Android用户界面操作侧重介绍Android UI中的技术方面。这一章介绍了如何使用新API适配不同设备屏幕,呈现如何创建自定义视图的完整示例,最后介绍较高级的多点触控操作技术。
第6章:Service和后台任务主要介绍如何在应用程序中使用Service组件实现最佳的后台操作,着重介绍未在其他应用程序发布的Service组件。
第7章:Android IPC介绍如何在同一移动设备上实现两个应用程序间的通信,详细介绍Binder及如何使用Binder创建支持插件功能的应用程序。
第8章:掌握BroadcastReceiver以及配置更改介绍了BroadcastReceiver的使用方法及如何使用它们更好地监听系统事件和配置更改。这一章介绍不同类型的广播及其使用方法,并指导如何使用接收器组件减少设备负载。
第9章:数据存储和序列化技术重点介绍数据持久化及ContentProvider组件。这一章介绍如何使用SharedPreferences,如何使用现有的Android组件创建设置页面。由于基于SQLite数据库的标准方案不能解决所有问题,这一章也会涉及高性能数据序列化方法,这些方法也可用来与Service通信。最后将详细介绍如何在应用程序中使用Android备份代理。
第10章:编写自动化测试专门介绍如何为Android应用程序编写自动化测试。这一章将提供详尽的示例,从简单的单元测试到为四大组件提供完整的集成测试。强烈建议读者认真阅读这一章的内容,因为为应用程序编写测试将大大缩短开发周期,提高代码质量。
第三部分:超越极限
第11章:高级音频、视频及相机应用讲述与图像、音频和视频相关的技术。这一章将介绍不同音频API的使用方法,包括如何使用OpenSL ES实现音频的高质量和低延迟。还讨论用于文本转换成语音及语音识别的Android API及如何使用OpenGL ES高效处理相机输入及视频。最后介绍Android 4.3中引入的一个特性——使用OpenGL ES surface作为编码源,此特性可以用于录制OpenGL ES场景的视频。
第12章:Android应用安全问题介绍Android各方面的安全问题,侧重介绍如何使用加密API。这一章介绍如何在Android设备上安全使用密钥管理,如何加密数据。最后介绍设备管理API。
第13章:地图、位置和活动API介绍用于Android的新地图和位置API。读者将了解到新的融合Location Provider,以及如何使用一些高级特性,如地理围栏和活动识别,从而为创建更好的基于位置的应用程序做好知识储备。
第14章:本地代码和JNI深入探讨使用C编程语言进行本地Android开发。这一章将介绍Android NDK的用法,以及如何利用JNI将本地代码与Java代码结合起来。
第15章:隐藏的Android API侧重介绍Android中隐藏API是如何运行的,如何找到它们,如何在应用程序中安全调用它们,及如何搜索Android源代码以发现隐藏API。
第16章:深入研究Android平台介绍了如何用Android开源项目(AOSP)创建自定义固件,扩展Android平台。这一章将介绍如何设计Android开源项目,以及如何修改Android平台;如何在Android开源项目贡献自己的修改,使其成为Android平台的标准组成部分。
第17章:网络、Web服务和远程API介绍了在Android应用程序中集成在线Web服务,及如何优化网络操作。这一章介绍用来进行网络操作的第三方库,从标准的HTTP到Web Socket和SPDY,及如何调用三种不同类型的网络服务。解释对第三方网络服务进行验证的概念,包括如何在Android应用程序上使用OAuth2及如何在Android上集成Facebook SDK。
第18章:与远程设备通信深入研究了使用Android上各种连接技术与远程设备通信的各种方法。这一章介绍如何使用内置API与USB设备通信,介绍用于和蓝牙低功耗设备(也称为蓝牙智能)通信的API,如何使用网络发现API,如何使用Wi-Fi Direct标准实现特定的对等网络通信,及如何实现既支持RESTful网络服务又支持通过Web Socket进行异步通信的设备服务。
第19章:Google Play Service涵盖了如何使用Google Play Service上的API。这一章介绍如何获得任意在线谷歌API的授权及举例说明如何使用应用程序数据特性在Google Drive上存储跨设备的应用数据,如何在Android Studio中使用内置特性创建Google Cloud Endpoint及如何使用自己的服务拓展它。这一章还将引导读者实现谷歌云消息,并讲解如何使用Google Play Game Service中的实时多人游戏API构建更高级的多人游戏。
第20章:在Google Play Store发布应用集中介绍了在Google Play Store发布应用程序的各方面内容,以及如何包括不同的货币化选项。这一章将解释如何在应用程序中添加应用内付费和广告,如何使用授权服务来验证用户设备上的应用程序许可。最后,这一章指引读者利用APK扩展文件特性来发布超过应用程序50 MB流量限制的数据。
所需工具
尽管本书中多数例子可以在模拟器上运行,但强烈建议开发者获取一个配有最新版Android的移动设备,因为书中许多例子会用到模拟器上没有的硬件。尽管任何谷歌认证的Android设备(即装有Google Play Store的Android设备)就足够运行本书的例子——这种设备起码有正确的Android版本,但还是建议读者购买一个谷歌Nexus设备,这样就可以尽早尝试所有最近的平台特性。
开发者还需要一台运行Linux、Mac OS X或Windows的电脑,及互联网连接来访问一些章节中需要的在线资源。电脑上需装有Java SDK 6(可在http://java.oracle.com上下载)用以运行IDE和其他工具。
在第18章中,读者需要其他的硬件支持来运行书中的示例。开发者需要支持蓝牙低功耗的设备,如活动追踪器或心率监视器。对于USB通信部分的例子,开发者需要一台支持USB OTG规范的Android设备,一条USB数据连接线,以及一台可以连上的USB连接设备。测试USB最简单的方法就是使用Arduino Uno板。
源代码
本书中大多数源代码清单都没有完整呈现,而是展示了其中最能说明相关主题的代码片段。所以,本书假设读者很熟悉Android开发,知道把这些片段嵌入自己开发项目的哪一部分。
书中一些示例和源代码片段可以在作者的GitHub网站(https://github.com/ErikHellman/apptl)获取。但强烈建议读者手动输入书中的代码,而不是简单地复制文件,这样做可以更好地理解代码是如何运行的。
读者也可以从本书配套网站http://www.wiley.com/go/ptl/androidprogramming上下载代码文件。
勘误
作者与出版社已尽全力排查书中可能出现的错误,但仍无法完全避免,这既可能是正文内容或源代码出现排印错误,也可能是内容出现错误或缺失。作者会在其GitHub仓库https://github.com/ ErikHellman/apptl中修复和更新示例代码中出现的错误。

媒体评论: “这是一本诚意之作,写给严谨的Android应用开发者。作者在书中深度揭秘Android最新开发技巧(Android Studio + Gradle),挖掘最佳实践,让读者真正掌控Android开发,完成移动开发进阶之旅,从而在Android平台上打造非凡应用。如果你理解了这本书,请一定投一份简历给我们(hr.tech@meituan.com)。”
——美团移动Android负责人陈红兵
“本人从事移动开发多年,阅读过大量移动开发方面的书。这本书确实不错,目标读者清晰,技术实用,包括但不限于大量高级技巧、诀窍、新技术。阅读本书的过程一如资深移动开发工程师亲临现场指导,绝对让你受益匪浅!”
—— MacIOSAndroid
“地球人已经阻止不了我推荐这本书的步伐了,中高级Android开发人员必备经典!”
——Big Will

书摘: 第1章完善开发环境
开发者选择的工具取决于具体的开发项目。编写一个HTML5应用程序和用Java开发一个服务器端应用对开发环境的要求是不同的。有些平台提供了更多的选择,就像本章接下来描述的,开发Android应用程序可以选择多种Android开发环境。
本章首先会介绍Android SDK的一些高级特性,如何在日常开发中使用它们,以及它们是如何帮助开发者编写高质量的应用程序的。接下来会介绍如何用第三方库来组织项目以达到最大的代码复用。通过把Gerrit代码审查工具和Git集成在一起,开发者会对版本控制有一个新的认识。开发者大部分时间都在和IDE打交道。虽然谷歌还在支持Eclipse IDE,但他们正推动开发者在所有的Android项目中使用全新的Android Studio IDE。所以本章还会介绍Android Studio以及新的Gradle构建系统。最后,会介绍Android设备的开发者选项。
1.1 可供选择的操作系统
这可能是开发者不必担心的一个问题。通常会有两种情况,要么开发者自己选择操作系统,要么服从雇主的IT政策要求。对大部分Android开发人员来说,任何官方支持的操作系统都能很好地工作。然而,某些情况下选择合适的操作系统还是至关重要的。
谷歌支持在Windows、Linux、OS X上开发Android应用。虽然Android SDK支持Windows,但在开发一些高级特性时,开发者可能会遇到问题,尤其是在编写本地应用以及构建定制的ROM时。最好的选择是Linux或者OS X。如果可能,尽量选一个作为主操作系统,这样遇到的问题就会少得多。另一个尽量不要在Windows上开发的原因是,开发者需要为所有的Android设备安装USB驱动程序。
1.2 Android SDK进阶
操作系统和所需(推荐)的工具都准备好之后,接下来我们重点关注的就是Android SDK了。开发者可在http://developer.android.com/sdk下载适合操作系统的SDK以及最新的安装说明。Android Studio自带SDK,但如果你喜欢独立的版本,可另行下载。
确保SDK始终是最新的,还要为我们开发的所有Android版本下载API。更新Android SDK最简单的方法是在提示符下运行如下更新命令: