具体描述
本书是经典畅销书“深入理解Android”系列的新作,由资深Android系统专家邓凡平先生撰写,全志和高通等公司资深专家担任技术审校并强烈推荐。从通信专业知识和Android系统代码实现的角度,对Netd、Wi-Fi、NFC和GPS等模块的代码进行深入的剖析,旨在深刻揭示其实现原理和工作流程。其中涉及大量通信相关的专业知识,因此特意邀请全志和高通等著名芯片公司的资深专家担任技术审校。本书从实际应用的需求出发,适合所有Android系统工程师、Android应用开发工程师和BSP开发工程师阅读。
全书共9章。第1章介绍本书的内容组成、工具使用以及参考源码的下载方法。第2章介绍Netd及相关的背景知识。第3~5章介绍Wi-Fi基础知识,重点分析了wpa_supplicant的实现,以及Android平台中特有的Wi-Fi服务模块WifiService。第6~7章讲解了Wi-Fi联盟推出的两项重要技术Wi-Fi Simple Configuration和Wi-Fi P2P,以及它们在Android平台中的代码实现。第8章详细介绍了NFC基础知识,以及NFC在Android平台中的代码实现。第9章讲解了GPS原理及Android平台中的位置管理服务架构。
本书主要内容及特色:
本书所讲解的Wi-Fi、NFC以及GPS模块的背后都涉及非常多的专业知识,例如与Wi-Fi相关的802.11协议、Wi-Fi Alliance(Wi-Fi联盟)定义的Wi-Fi Simple Configuration和Wi-Fi P2P协议、NFC Forum定义的一整套与NFC相关的协议、与GPS相关的卫星导航原理、AGPS和OMA-SUPL协议等。显然,如果不了解这些专业知识,就不可能真正掌握它们在Android平台中的代码实现。
考虑到这些专业知识的重要性,本书在讲解Android平台中Wi-Fi、NFC和GPS模块的实现之前,先重点介绍与代码相关的专业知识。当然,这些专业知识内容如此丰富,在一本书中无法全部涵盖。为了方便读者进一步深入学习,本书每章的最后都会列举笔者在撰写各章时所阅读的参考资料。
以下是本书的内容概述。
第1章介绍本书的内容组成、使用的工具以及参考源码的下载方法。
第2章介绍Netd以及相关的背景知识。
第3章介绍Wi-Fi基础知识。Wi-Fi是本章的重点,而且也是当下最热门的技术。
第4章介绍wpa_supplicant,它是Wi-Fi领域中最核心的软件实现。
第5章介绍WifiService,它是Android平台中特有的Wi-Fi服务模块。
第6章和第7章介绍Wi-Fi Alliance推出的两项重要技术——Wi-Fi Simple Configuration和Wi-Fi P2P,以及它们在Android平台中的代码实现。
第8章介绍NFC背景知识以及NFC在Android平台中的代码实现。NFC也是历史比较悠久的技术,希望它能随着Android的普及而走向大众。
第9章介绍GPS原理及Android平台中的位置管理服务架构。
附录为笔者和审稿专家之一的吴劲良先生关于本书定位、学习方法等方面的讨论。相信这些讨论内容能引起读者的共鸣。
本书通过理论和代码相结合的方式进行讲解,旨在引领读者一步步了解Wi-Fi、NFC和GPS模块的工作原理。总之,笔者希望读者在阅读完本书后能有以下收获。
初步掌握Wi-Fi、NFC和GPS的专业知识。
根据其实现代码,进一步加深对这些专业知识的理解。
读者对象:
适合阅读本书的读者包括:
Android系统开发工程师
系统开发工程师常常需要深入理解系统的运转过程,而本书所涉及的内容正是他们在工作和学习中最想了解的。对具体模块感兴趣的读者也可单刀直入,阅读相关章节。
Wi-Fi、NFC或GPS的BSP开发工程师
BSP开发工程师更需要对Android平台中这些模块的工作原理及背景知识有深入的理解。虽然本书没有介绍这些模块在Linux Kernel层的实现,但了解它们在用户空间的工作流程也将极大帮助BSP开发工程师拓展自己的知识面。
对Wi-Fi、NFC和GPS感兴趣的在校高年级本科生、研究生和其他读者
在掌握理论的基础上,如何在实际代码中来实现或使用它们也许是众多学子最想知道的。希望这本理论与代码实现深度结合的书籍会助您一臂之力。
作者简介
邓凡平 资深Android系统工程师,对Android系统的设计与实现有非常深入的研究,曾担任Tieto公司高级软件架构师。畅销书“深入理解Android”系列的总策划和主笔,出版有畅销书《深入理解Android:卷I》和《深入理解Android:卷II》。喜欢钻研,乐于分享,活跃于CSDN、51CTO和开源中国等专业技术社区,撰写的Android Framework源码分析的系列文章深受读者欢迎。2013年荣获51CTO读书频道评选的“最受读者喜爱的IT图书作者奖”。
目录信息
第1章 准备工作 1
1.1?Android系统架构 2
1.2 工具使用 2
1.2.1 Source Insight的使用 3
1.2.2 Eclipse的使用 3
1.2.3 BusyBox的使用 7
1.3?本书资源下载说明 8
第2章 深入理解Netd 9
2.1?概述 10
2.2?Netd工作流程 10
2.2.1?main函数分析 11
2.2.2?NetlinkManager分析 12
2.2.3?CommandListener分析 16
2.2.4?DnsProxyListener分析 18
2.2.5?MDnsSdListener分析 21
2.3?CommandListener中的命令 26
2.3.1?iptables、tc和ip命令 27
2.3.2?CommandListener构造函数和测试工具ndc 31
2.3.3?InterfaceCmd命令 33
2.3.4?IpFwd和FirewallCmd命令 40
2.3.5?ListTtysCmd和PppdCmd命令 43
2.3.6?BandwidthControlCmd和IdletimerControlCmd命令 45
2.3.7?NatCmd命令 47
2.3.8?TetherCmd和SoftapCmd命令 49
2.3.9?ResolverCmd命令 54
2.4?NetworkManagementService介绍 55
2.4.1?create函数详解 55
2.4.2?systemReady函数详解 57
2.5?本章总结和参考资料说明 58
2.5.1?本章总结 58
2.5.2?参考资料说明 58
第3章 Wi-Fi基础知识 62
3.1?概述 63
3.2?无线电频谱和802.11协议的发展历程 63
3.2.1?无线电频谱知识 63
3.2.2?IEEE 802.11发展历程 64
3.3?802.11无线网络技术 66
3.3.1?OSI基本参考模型及相关基本概念 66
3.3.2?802.11知识点导读 73
3.3.3?802.11组件 74
3.3.4?802.11 Service介绍 77
3.3.5?802.11 MAC服务和帧 82
3.3.6?802.11 MAC管理实体 98
3.3.7?无线网络安全技术知识点 105
3.4 Linux Wi-Fi编程API介绍 121
3.4.1 Linux Wireless Extensions介绍 122
3.4.2 nl80211介绍 125
3.5 本章总结和参考资料说明 135
3.5.1 本章总结 135
3.5.2 参考资料说明 136
第4章 深入理解wpa_supplicant 140
4.1 概述 142
4.2 初识wpa_supplicant 144
4.2.1 wpa_supplicant架构 144
4.2.2 wpa_supplicant编译配置 145
4.2.3 wpa_supplicant命令和控制API 146
4.2.4 git的使用 149
4.3 wpa_supplicant初始化流程 149
4.3.1 main函数分析 150
4.3.2 wpa_supplicant_init函数分析 153
4.3.3 wpa_supplicant_add_iface函数分析 158
4.3.4 wpa_supplicant_init_iface函数分析 164
4.4 EAP和EAPOL模块 191
4.4.1 EAP模块分析 191
4.4.2 EAPOL模块分析 202
4.5 wpa_supplicant连接无线网络分析 212
4.5.1 ADD_NETWORK命令处理 214
4.5.2 SET_NETWORK命令处理 216
4.5.3 ENABLE_NETWORK命令处理 218
4.6 本章总结和参考资料说明 264
4.6.1 本章总结 264
4.6.2 参考资料说明 264
第5章 深入理解WifiService 267
5.1 概述 268
5.2 WifiService的创建及初始化 268
5.2.1 HSM和AsyncChannel介绍 269
5.2.2 WifiService构造函数分析 276
5.2.3 WifiStateMachine介绍 277
5.3 加入无线网络分析 287
5.3.1 Settings操作Wi-Fi分析 288
5.3.2 WifiService操作Wi-Fi分析 295
5.4 WifiWatchdogStateMachine介绍 312
5.5 Captive Portal Check介绍 316
5.6 本章总结和参考资料说明 320
5.6.1 本章总结 320
5.6.2 参考资料说明 320
第6章 深入理解Wi-Fi Simple Configuration 321
6.1 概述 322
6.2 WSC基础知识 322
6.2.1 WSC应用场景 323
6.2.2 WSC核心组件及接口 325
6.3 Registration Protocol详解 326
6.3.1 WSC IE和Attribute介绍 328
6.3.2 802.11管理帧WSC IE设置 331
6.3.3 EAP-WSC介绍 335
6.4 WSC代码分析 343
6.4.1 Settings中的WSC处理 343
6.4.2 WifiStateMachine的处理 345
6.4.3 wpa_supplicant中的WSC处理 347
6.4.4 EAP-WSC处理流程分析 356
6.5 本章总结和参考资料说明 370
6.5.1 本章总结 370
6.5.2 参考资料说明 370
第7章 深入理解Wi-Fi P2P 371
7.1 概述 372
7.2 P2P基础知识 372
7.2.1 P2P架构 372
7.2.2 P2P Discovery技术 374
7.2.3 P2P工作流程 389
7.3 WifiP2pSettings和WifiP2pService介绍 392
7.3.1 WifiP2pSettings工作流程 392
7.3.2 WifiP2pService工作流程 397
7.4 wpa_supplicant中的P2P 408
7.4.1 P2P模块初始化 409
7.4.2 P2P Device Discovery流程分析 416
7.4.3 Provision Discovery流程分析 426
7.4.4 GO Negotiation流程分析 433
7.5 本章总结和参考资料说明 441
7.5.1 本章总结 441
7.5.2 参考资料说明 441
第8章 深入理解NFC 443
8.1 概述 444
8.2 NFC基础知识 444
8.2.1 NFC概述 445
8.2.2 NFC R/W运行模式 448
8.2.3 NFC P2P运行模式 453
8.2.4 NFC CE运行模式 459
8.2.5 NCI原理 462
8.2.6 NFC相关规范 464
8.3 Android中的NFC 464
8.3.1 NFC应用示例 465
8.3.2 NFC系统模块 478
8.4 NFC HAL层讨论 498
8.5 本章总结和参考资料说明 500
8.5.1 本章总结 500
8.5.2 参考资料说明 500
第9章 深入理解GPS 503
9.1 概述 504
9.2 GPS基础知识 504
9.2.1 卫星导航基本原理 505
9.2.2 GPS系统组成及原理 513
9.2.3 OMA-SUPL协议 532
9.3 Android中的位置管理 536
9.3.1 LocationManager架构 536
9.3.2 LocationManager应用示例 538
9.3.3 LocationManager系统模块 541
9.4 本章总结和参考资料说明 570
9.4.1 本章总结 570
9.4.2 参考资料说明 570
附录 574
· · · · · · (收起)
读后感
用户评价
这本书在介绍**编程语言特性与编译原理**时的细腻程度,简直令人叹为观止。对于那些希望探究代码运行之谜的读者来说,这部分内容是无价之宝。它详细对比了C++与Java在内存布局上的差异,并解释了这些差异如何影响到高性能计算的实现。作者对**反射机制**的底层调用过程进行了细致的拆解,甚至追溯到了JVM字节码层面,揭示了其性能开销的真正来源,而非仅仅一句“反射慢”带过。此外,书中对**运行时(Runtime)**的工作机制的阐述,帮助我理解了APK包的解压过程、资源的加载流程,以及代码热修复技术背后的原理。这种从上到下,再由下而上贯穿整个技术栈的讲解思路,极大地拓宽了我的知识边界,让我对整个Android生态系统的运行机制有了更全面的掌控感。
让我印象深刻的是作者对于**软件架构设计原则**的探讨。在当前移动开发日新月异的背景下,如何构建一个既灵活可扩展,又易于维护的大型应用,是每个团队都要面对的难题。书中对**设计模式**的讲解,并非简单地罗列GoF的23种模式,而是将它们置于Android项目特定的上下文环境中进行剖析,例如,如何在Activity生命周期管理中优雅地应用观察者模式,或者如何使用策略模式来解耦不同类型的网络请求处理器。更重要的是,它深入探讨了**模块化与组件化**的实践经验,从模块依赖图的管理到跨模块的数据传递机制,提供了许多业界成熟的实践建议,避免了许多初学者在架构设计中容易陷入的“过度设计”或“设计不足”的误区。这种对工程哲学和落地实践相结合的叙述方式,让阅读体验变得极其充实和有价值。
这本书的内容简直是打开了新世界的大门,尤其是它对底层原理的剖析,让我这个之前只停留在应用层面的开发者感到受益匪浅。作者在讲解**数据结构与算法**时,那种循序渐进,由浅入深的态度,着实让人佩服。比如,在阐述如何优化某个复杂算法的效率时,书中不仅仅给出了代码实现,更是详细推导了时间复杂度和空间复杂度的变化,让人能清楚地看到每一步优化带来的实际收益。更难能可贵的是,它并没有止步于理论的堆砌,而是结合了大量的**操作系统**的实际案例来佐证观点。我记得有一章专门讲了进程间通信(IPC)的各种机制,从Binder到AIDL,作者不仅画出了清晰的架构图,还模拟了系统调用栈,让我对Android系统是如何调度资源有了更宏观的认识。读完之后,我感觉自己对编写高性能、高稳定性的原生应用有了更扎实的根基,那些过去只能依靠Stack Overflow碎片化搜索才能勉强理解的概念,现在都串联成了一个完整的知识体系。这本书的深度远超出了市面上大多数仅停留在API介绍的教程,它真正做到了“深入理解”。
老实说,我本来对这种技术专著是抱持着一丝疑虑的,毕竟很多“深入”系列的书籍往往只有标题够响亮,内容却空泛无力。然而,这本关于**Java并发编程**和**内存管理**的章节彻底打消了我的顾虑。它对`volatile`关键字的讲解,不是那种教科书式的定义复述,而是结合JVM的内存模型(JMM)和底层硬件缓存一致性协议(MESI)进行了细致的阐述。我尤其欣赏作者在讨论**垃圾回收(GC)**机制时所展现出的那种批判性思维。书中不仅分析了Dalvik/ART虚拟机中各种GC策略的优缺点,还模拟了在不同内存压力下,不同代际收集器对应用延迟(Latency)的影响曲线。读到那部分时,我甚至暂停下来,重新审视了我们项目中最近出现的间歇性卡顿问题,并找到了可能的优化点。这种将理论知识直接落地到解决实际工程难题的能力,是衡量一本技术书价值的关键所在。这本书的结构设计非常合理,逻辑链条紧密,让人读起来毫不费力,仿佛作者就在身边手把手地指导。
这本书在**性能调优与故障排查**方面的论述,简直是我工具箱里最锋利的武器。很多高级工程师面临的挑战往往不是写不出新功能,而是如何快速定位并解决那些难以复现的疑难杂症。书中详细介绍了一套系统化的调试流程,从抓取低功耗日志(如Systrace的深度使用),到分析CPU热点函数(Profiling),再到解析Native层面的崩溃堆栈(Logcat与tombstone文件解读),每一步都配有详尽的命令行示例和输出解析。特别是关于**线程死锁**的识别与解耦部分,作者提供了一套基于锁竞争分析的可视化方法,我立刻尝试在工作中使用,效果立竿见影,成功避免了一次潜在的线上事故。如果说其他书籍教你如何建房子,那么这本书教的就是如何成为一个顶级的“工程医生”,能够精确诊断出系统深层的病灶。它真正提升了读者的“内功”,而不是仅仅停留在API的表面调用上。
Wi-Fi部分描述比蝙蝠书语句好理解很多。
讲得很详细,背景知识全讲到了。比较实在,花了10元买的PDF电子书
讲得很详细,背景知识全讲到了。比较实在,花了10元买的PDF电子书
讲得很详细,背景知识全讲到了。比较实在,花了10元买的PDF电子书
Wi-Fi部分描述比蝙蝠书语句好理解很多。