首页 > Android, System > 《深入剖析Android系统》内容介绍

《深入剖析Android系统》内容介绍

2013-01-22 15:09 星期二    浏览: 2,128    绿 发表评论 阅读评论

《深入剖析Android系统》以Android Jelly Bean的代码为蓝本,对Android的部分关键代码进行了注释分析,并辅以大量插图,讲述了Android大部分子系统中的模块和类的静态结构,让读者对Android系统的内部静态结构有着“类”粒度这一层级上的认识和了解。同时,也对关键类和函数的代码调用流程、运行时刻所位于的进程和线程上下文等动态运行场景进行了分析讲述,让读者深刻理解Android系统内部是如何运行的。本书直接对Source Insight进行截图,保留了代码的原始行号、英文注释等信息并进行了高亮显示,方便读者阅读;代码中同时添加了作者所做的中文注释说明。

基于Google发布的Jelly Bean原始代码,讲述Android系统的内部静态结构关系和内部运行机制,为你呈现原汁原味的Android代码分析大餐

 

为了让读者可以对Android系统进行“有血有肉”的感知,而不是停留在抽象的原理和概念之上,本书对Android的代码进行了分析,进而“提炼”出Android的全貌。又因为Android有着海量代码,故只分析了Android系统的一些主要模块和类,不对各个细节进行全面分析,这样可以在有限的篇幅中让读者了解Android的内部结构和运行机制,同时避免让读者陷入海量代码的云雾中而不得要领。

由于Android系统升级较快,有些代码变动很大。对设计上有重大改变的一些模块,笔者也兼顾提及了Android的2.x版本和4.0版本中的设计,甚至个别模块在未来的版本中的可能的演进方向。

现将本书各章内容介绍如下:

第1章介绍了智能指针。在Android的native层的C++代码中,存在着大量形如sp和wp模板的运用,它们都是智能指针模板。通过本章,读者将掌握native层的类的对象的生命周期。

第2章介绍了Android中消息队列和线程处理机制。这涉及native层的Looper和Java层的Looper、Handler及Message等,让读者更好地理解Android中的代码执行流程场景和所在的线程上下文。

第3章详细介绍了Android中最重要的一种机制Binder IPC及其应用。在Android中,一个简单的功能或上层API的一个简单调用,往往需要跨越多个进程。一个子系统的功能也往往由各个进程中的模块来完成,这就要用到Android的核心机制Binder IPC。Binder IPC不仅位于native代码中,也大量存在于Java层的代码中,因此以Java层的播放服务(IMediaPlaybackService)和电话状态监听器(PhoneStateListener)为例,详细分析了多个进程之间的相互调用,尤其是后一个例子,双向跨越了多个进程。另外,为了避免大内存数据传输,借助于Binder IPC机制,Android实现了大内存块的跨进程共享。

第4章介绍了HAL硬件抽象层,让读者了解到Android的框架系统如何利用其下面的抽象硬件。

第5章介绍了Android的启动过程。内容涉及Android初始化语言,Linux系统的第一个进程init的启动过程,以及init进程如何解析用Android初始化语言编写的.rc脚本文件。最后简要介绍了Android系统中的服务所驻留的宿主进程system_server的启动过程。

第6章介绍了Android输入系统,让读者对输入系统的执行过程有一定的了解。

第7章介绍了Android系统中的大容量存储(MassStorage)系统,让读者熟悉Android存储设备的管理机制。

第8章介绍了Android中的传感器(Sensor)系统,让读者对传感器有所了解。

第9章介绍了RIL,包括C语言实现的RIL和与其通信的RILJ(Java类RIL)。通过阅读本章,读者将了解Java层上传消息和下送命令的机制,它是Java层的电话功能通道。

第10章介绍了Android系统中的phone进程。首先简单介绍了层次状态机,有助于读者了解层次状态机的工作机制,以便于分析使用层次状态机的代码,如PS域的数据连接、Wi-Fi和蓝牙的连接状态等。接着,对Android电话功能的实现进行了介绍。

第11章对Android中的Graphic系统进行了分析,其中包括SurfaceFlinger中新引入的VSync机制。

第12章介绍了Android中的OpenGL ES软件层次栈,让读者了解OpenGL ES的层次调用关系,以及如何通过钩子(hook)将库中的API关联起来。

第13章介绍了Android的多媒体系统,主要介绍了播放和录制的过程。通过阅读本章,读者将了解Java的SDK API层如何调用native层的Service服务,以及Service如何向应用程序发送消息通知。最后,介绍了Android中的Camera。让读者了解硬件抽象层的Camera如何向Java层发送采样数据。

第14章介绍了Audio系统的播放和录音过程,让读者了解Android中的应用程序进程和AudioFlinger之间的数据传输关系。最后,介绍了AudioFlinger的工作机理、音效和音频策略服务。通过阅读本章,读者将熟悉Android中的音频系统的工作过程。

第15章介绍了Android的多媒体框架Stagefright,并提及Android版本演进过程中的不同设计理念下的视频帧的渲染输出原理。通过阅读本章,读者将进一步熟悉多媒体系统的处理过程。

第16章介绍了OMXCodec。这将有助于读者了解Stagefright如何使用OMXCodec进行编解码,以及OMXCodec如何使用平台厂家实现的OMX插件。

第17章介绍了Android的GPS系统,让读者了解GPS部分的工作机制。

第18章介绍了Android中的NFC实现,让读者了解Android中的NFC的工作机制。

第19章介绍了Android对USB外设的处理过程。

第20章简要介绍了Android中的蓝牙和Wi-Fi的系统架构。

第21章介绍了用于生成tombstone调试文件的Debuggerd守护进程。通过阅读本章,读者将获悉Android如何记录C/C++代码崩溃时的场景信息,以让开发者获取足够多的调试信息。

为了表示对他人劳动成果的尊重和方便读者进行延伸阅读,本书在页脚注释中给出了笔者参阅的文章、文档和书籍的网络链接和说明。对于侧重点不同的文章或书籍,笔者也给读者做了阅读推荐。

在阅读本书前,读者需要具备C、C++、Java等编程语言和Android的基础知识。读者最好对Linux系统、Linux命令行和 Shell脚本等有基本了解。若读者对设计模式、Linux系统编程(推荐伽玛等的《设计模式——可复用面向对象软件的基础》,史蒂文斯和拉戈的《UNIX环境高级编程》)有所了解,再拥有书中相关子系统的背景知识,那么阅读本书和理解Android系统将是件十分轻松的事。

由于笔者时间、精力和能力所限,书中涉及的内容定会存在错误之处,还请相关专家及读者批评批正,不胜感激。

    分享到:

相关文章:

  • 无相关文章
  1. 本文目前尚无任何评论.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。