![深入Android应用开发:核心技术解析与最佳实践 [平装]](http://img.reader8.net/uploadfile/2013/1217/20131217050828341.jpg)
编辑推荐
《深入Android应用开发:核心技术解析与最佳实践》编辑推荐:以源代码为依托,逐步深入讨论Android应用开发涉及的方方面面;展示大量最佳实践,为开发高质量的Android应用提供绝佳指导。
名人推荐
开发者是各移动平台竞争的最关键因素,因为这直接决定了平台能为用户提供怎样的软件服务。然而,对于开发者而言,什么才是最关键的因素?很显然,是应用的质量!如何才能开发出高质量的应用?相信这是每个Android程序员都会关心的问题!答案只有一个:深入了解Android的底层原理并在实践中多总结。本书准确地抓住了开发者的这一需求,首先深入解析了要修炼成为Android开发高手必须掌握的Android底层知识的实现原理,同时也将作者在实践中总结出来的最佳实践无私地奉献了出来,为Android程序员的进阶指明了一条捷径。强烈推荐!
——51CTO中国领先的IT技术网站
市面上关于Android的书很多,大致可以分为两类:要么专注于应用层面,即通过对SDK及其用法的讲解来教读者如何去开发Android应用;要么专注于系统原理层面,即通过对Android系统源代码的分析来阐述系统的工作机制。本书则找到了另外一条途径,对前面两类书进行了综合,以通过源代码分析Android底层机制为主,以SDK的深入讲解为辅,目的是帮助那些想成为高级Android开发者的读者通过了解Android的工作原理来提升开发水平,最终开发出高质量的Android应用来。对于有一定基础的Android开发者来说,本书不容错过,作者将所有需要掌握的核心知识都集中地整理了出来并做了透彻深入的讲解,为大家节约了大量宝贵的时间。
——开源中国社区
Google收购摩托罗拉移动的计划已经被各方正式批准,但有两个重要的附加条件:不能以歧视方式对待任何基于Android平台的原始设备制造商,5年内保持Android开放和免费。这一收购的成功至少能说明一点:未来5年,Android开发者社区仍然会保持一片繁荣的局面。作为开发者,最核心的当然是技术了,这是开发高品质应用的前提和基础。Android系统如此复杂,如何才能真正掌握核心的底层技术?Android系统如此庞大,有哪些核心技术是开发者必须掌握的?本书作者是经验丰富的Android开发工程师,对这两个问题给予了很好的回答,值得所有想进一步提升的Android工程师阅读和参考。
——Android开发者中文社区
媒体推荐
开发者是各移动平台竞争的最关键因素,因为这直接决定了平台能为用户提供怎样的软件服务。然而,对于开发者而言,什么才是最关键的因素?很显然,是应用的质量!如何才能开发出高质量的应用?相信这是每个Android程序员都会关心的问题!答案只有一个:深入了解Android的底层原理并在实践中多总结。本书准确地抓住了开发者的这一需求,首先深入解析了要修炼成为Android开发高手必须掌握的Android底层知识的实现原理,同时也将作者在实践中总结出来的最佳实践无私地奉献了出来,为Android程序员的进阶指明了一条捷径。强烈推荐!
——51CTO(www.51cto.com) 中国领先的IT技术网站
市面上关于Android的书很多,大致可以分为两类:要么专注于应用层面,即通过对SDK及其用法的讲解来教读者如何去开发Android应用;要么专注于系统原理层面,即通过对Android系统源代码的分析来阐述系统的工作机制。本书则找到了另外一条途径,对前面两类书进行了综合,以通过源代码分析Android底层机制为主,以SDK的深入讲解为辅,目的是希望帮助那些想成为高级Android开发者的读者通过了解Android的工作原理来提升开发水平,最终开发出高质量的Android应用来。对于有一定基础的Android开发者来说,本书应该不容错过,作者将所有需要掌握的核心知识都集中地整理了出来并做了透彻深入的讲解,为大家节约了大量宝贵的时间。
——开源中国社区(www.oschina.net)
Google收购摩托罗拉移动的计划已经被各方正式批准,但有两个重要的附加条件:不能以歧视方式对待任何基于Android的原始设备制造商,5年内保持Android开放和免费。这一收购的成功至少能说明一点:未来5年,Android开发者社区仍然会保持一片繁荣的局面。作为开发者,最核心的当然是技术了,这是开发高品质应用的前提和基础?Android系统如此复杂,如何才能真正掌握核心的底层技术?Android系统如此庞大,有哪些核心技术是开发者必须掌握的?本书作者是经验丰富的Android开发工程师,对这两个问题给予了很好的回答,值得所有想进一步提升的Android工程师阅读和参考。
——Android开发者中文社区
作者简介
苗忠良,资深Android开发工程师和嵌入式软件开发工程师,对Android、Linux和Qtopia等平台和技术有非常深入的研究,实践经验极其丰富。尤其是在Android领域,不仅擅长Android应用的开发,对Android系统的底层原理有非常深入的研究,而且还对Android应用的设计开发思想和用户体验有非常深入的认识。现担任某公司上海研发中心的技术总监,拥有发明专利3项,发表学术论文多篇,曾多次在高校和企业举办技术讲座,深受欢迎。
目录
前言
第1章 深入解析Android核心组件和应用框架 1
1.1 核心组件详解 1
1.1.1 Activity组件 1
1.1.2 Service组件 19
1.1.3 Intent组件 25
1.1.4 BroadcastReceiver组件 31
1.2 应用框架解析 31
1.2.1 Service框架 32
1.2.2 Activity管理机制 38
1.2.3 Broadcast机制 41
1.2.4 对话框框架 42
1.2.5 标题栏框架 46
1.2.6 状态栏框架 48
1.2.7 通知机制 52
1.2.8 搜索框架 56
1.2.9 ActionBar框架 59
第2章 Android 资源框架详解 64
2.1 布局文件 64
2.2 值文件 67
2.3 创建菜单 75
2.3.1 选项菜单 75
2.3.2 上下文菜单 77
2.3.3 子菜单 79
2.3.4 弹出菜单 80
2.4 断言的处理 81
2.5 Jar包和共享库 83
2.6 系统资源 84
第3章 Android UI控件精要 89
3.1 布局控件 89
3.1.1 LinearLayout 89
3.1.2 RelativeLayout 92
3.1.3 TableLayout 93
3.1.4 FrameLayout 94
3.2 显示控件 97
3.2.1 TextView 97
3.2.2 ProgressBar 99
3.2.3 WebView 100
3.2.4 ViewSwitcher 101
3.2.5 TextSwitcher 102
3.2.6 ViewFlipper 103
3.2.7 SeekBar 104
3.2.8 ViewStub 106
3.3 容器控件 106
3.3.1 SlidingDrawer 106
3.3.2 ListView 107
3.3.3 ExpandableListView 111
3.3.4 GridView 112
3.3.5 ScrollView 113
3.3.6 TabHost 114
3.4 输入控件 114
3.4.1 EditText 114
3.4.2 Spinner 116
3.4.3 AutoCompleteTextView 117
3.5 控制控件 118
3.5.1 Button 118
3.5.2 CheckBox 119
3.5.3 RadioButton 119
3.5.4 RatingBar 120
3.5.5 ZoomControls 121
3.6 多媒体控件 122
3.6.1 ImageView 122
3.6.2 ImageSwitcher 122
3.7 特殊控件 125
3.8 桌面部件 126
3.8.1 App Widgets的实现 126
3.8.2 Live folders的实现 128
3.9 自定义控件 129
3.10 数据适配 130
3.10.1 视图适配 130
3.10.2 标准化解析 133
3.11 Fragment 135
3.11.1 Fragment 生命周期 135
3.11.2 ListFragment 137
3.11.3 DialogFragment 137
3.11.4 PreferenceFragment 138
3.11.5 WebViewFragment 138
第4章 深入解析Android数据存储与管理 139
4.1 XML文件管理 139
4.2 内部文件管理 140
4.2.1 写入数据 141
4.2.2 读取数据 141
4.3 外部文件管理 142
4.4 数据库管理 143
4.4.1 Android封装接口 144
4.4.2 原生方法处理 145
4.5 数据处理 145
4.5.1 Set类 146
4.5.2 Map类 148
4.5.3 list类 150
4.5.4 流类 150
4.5.5 正则表达式 153
4.5.6 I/O管理 153
4.5.7 JSON实现 155
第5章 深入解析Android通信机制 159
5.1 Intent通信 159
5.1.1 Intent的常见用法 159
5.1.2 Serializable接口 165
5.1.3 Parcelable接口 165
5.2 UI事件处理 166
5.2.1 事件监听器、事件句柄及焦点处理 167
5.2.2 触控事件处理 168
5.2.3 按键事件处理 170
5.2.4 轨迹球事件处理 171
5.3 任务调度 172
第6章 深入解析Android多线程编程 174
6.1 Java线程实现 174
6.2 Android线程封装 177
6.3 线程间的消息通信 180
6.3.1 消息队列 181
6.3.2 消息分发 183
6.3.3 消息接收 183
6.4 线程安全处理 184
6.4.1 synchronized同步 184
6.4.2 RPC通信 186
6.4.3 SQLite调用 186
第7章 深入解析Android网络编程 187
7.1 无线接入技术概述 187
7.2 基础协议封装 190
7.3 Java网络编程接口 194
7.4 Apache网络编程接口 195
7.5 Android网络编程接口 196
7.6 Web服务实现 199
7.6.1 Web服务概述 199
7.6.2 KSOAP2的实现 199
7.7 XML解析器 200
7.7.1 Pull解析器 201
7.7.2 DOM解析器 202
7.7.3 SAX解析器 203
7.8 套接字编程 203
7.9 Web应用实现 205
7.10 SIP服务 212
7.11 NFC通信 214
7.12 RIL层处理 216
7.13 报文分析 220
第8章 Android图形、图像与动画精要 222
8.1 2D图像处理 222
8.1.1 基本接口 222
8.1.2 缩略图 228
8.1.3 图像浏览 228
8.1.4 人脸检测 230
8.2 3D图像处理 233
8.2.1 OpenGL ES的实现 233
8.2.2 RenderScript的实现 236
8.3 图形处理 239
8.3.1 基本接口 239
8.3.2 Surface渲染系统 244
8.4 动画处理 247
8.4.1 补间动画 248
8.4.2 帧动画 249
8.4.3 属性动画 250
第9章 深入解析Android多媒体编程 257
9.1 音频处理 257
9.1.1 音频播放 258
9.1.2 音频录制 264
9.1.3 音频管理 265
9.1.4 音效处理 267
9.2 视频处理 269
9.2.1 视频播放 270
9.2.2 视频录制 273
9.3 Camera服务 274
9.4 TTS的实现 276
第10章 Android跨语言调用详解 279
10.1 C语言与汇编语言的相互调用 279
10.2 C++与C语言的相互调用 280
10.3 Java对C/C++的调用 282
10.4 C/C++对Java的调用 287
第11章 Android安全框架解析 292
11.1 Java混淆器 293
11.2 接入权限 294
11.2.1 创建接入权限 294
11.2.2 应用权限 294
11.2.3 权限验证 296
11.2.4 接入服务 297
11.2.5 框架层接入限制 298
11.3 数字证书 298
第12章 Android的调试、测试与性能优化 300
12.1 Android调试 300
12.1.1 Logcat日志调试 300
12.1.2 dmtracedump跟踪 300
12.1.3 Dev Tools调试 301
12.1.4 屏幕截图分析 301
12.1.5 内存调试 302
12.2 Android布局优化 305
12.2.1 Layoutopt优化 305
12.2.2 Hierarchyviewer优化 306
12.3 Android测试 307
12.3.1 Monkey压力测试 307
12.3.2 JUnit回归测试 308
12.3.3 CTS兼容性测试 312
12.3.4 目标环境测试 313
12.4 Android性能优化 314
12.4.1 优化资源读取 314
12.4.2 优化APK加载 315
12.4.3 Dalvik虚拟机 315
12.4.4 TraceView性能分析 315
12.4.5 运行效率的优化 317
第13章 深入解析Android编译系统 318
13.1 源代码编译 318
13.1.1 映像文件 318
13.1.2 编译方法 319
13.1.3 主要脚本 322
13.1.4 环境变量 332
13.1.5 目标环境 333
13.2 SDK编译 333
13.2.1 Linux下的SDK编译 334
13.2.2 Windows下的SDK编译 334
13.2.3 ADT插件的编译 334
13.3 NDK编译 335
13.3.1 编译脚本 336
13.3.2 配置脚本 337
13.3.3 GDB调试 340
13.3.4 NativeActivity实现 340
13.4 应用程序编译 342
13.4.1 本地环境变量 342
13.4.2 在Eclipse下编译 343
13.5 目标系统配置 343
13.5.1 自定义模拟器配置 343
13.5.2 目标板配置 348
13.5.3 目标环境配置 350
13.6 文件系统配置 350
13.7 编译工具 350
13.8 fastboot模式 352
第14章 Android启动过程详解 353
14.1 系统的启动过程 353
14.1.1 系统属性配置 354
14.1.2 文件系统挂载 355
14.1.3 守护进程启动 356
14.2 应用的启动过程 362
14.2.1 应用的启动配置 362
14.2.2 应用的启动过程 364
第15章 深入解析Android系统管理 369
15.1 内存管理 369
15.1.1 对象引用 369
15.1.2 垃圾回收策略 370
15.2 应用管理 373
15.2.1 应用的配置 373
15.2.2 应用的启动 374
15.2.3 应用的销毁 375
15.3 电源管理 376
15.3.1 电源管理框架 376
15.3.2 应用层策略 379
15.4 下载管理 380
15.4.1 Gingerbread前的下载 380
15.4.2 Gingerbread后的下载 382
15.5 系统配置 383
15.5.1 系统数据库 383
15.5.2 系统属性 385
15.6 数据管理 386
15.6.1 数据备份 386
15.6.2 剪切板管理 387
15.7 设备管理 388
15.7.1 管理工具 388
15.7.2 传感器管理 395
15.7.3 USB管理 398
15.8 应用发布 399
15.8.1 应用商店概述 399
15.8.2 目标环境的适配 401
15.8.3 发布应用 410
附录A Android开发环境搭建 413
附录B 常用Linux命令 436
附录C 编码规范 441
附录D 学习资源 447
参考文献 451
序言
为什么写作本书
作为一个应势而生的移动终端操作系统,Android适应了移动互联网的发展和“4C”融合的趋势,为产业从以硬件为重心向以内容和服务为重心转型提供了一个绝佳的平台。更由于其发起者Google的正确商业推广策略,自发布之日起,Android便赢得了众多开发者和OEM厂商的青睐与支持,支持者如滚雪球般不断扩大,最终后来居上。由于其面向互联网设计的特点,Android适用于数字家庭、远程医疗、物联网、交通监控、移动终端、机器人等多种应用领域,能很好地适应移动互联网的发展,其前景被越来越多的人看好。Android的出现,加速了以“内容”和“服务”为重心的新一代信息产业革命的发展。
随着移动互联网的发展,科技的魅力逐渐渗透到世界的每个角落,但是随着科技的普及,至少在消费类电子领域,以技术驱动为核心的价值观理念正逐渐让位于以消费需求为核心的价值观理念。衡量产品成功的标准不再局限于技术是否先进,而是能否最大限度地满足消费者需求。Android的出现正逢其时。
然而Android庞大的架构背后蕴含的设计理念和逻辑细节异常复杂,入门容易,深入却难,需要开发者仔细钻研。Android的知识点跨越了Linux、Java、C/C++、XML、移动终端、无线接入技术、用户研究和计算机网络等多个领域,整合了计算机网络、嵌入式系统、移动通信、集成电路、工业设计、人机交互、设计艺术学等多个学科。
在本书中,根据以往和读者交流的经验,笔者摒弃了以前侧重理论和理念引导的写作方法,更注重实战经验的总结。从哲学角度看,这是一种退步,但是就具体的开发和与技术的适配来看,这种写作方法更加有利于将笔者的心得分享给读者,帮助读者迅速提高自己的开发水平。
然而必须申明,任何平台和工具均是开发者表达自己理念的一种手段,永远无法也不应该替代开发者头脑中的应用的设计理念,尤其是在进行商业开发的过程中,应始终明确设计理念和商业模式远比工具本身更重要。API仅是表达设计意图的一个途径,必须将个人的视野拔高到设计的层次。在商务实践中,战略和执行力构成个人和企业成功的两大基石,自身的技术能力和能够利用的资源则决定着产品的质量。只懂使用工具的人称不上优秀的人才,相比内外兼修的“中华功夫”高手,不过徒然练就了“一身外功”而已。只有理论与实践兼修,才能够深刻了解产业的发展趋势,才能找到正确的切入点,才能体会到工程实践的重要意义,才能理解优秀的产品其实是一种平衡者才能获得的更高成就,而前进的每一步都是在不断否定自我的过程中实现的。
秉持一贯的作风,本书少有完整的例子供开发者参考,因为在Android SDK所携带的文档中,已经有足够多的示例供开发者学习,笔者没有必要在此着墨太多。
在具体的内容上,本书以源代码为主、SDK为辅的方式与大家分享经验心得。希望本书能够帮助Android爱好者一窥Android内在的神秘。
本书面向的读者
本书适合所有有一定基础的Android应用开发工程师和系统开发工程师阅读。
本书主要内容
本书在逻辑上力避耦合,读者可以根据自己的需要调整阅读顺序。缺乏Android基础的读者请务必先详细阅读本书的附录。
本书第1~4章介绍Android基础开发涉及的核心组件、应用框架、资源框架、UI控件、数据存储等,这是所有Android开发者都应掌握的;第5~10章介绍Android框架层的通信机制、多线程编程、网络编程、图像与动画、多媒体编程、跨语言调用等内容,这些是中等水平的Android开发者必须掌握的;第11~15章则介绍了Android的安全框架、调试与优化、编译环境、启动过程和系统管理,以帮助开发者完成更高层次的积累并为商业级产品开发做好准备。
支持和勘误
除了苗忠良、曾旭、宛斌之外,周红恩、王振伟、李德伟、张婷婷、刘存青、王珊珊等还参与了资料的整理和示例的收集等工作。
由于笔者水平有限,书中难免还存在一些不足,请大家见谅。您若对本书有任何意见和建议,欢迎发邮件到mzl626@163.com和笔者讨论。
本书中所涉及的源代码可在http://source.android.com处下载。
致谢
在本书撰写过程中,得到了公司同事管艳丽、陈文、唐晓军、何伟伟等和家人的大力鼓励和支持,他们为本书提供了很多好的意见和建议,使本书得以不断完善,在此对他们表示深深的谢意,我很高兴能在创业的道路上和他们一路同行;另外,我的儿子苗思源的降生带给了我极大的快乐,每天看到他天真无邪的笑脸,都觉得是一种莫大的幸福,这种幸福激励着我不断奋斗。
另外,还要感谢机械工业出版社的编辑、美工和校对人员,尤其是策划编辑杨福川先生,及姜影和白宇两位编辑。在本书撰写过程中,他们提出了不少真知灼见,很高兴能和他们一起推动本书的出版。
苗忠良
文摘
第1章
深入解析Android核心组件和应用框架
本章将详细介绍Android的四大核心组件并深入剖析九大主要应用框架,旨在帮助读者更好地理解Android的系统框架。
1.1 核心组件详解
Android有4个核心组件,分别是:提供界面显示的Activtiy、提供后台计算的Service、提供进程间通信的Intent和提供广播接收的BroadcastReceiver。本节将详细介绍这些核心组件的使用方法和技巧,以及隐藏在背后的一些逻辑和原理。
喜欢深入Android应用开发:核心技术解析与最佳实践 [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务