加入VIP
深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版

编辑点评:

是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际应用开发需求,书中所涵盖的知识点都是Android应用开发者和系统开发者需要重点掌握的。

深入理解Android卷1pdf

内容简介

《深入理解Android:卷2》是“深入理解Android”系列的第2本,第1本书上市后获得广大读者高度评价,在Android开发者社群内口口相传。《深入理解Android:卷2》不仅继承了第1本书的优点并改正了其在细微处存在的一些不足,而且还在写作的总体思想上进行了创新,更强调从系统设计者的角度去分析Android系统中各个模块内部的实现原理和工作机制。从具体内容上讲,重点是Android Framework的Java层,对Java层涉及的核心模块和服务进行了深入而细致的分析。通过《深入理解Android:卷2》,读者不仅能对Android系统本身有更深入的理解,而且还能掌握分析大型复杂源代码的能力。

《深入理解Android:卷2》共8章:第1章介绍了阅读本书所需要做的准备工作,包括Android 4.0源码的下载和编译、Eclipse环境的搭建,以及Android系统进程(system_process)的调试等;第2章对Java Binder和MessageQueue的实现进行了深入分析;第3章仔细剖析了SystemServer的工作原理,这些服务包括EntropyService、DropboxManagerService、DiskStatsService、DeviceStorageMonitorService、SamplingProfilerService和ClipboardService;第4章对系统中负责Package信息查询和APK安装、卸载、更新等工作的服务PackageManagerService进行了详细分析;第5章则对Android系统中负责电源管理的核心服务 PowerManagerService的原理进行了一番深入的分析;第6章以ActivityManagerService为分析重点,它的启动、Activity的创建和启动、BroadcastReceiver的工作原理、Android中的进程管理等内容展开了较为深入的研究;第7章对ContentProvider的创建和启动、SQLite、Cursor query和close的实现等进行了深入分析;第8章以ContentService和AccountManagerService为分析对象,介绍了数据更新通知机制的实现,以及账户管理和数据同步等相关知识。

作者简介

邓凡平 资深Android开发工程师和系统工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。《深入理解Android:卷I》的作者,同时也是“深入理解Andriod”系列图书的总策划。目前就职于国内领先的Android企业中科创达(ThunderSoft),负责Android Framework的开发和维护。喜欢钻研,乐于分享,活跃于CSDN、51CTO和开源中国等专业技术社区,撰写的Android Framework源码分析的系列文章深受读者欢迎。此外,他对Linux内核、C/C++/Python相关的技术,以及高性能网络服务器和多核并行开发等也有一定的研究。

前 言

虽然前言位于书的最前面,但往往是最后才完成的。至今,本书的撰写工作算是基本完成了,在书稿付梓之前,心中却有些许志恋和不安,因为拙著可能会存在Bug。为此,我先为书中可能存在的Bug将给大家带来的麻烦致以真诚的歉意。另外,如果大家发现本书存在继漏或有必要进一步探讨的地方,请发邮件”给我,我会尽快回复。非常乐意与大家交流。

本书主要内容全书一共10章,其中一些重要章节中还设置了“拓展思考”部分。这10章的主要内容是:

第l章介绍了阅读本书所需要做的一些准备工作,包括对Android整个系统架构的认识.

以及Android 开发环境和源码阅该环境的搭建等。注意,本书分析的源码是Android2.2。

第2章通过Android源码中的一处实例深入地介绍了NI技术。

第3章围绕init进程,介绍了如何解析initre以启动Zygote和属性服务(property service)的工作原理。

第4章剖析了zygote和systcm_scrver进程的工作原理。本章的拓展思考部分讨论了Andorid的启动速度、虚拟机 hcapsize的大小调整问题以及“看门狗”的工作原理。

第5章讲解了Android源码中常用的类,如sp、wp、RefBase、Thread类、同步类、Java中的Handler类以及Looper类,这些类都是Android中最常用和最基本的,只有掌握这些类的知识,才能在分析后续的代码时游刃有余。

第6章以MediaServer为切入点,对Binder进行了较为全面的分析。本章拓展思考部分讨论了与Binder有关的三个问题,它们分别是Binder和线程的关系、死亡通知以及匿名Service.笔者希望,通过本章的学习,大家能更深入地认识Binder的本质,第7章阐述了Audio系统中的三位重要成员AudioTrack、AudioFlinger和AudioPolicyService的工作原理,本章拓展思考部分分析了AudioFlinger中DuplicatingThread的工作原理,并且和读者一道探讨了单元测试、ALSA、Desktop check等问题。通过对本章的学习,相信读者会对Audio系统有更深的理解。

第8章以Surface系统为主,分析了Activity和Surface的关系、Surface和SurfaceFlinger的关系以及SurfaceFlinger的工作原理。本章的拓展思考部分分析了Surface系统中数据传输控制对象的工作原理、有关ViewRoot的一些疑问,最后讲解了LayerBufer的工作流程。这是全书中难度较大的一章,建议大家反复阅读和思考,这样才能进一步深入理解 Surface系统。

第9章分析了Vold和Rild,其中Vold负责Android平台中外部存储设备的管理,而Rild负责与射频通信有关的工作。本章的拓展思考部分介绍了嵌入式系统中与存储有关的知识,还探讨了Rild和Phone设计优化方面的问题。

第10章分析了多媒体系统中McdiaScanner的工作原理。在本章的拓展思考部分,笔者提出了几个问题,旨在激发读者深入思考和学习Android的欲望。

本书特色笔者认为,本书最大的特点在于,较全面、系统、深入地讲解了Android系统中的几大重要组成部分的工作原理,旨在通过直接剖析源代码的方式,引领读者一步步深入于诸如Binder、Zygote、Audio、Surface、Vold、Rild等模块的内部,去理解它们是如何实现的,以及如何工作的。笔者根据研究Android代码的心得,在本书中尝试性地采用了精简流程、逐个击破的方法进行讲解,希望这样做能帮助读者更快、更准确地把握各模块的工作流程及其本质。本书大部分章节中都专门撰写了“拓展思路”的内容,希望这部分内容能激发读者对Android代码进行深入研究的热情。

本书面向的读者(1)Android应用开发工程师对于Android应用开发工程师而言,本书中关于Binder,以及sp、wp、Handler和Looper等常用类的分析或许能帮助你迅速适应Android平台上的开发工作。

(2)Android系统开发工程师Android系统开发工程师常常需要深入理解系统的运转过程,而本书所涉及的内容可能正是他们在工作和学习中最想了解的,那些对具体模块(如Audio系统和Surface系统)感兴趣

深入理解AndroidPDF预览

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(1)

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(2)

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(3)

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(4)

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(5)

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(6)

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(7)

目录

第1章 搭建Android源码工作环境 / 1

1.1 Android系统架构 / 2

1.2 搭建开发环境 / 3

1.2.1 下载源码 / 3

1.2.2 编译源码 / 4

1.2.3 利用Eclipse调试system_process / 5

1.3 本章小结 / 11

第2章 深入理解Java Binder和MessageQueue / 12

2.1 概述 / 13

2.2 Java层中的Binder架构分析 / 13

2.2.1 Binder架构总览 / 13

2.2.2 初始化Java层Binder框架 / 14

2.2.3 addService实例分析 / 17

2.2.4 Java层Binder架构总结 / 26

2.3 心系两界的MessageQueue / 27

2.3.1 MessageQueue的创建 / 27

2.3.2 提取消息 / 28

2.3.3 nativePollOnce函数分析 / 31

2.3.4 MessageQueue总结 / 41

2.4 本章小结 / 42

第3章 深入理解SystemServer / 44

3.1 概述 / 45

3.2 SystemServer分析 / 45

3.2.1 main函数分析 / 45

3.2.2 Service群英会 / 48

3.3 EntropyService分析 / 49

3.4 DropBoxManagerService分析 / 50

3.4.1 DBMS构造函数分析 / 51

3.4.2 dropbox日志文件的添加 / 51

3.4.3 DBMS和settings数据库 / 56

3.5 DiskStatsService和DeviceStorageMonitorService分析 / 56

3.5.1 DiskStatsService分析 / 56

3.5.2 DeviceStorageManagerService分析 / 58

3.6 SamplingProfilerService分析 / 60

3.6.1 SamplingProfilerService构造函数分析 / 61

3.6.2 SamplingProfilerIntegration分析 / 62

3.7 ClipboardService分析 / 64

3.7.1 复制数据到剪贴板 / 64

3.7.2 从剪切板粘贴数据 / 67

3.7.3 CBS中的权限管理 / 69

3.8 本章小结 / 73

第4章 深入理解PackageManagerService / 74

4.1 概述 / 75

4.2 初识PackageManagerService / 76

4.3 PKMS的main函数分析 / 77

4.3.1 构造函数分析之前期准备工作 / 78

4.3.2 构造函数分析之扫描Package / 90

4.3.3 构造函数分析之扫尾工作 / 105

4.3.4 PKMS构造函数总结 / 105

4.4 APK Installation分析 / 105

4.4.1 adb install分析 / 105

4.4.2 pm分析 / 107

4.4.3 installPackageWithVerification函数分析 / 109

4.4.4 APK 安装流程总结 / 121

4.4.5 Verification介绍 / 122

4.5 queryIntentActivities分析 / 124

4.5.1 Intent及IntentFilter介绍 / 124

4.5.2 Activity信息的管理 / 125

4.5.3 Intent 匹配查询分析 / 128

4.5.4 queryIntentActivities总结 / 131

4.6 installd及UserManager介绍 / 131

4.6.1 installd介绍 / 131

4.6.2 UserManager介绍 / 136

4.7 本章学习指导 / 138

4.8 本章小结 / 138

第5章 深入理解PowerManagerService / 139

5.1 概述 / 140

5.2 初识PowerManagerService / 140

5.2.1 PMS构造函数分析 / 141

5.2.2 init分析 / 141

5.2.3 systemReady分析 / 147

5.2.4 BootComplete处理 / 148

5.2.5 初识PowerManagerService总结 / 149

5.3 PMS WakeLock分析 / 149

5.3.1 WakeLock客户端分析 / 149

5.3.2 PMS acquireWakeLock分析 / 151

5.3.3 Power类及LightService类介绍 / 160

5.3.4 WakeLock总结 / 163

5.4 userActivity及Power按键处理分析 / 164

5.4.1 userActivity分析 / 164

5.4.2 Power按键处理分析 / 167

5.5 BatteryService及BatteryStatsService分析 / 168

5.5.1 BatteryService分析 / 169

5.5.2 BatteryStatsService分析 / 172

5.5.3 BatteryService及BatteryStatsService总结 / 182

5.6 本章学习指导 / 183

5.7 本章小结 / 183

第6章 深入理解ActivityManagerService / 184

6.1 概述 / 185

6.2 初识ActivityManagerService / 186

6.2.1 ActivityManagerService的main函数分析 / 187

6.2.2 AMS的 setSystemProcess分析 / 197

6.2.3 AMS的 installSystemProviders函数分析 / 202

6.2.4 AMS的 systemReady分析 / 211

6.2.5 初识ActivityManagerService总结 / 218

6.3 startActivity分析 / 219

6.3.1 从am说起 / 219

6.3.2 AMS的startActivityAndWait函数分析 / 221

6.3.3 startActivityLocked分析 / 230

6.4 Broadcast和BroadcastReceiver分析 / 265

6.4.1 registerReceiver流程分析 / 267

6.4.2 sendBroadcast流程分析 / 272

6.4.3 BROADCAST_INTENT_MSG消息处理函数 / 276

6.4.4 应用进程处理广播分析 / 282

6.4.5 广播处理总结 / 284

6.5 startService之按图索骥 / 285

6.5.1 Service知识介绍 / 285

6.5.2 startService流程图 / 286

6.6 AMS中的进程管理 / 287

原文书摘

2.4.4通过JNIEnv 操作 jobject前面提到过一个问题,即Java的引用类型除了少数几个外,最终在1层都会用jobject来表示对象的数据类型,那么该如何操作这个jobject呢?

从另外一个角度来解释这个问题。一个Java对象是由什么组成的?当然是它的成员变量和成员函数了。那么,操作jobject的本质就应当是操作这些对象的成员变量和成员函数。所以应先来看与成员变量及成员函数有关的内容。

1.jfieldlD和jmethodID介绍我们知道,成员变量和成员函数都是由类定义的,它们是类的属性,所以在JNI规则中,用jfieldID和jmethodID来表示Java类的成员变量和成员函数,可通过JNIEnv的下面两个函数得到:

tieldrD GetPieldrD(iclasa clazz,const char "name,const char *sig):

jmethodrp GetMethodID<jclasg clazz,const char *name,const char *sig);其中,jclas代表Java类,name表示成员函数或成员变量的名字,sig为这个函数和变量的签名信息。如前所示,成员函数和成员变量都是类的信息,这两个函数的第一个参数都是jclass,在MS中是怎么使用它们的呢?来看代码,如下所示

深入理解Android卷1pdf截图

深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(8)深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(9)深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(10)深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(11)深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(12)深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(13)深入理解Android卷1pdf在线下载-深入理解Android卷1pdf完整版插图(14)

评分及评论

无用户评分

来评个分数吧

  • 5 分
    0
  • 4 分
    0
  • 3 分
    0
  • 2 分
    0
  • 1 分
    0

评论