出版时间:2011-9-5 出版社:机械工业出版社 作者:邓凡平 页数:488
Tag标签:无
前言
近两年来,IT行业的最热点聚焦到了移动互联网上。PC时代,WINTEL联盟成就了英特尔和微软各自的霸业。移动互联网时代,谁将上演新的传奇?新生的Android当年仅用短短一年多的时间就跻身全球智能操作系统的三甲行列。在北美市场,如今Android已经超过iOS和黑莓系统成为老大!Android势不可挡,ARM+Android组合的前景一片光明,越来越多的从业者加入了Android行列! 与带给人们良好用户体验的iOS不一样的是,Android是一个开放的系统,其所有代码都是开源的。因此,对于开发者而言,不仅可以做到知其然,更可以做到知其所以然! 然而,要想知道其所以然,并不是一件简单的事情。回想当初,我开始接触Android的时候,除了Android源码外,其他资料甚少。Android是基于Linux的完整操作系统,其代码量让人望而生畏。可以想象,在没有指导的情况下一头扎进操作系统庞大的代码中是一件让人多么痛苦的事情。时间过得很快,Android生态链已经得到了充分的发展。现在市场上的Android资料已经开始泛滥,书籍已经数不胜数。然而,绝大部分书籍只限于讲解Android应用的开发(拜Android应用API所赐),没有深入到系统级的探讨,极少的所谓提供Android深入指导的资料也只是浅尝辄止。如果想深入了解Android系统,只有华山一条路:自己看Android源代码! 正是因为如此,当初凡平告诉我他要系统地整理其深入钻研Android源代码的心得时,我表示了强烈的赞同。这是一件极少有人做过的事情,这件事情将给已经或即将跨入Android世界的同仁们极大的帮助!这本书里,作者以代码框架为主线,用循序渐进的方式将框架中的关键点一一剖开,从而给读者一个架构清楚、细节完善的立体展现。另外,凡平还会用他的幽默给正在啃枯燥代码的您带来不少笑意和轻松。毫无疑问,如果您想深入了解Android系统,这本书就是您进入Android神秘世界的钥匙。 如果您看准了移动互联网的前景,想深入理解Android,那就让这本书指导您前进吧! 邓必山 2011年6月于北京
内容概要
《深入理解Android:卷I》是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际应用开发需求,书中所涵盖的知识点都是Android应用开发者和系统开发者需要重点掌握的。
全书共10章,第1章介绍了阅读本书所需要做的准备工作,主要包括对Android系统架构和源码阅读方法的介绍;第2章通过对Android系统中的MediaScanner进行分析,详细讲解了Android中十分重要的JNI技术;第3章分析了init进程,揭示了通过解析init.rc来启动Zygote以及属性服务的工作原理;第4章分析了Zygote、SystemServer等进程的工作机制,同时还讨论了Android的启动速度、虚拟机HeapSize的大小调整、Watchdog工作原理等问题;第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以MediaServer为切入点,对Android中极为重要的Binder进行了较为全面的分析,深刻揭示了其本质。第7章对Audio系统进行了深入的分析,尤其是AudioTrack、AudioFlinger和AudioPolicyService等的工作原理。第8章深入讲解了Surface系统的实现原理,分析了Surface与Activity之间以及Surface与SurfaceFlinger之间的关系、SurfaceFlinger的工作原理、Surface系统中的帧数据传输以及LayerBuffer的工作流程。第9章对Vold和Rild的原理和机制进行了深入的分析,同时还探讨了Phone设计优化的问题;第10章分析了多媒体系统中MediaScanner的工作原理。
本书适合有一定基础的Android应用开发工程师和系统工程师阅读。通过对本书的学习,大家将能更深刻地理解Android系统,从而自如应对实际开发中遇到的难题。
作者简介
邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的Android企业,负责Framework的开发和维护。乐于分享,活跃于CSDN等专业社区,撰写的Android
Framework源码的系列文章深受读者欢迎。此外,他对Linux内核、C/C++/Python相关的技术,以及高性能网络服务器和多核并行开发等也有一定的研究。
书籍目录
第1章 阅读前的准备工作
1.1 系统架构
1.1.1 Android系统架构
1.1.2 本书的架构
1.2 搭建开发环境
1.2.1 下载源码
1.2.2 编译源码
1.3 工具介绍
1.3.1 Source Insight介绍
1.3.3 Busybox的使用
1.4 本章小结
第2章 深入理解JNI
2.1 JNI概述
2.2 学习JNI的实例:MediaScanner
2.3 Java层的MediaScanner分析
2.3.1 加载JNI库
2.3.2 Java的native函数和总结
2.4 JNI层MediaScanner的分析
2.4.1 注册JNI函数
2.4.2 数据类型转换
2.4.3 JNIEnv介绍
2.4.4 通过JNIEnv操作jobject
2.4.5 jstring介绍
2.4.6 JNI类型签名介绍
2.4.7 垃圾回收
2.4.8 JNI中的异常处理
2.5 本章小结
第3章 深入理解init
3.1 概述
3.2 init分析
3.2.1 解析配置文件
3.2.2 解析service
3.2.3 init控制service
3.2.4 属性服务
3.3 本章小结
第4章 深入理解zygote
4.1 概述
4.2 zygote分析
4.2.1 AppRuntime分析
4.2.2 Welcome to Java World
4.2.3 关于zygote的总结
4.3 SystemServer分析
4.3.1 SystemServer的诞生
4.3.2 SystemServer的重要使命
4.3.3 关于 SystemServer的总结
4.4 zygote的分裂
4.4.1 ActivityManagerService发送请求
4.4.2 有求必应之响应请求
4.4.3 关于zygote分裂的总结
4.5 拓展思考
4.5.1 虚拟机heapsize的限制
4.5.2 开机速度优化
4.5.3 Watchdog分析
4.6 本章小结
第5章 深入理解常见类
5.1 概述
5.2 以“三板斧”揭秘RefBase、sp和wp
5.2.1 第一板斧——初识影子对象
5.2.2 第二板斧——由弱生强
5.2.3 第三板斧——破解生死魔咒
5.2.4 轻量级的引用计数控制类LightRefBase
5.2.5 题外话—三板斧的来历
5.3 Thread类及常用同步类分析
5.3.1 一个变量引发的思考
5.3.2 常用同步类
5.4 Looper和Handler类分析
5.4.1 Looper类分析
5.4.2 Handler分析
5.4.3 Looper和Handler的同步关系
5.4.4 HandlerThread介绍
5.5 本章小结
第6章 深入理解Binder
6.1 概述
6.2 庖丁解MediaServer
6.2.1 MediaServer的入口函数
6.2.2 独一无二的ProcessState
6.2.3 时空穿越魔术—defaultServiceManager
6.2.4 注册MediaPlayerService
6.2.5 秋风扫落叶—StartThread Pool和join Thread Pool分析
6.2.6 你彻底明白了吗
6.3 服务总管ServiceManager
6.3.1 ServiceManager的原理
6.3.2 服务的注册
6.3.3 ServiceManager存在的意义
6.4 MediaPlayerService和它的Client
6.4.1 查询ServiceManager
6.4.2 子承父业
6.5 拓展思考
6.5.1 Binder和线程的关系
6.5.2 有人情味的讣告
6.5.3 匿名Service
6.6 学以致用
6.6.1 纯Native的Service
6.6.2 扶得起的“阿斗”(aidl)
6.7 本章小结
第7章 深入理解Audio系统
7.1 概述
7.2 AudioTrack的破解
7.2.1 用例介绍
7.2.2 AudioTrack(Java空间)分析
7.2.3 AudioTrack(Native空间)分析
7.2.4 关于AudioTrack的总结
7.3 AudioFlinger的破解
7.3.1 AudioFlinger的诞生
7.3.2 通过流程分析AudioFlinger
7.3.3 audio_track_cblk_t分析
7.3.4 关于AudioFlinger的总结
7.4 AudioPolicyService的破解
7.4.1 AudioPolicyService的创建
7.4.2 重回AudioTrack
7.4.3 声音路由切换实例分析
7.4.4 关于AudioPolicy的总结
7.5 拓展思考
7.5.1 DuplicatingThread破解
7.5.2 题外话
7.6 本章小结
第8章 深入理解Surface系统
8.1 概述
8.2 一个Activity的显示
8.2.1 Activity的创建
8.2.2 Activity的UI绘制
8.2.3 关于Activity的总结
8.3 初识Surface
8.3.1 和Surface有关的流程总结
8.3.2 Surface之乾坤大挪移
8.3.3 乾坤大挪移的JNI层分析
8.3.4 Surface和画图
8.3.5 初识Surface小结
8.4 深入分析Surface
8.4.1 与Surface相关的基础知识介绍
8.4.2 SurfaceComposerClient分析
8.4.3 SurfaceControl分析
8.4.4 writeToParcel和Surface对象的创建
8.4.5 lockCanvas和unlockCanvasAndPost分析
8.4.6 GraphicBuffer介绍
8.4.7 深入分析Surface的总结
8.5 SurfaceFlinger分析
8.5.1 SurfaceFlinger的诞生
8.5.2 SF工作线程分析
8.5.3 Transaction分析
8.5.4 关于SurfaceFlinger的总结
8.6 拓展思考
8.6.1 Surface系统的CB对象分析
8.6.2 ViewRoot的你问我答
8.6.3 LayerBuffer分析
8.7 本章小结
第9章 深入理解Vold和Rild
9.1 概述
9.2 Vold的原理与机制分析
9.2.1 Netlink和Uevent介绍
9.2.2 初识Vold
9.2.3 NetlinkManager模块分析
9.2.4 VolumeManager模块分析
9.2.5 CommandListener模块分析
9.2.6 Vold实例分析
9.2.7 关于Vold的总结
9.3 Rild的原理与机制分析
9.3.1 初识Rild
9.3.2 RIL_startEventLoop分析
9.3.3 RIL_Init分析
9.3.4 RIL_register分析
9.3.5 关于Rild main函数的总结
9.3.6 Rild实例分析
9.3.7 关于Rild的总结
9.4 拓展思考
9.4.1 嵌入式系统的存储知识介绍
9.4.2 Rild和Phone的改进探讨
9.5 本章小结
第10章 深入理解MediaScanner
10.1 概述
10.2 android.process.media分析
10.2.1 MSR模块分析
10.2.2 MSS模块分析
10.2.3 android.process.media媒体扫描工作的流程总结
10.3 MediaScanner分析
10.3.1 Java层分析
10.3.2 JNI层分析
10.3.3 PVMediaScanner分析
10.3.4 关于MediaScanner的总结
10.4 拓展思考
10.4.1 MediaScannerConnection介绍
10.4.2 我问你答
10.5 本章小结
章节摘录
版权页:插图:近两年来,IT行业的最热点聚焦到了移动互联网上。PC时代,WINTEL联盟成就了英特尔和微软各自的霸业。移动互联网时代,谁将上演新的传奇?新生的Android当年仅用短短一年多的时间就跻身全球智能操作系统的三甲行列。在北美市场,如今Android已经超过iOS和黑莓系统成为老大!Android势不可挡,ARM+Android组合的前景一片光明,越来越多的从业者加入了Android行列!与带给人们良好用户体验的iOS不一样的是,Android是一个开放的系统,其所有代码都是开源的。因此,对于开发者而言,不仅可以做到知其然,更可以做到知其所以然!然而,要想知道其所以然,并不是一件简单的事情。回想当初,我开始接触Android的时候,除了Android源码外,其他资料甚少。Android是基于Linux的完整操作系统,其代码量让人望而生畏。可以想象,在没有指导的情况下一头扎进操作系统庞大的代码中是一件让人多么痛苦的事情。时间过得很快,Android生态链已经得到了充分的发展。现在市场上的Android资料已经开始泛滥,书籍已经数不胜数。然而,绝大部分书籍只限于讲解Android应用的开发(拜Android应用API所赐),没有深入到系统级的探讨,极少的所谓提供Android深入指导的资料也只是浅尝辄止。如果想深入了解Android系统,只有华山一条路:自己看Android源代码!正是因为如此,当初凡平告诉我他要系统地整理其深入钻研Android源代码的心得时,我表示了强烈的赞同。这是一件极少有人做过的事情,这件事情将给已经或即将跨入Android世界的同仁们极大的帮助!这本书里,作者以代码框架为主线,用循序渐进的方式将框架中的关键点一一剖开,从而给读者一个架构清楚、细节完善的立体展现。另外,凡平还会用他的幽默给正在啃枯燥代码的您带来不少笑意和轻松。毫无疑问,如果您想深入了解Android系统,这本书就是您进入Android神秘世界的钥匙。如果您看准了移动互联网的前景,想深入理解Android,那就让这本书指导您前进吧!
媒体关注与评论
作者是Thundersoft多媒体组的牛人,技术精深,乐于分享,对Android系统有真正的理解。《深入理解Android:卷1》内容给力,语言生动,全书没有一句废话,各章中的“拓展思考”尤为精彩,体现了作者对Android实现原理的深入理解和批判性思考。为什么Android的短信群发很慢?为什么拔出SD卡时有的程序会退出?读者都能从本书中找到诸如此类的各种实际问题的答案。更重要的是,读者能够对Android的整个体系有一个全新的理解。如果你通读了这本书,请一定投一份简历给我们。 ——Thundersoft(中科创达软件科技(北京)有限公司)对于Android开发工程师而言,本书不可多得,分析透彻深入,针对性极强。Android系统本身极为庞大,如果要对整个系统进行面面俱到且细致入微地分析,恐怕不是一两本书能完成的。本书从开发者的实际需求出发,有针对性地对Android系统中的重要知识点和功能模块的源代码实现进行了剖析,这样既能帮助开发者解决实际问题,又能使分析深入透彻,而不是停留于表面。强烈推荐! ——机锋网这本书非常实用,绝不是枯燥的源代码分析,是深入理解Android工作机制和实现原理的一本好书。为什么说它实用呢?因为它的最终目的并不是停留着源代码分析上,而是要帮助开发者解决实际问题,于是所有知识点的分析和讲解都是从开发者的实际需求出发的。与一般的源代码分析的书相比较而言,本书在语言上多了几分幽默,更加生动易懂。更重要的是,本书的分析十分深入,探讨了Android相关功能模块的本质。 ——51CTO移动开发频道随着Android 系统越来越流行,Android应用的需求也在不断变化,对于开发者而言,深入理解Android系统原理显得越来越重要。目前市面上Android 开发相关的图书已经很多,但真正能够系统、深入地讲解Android系统原理的书还乏善可陈。这本书的出版恰逢其时,该书同时兼备深度和广度,以循序渐进的方式,优雅的语言,深入分析到各个模块的源码与原理。另外,它启发性的讲解方式,更有助于读者的学习和思考。 ——开源中国社区
编辑推荐
《深入理解Android(卷1)》:结合实际应用开发需求,以情景分析的方式有针对性地对Android的源代码进行了十分详尽的剖析,深刻揭示Android系统的工作原理。机锋网、51CTO、开源中国社区等专业技术网站一致鼎力推荐!在Android领域,无论是从事上层的应用开发.还是从事底层的系统级开发,如果想成为一名优秀的开发者,通过深入探究Android的源代码来了解Android的实现原理与工作机制也许是唯一的捷径。Android Framework是Android系统的基石,也是Android的核心之一,对于上层的应用开发者而言,深入理解它的工作原理是十分有必要的。Java世界是如何通过Zygote创建的?Handler和Looper是如何工作的?Binder的工作原理是什么?Audio系统和Surface系统的工作流程是怎样的?Vold、Rild、MediaScanner等是如何实现的?这些内容是每一位从事Android应用开发的程序员都需要学习和掌握的。《深入理解Android(卷1)》用情景分析的方式对Android的源代码进行了有针对性的分析,不仅全面而详细地分析了Framework层的工作机制和实现原理,而且还涉及Native层和Application层的重要内容。每一个功能模块的分析都从实际的使用场景和具体的问题入手,每一个知识点都力求做到把实现原理讲清楚,把工作机制说明白,尽量深入.竭力避免泛泛而谈。除此之外,《深入理解Android(卷1)》在重要章节还精心设计了“拓展思考”的内容,旨在进一步激发读者学习和研究Android源代码的兴趣。
图书封面
图书标签Tags
无
评论、评分、阅读与下载