Android:卷II(邓凡平)PDF扫描版
前言 本书主要内容及特色 本书是笔者“深人理解 Android”系列的第二本,这一本将关注重点放在了 Android Framework的Jaa层。在众多可供分析的知识点中,笔者另辟蹊径,选择了 SystemServer中 的服务( Service)作为主人公。这些 Service大体可由图1来表示。 第一服务 第二类康务 第三英务 ActimtyManagerrvog NebrarMMaragemensernceNetaorkT meupdabe servic Cartenteevioo AcoauntManagerser POae MannEr Serv be Network Pola Reger Service Networkstab Service MeuntSarvre PAck wifSrviceIWfiP2pServiceThrtleService TextservicesMnagerservice ScanchManager service MincownanaASA'viE ConractitySev[ THechanyRegslry 第四卖服务 EntnpySomcecipoarusem Dsk stats seves Usbservce DevcePulicyMaragerservice IstorSevice DroBamManagerSorvice sampingProfi erservce Recogniton Managersorvkce bevoestomaue kanmtorsenvica[wa第五类服务 AEsnagcrsarvce 第六受服务 AW吻些國吗甲导四七类康务 wbratosarice BluetDothA2cpseisc UiMcduMamcarcrice SIaM BarManajur SaNce HlustooTET cn 图1 SystemServer中的服务 由图1可知, SystemServer中的服务可划分为7大类共43项(包括 Watchdog在内): 口位于第一大类的是 Android的核心服务,如 Activity ManagerService、 Window Manager ervice 等 口位于第二大类的是和通信相关的服务,如Wf的相关服务、 Telephone的相关服务。 口位于第三大类的是和系统功能相关的服务,如 Audioservice、 Mountservice、 UsbService等。 口位于第四大类的是 Battery Service、 Vibratorservice等服务。 位于第五大类的是 Entropy Service、 DiskStats service、 Watchdog等相对独立的服务。 口位于第六大类的是蓝牙服务。 口位于第七大类的是UI方面的服务,如状态栏服务、通知管理服务等。 以上这些服务就是 Android Framework. Java层的核心。毫不夸张地说,它们也是 Android... 一系统的基石。另外,这些服务的内容远非一本书所能囊括。作为 Android java层 Framework 分析的先头部队,本书涵盖了以下内容: 第1章,介绍了阅读本书需要做的一些准备工作,包括 Android4.0源码的下载和编译 Eclipse开发环境的搭建,以及 Android系统进程( system process的调试等。 第2章,介绍了 Java binder和 Message Queue的实现。 第3章,介绍了 SystemServer,并分析了图1中第五类包含的服务的工作原理。这些服务 包括 Entropy Service、 Drop Box Manager Service、 Disk Stats Service,、 Device StorageMonitor Service、 Sampling ProfilerService Fnl ClipboardService 第4章,分析了 PackageManagerService,该服务负责 Android系统中的 Package信息查 询和APK安装、卸载、更新等方面的工作。 第5章,讲解了 PowerManager Service,它是 Android中电源管理的核心服务。本章对其 中的 Wakelock、 Power按键处理、 Battervstats service和 Battery Service都做了一番较为深入 的分析。 第6章,以 Activity ManagerService为分析重点;该服务是 Android的核心服务。本章 对 Activity ManagerService的启动、 Activity的创建和启动、 BroadcastReceiver的工作原理 Android中的进程管理等内容进行了较为深入的硏究。 第7章,对 ContentProvider的创建和启动、 SQLite相关知识、 Cursor query和 close的实 现等进行了较为深入的分析 第8章,以¢ ontentservice和 AccountManagerService为分析对象;介绍了数据更新通知 机制的实现、账户管理和数据同步等方面的知识。 图1中的其他服务将会在“深入理解 Android”系列的其他书中详细分析。该系列书的规 划请见本书最后面的“深入理解 Android系列图书路线图” = 本书以直接剖析源码的方式进行讲解,旨在引领读者一步步深入于 Android系统中相关 F 模块的内部原理,去理解它们是如何实现、如何工作的。在分析过程中,笔者根据个人研究 Android代码的心得,采用了精简流程和逐个击破的方法。同时,笔者还提出了一些难度不大 的知识点、相关的补充阅读资料,甚至笔者在实际项目中遇到的开放式问题,留给读者自行 研究和探讨。总之,笔者希望读者在阅读完本书后,至少能有以下两个收获 口能从“基于 Android并高于 Android”的角度来看待和分析 Android 口能初步具有大型复杂代码的分析能力。 读者对象 适合阅读本书的读者包括: (1) Android应用开发工程师 虽然应用开发工程师平常接触的多是 Android sdK,但是只有更深入地理解了 Android系 统运行原理,才能写出更健壮、更高效的模块。 (2) Android系统开发工程师 系统开发工程师常常需要深入理解系统的运转过程,而本书所涉及的内容正 是他们在工作和学习中最想了解的。那些对具体服务(如 Activity ManagerService、 Package Service)感兴趣的读者,也可以单刀直入,阅读本书相关章节。 (3)对 Android系统运行原理感兴趣的读者 这部分读者需要具有基本的 Android开发知识基础。 如何阅读本书 本书是针对 Android源码进行分析的,而源码文件所在的路径一般都很长,例如,文件 AndroidRuntime. cpp的真实路径是 frame works/ base/core/jni/ AndroidRuntime cpp。为了行文方 便,在各章节开头,均把本章涉及的源码路径全部列出,而在具体分析源码时,则只列出该 源码的文件名。例如: 6[->AndroidRuntime cpp /这里是源码和一些注释 另外,本书在描述类之间的关系及函数调用流程上,使用了UML的静态类图及序列图。 UML是一个强大的工具,但它的建模规范过于烦琐,为更简单清晰地描述事情的本质,本书 并未完全遵循UML的建模规范。这里仅举一例,如图2所示。 基类 接口 外部类A内部类目 内部类 量生类 生(实现接口 图2UML示例图 在图2中 口外部类内部的方框用于表示内部类。另外,“外部类A.内部类B”也用于表示内部类。 口接口和普通类用同一种框图表示 本书所使用的UML图都比较简单,读者不必花费大量时间专门学习UML。 这里有必要提醒一下,要阅读此书,应具有Java基本知识。 另外,本书和《深入理解 Android卷I》6(简称“卷I”)部分章节有一定联系,主要集中 在 Binder和 MessageQueue部分。读者可将“卷I中”这部分内容作为补充阅读资料来学习。 卷I部分内容的电子版下载地址为:htt: download, csdn net/detailhzbooks3677793。 本书涉及的 Android4.0源码以及一些开发工具的下载地址为:htp:/11com/ folder/ fauqpjOt# Android-ICS-SOURCE-CODE 勘误和支持 由于作者的水平有限,加之写作时间仓促,书中难免会出现一些错误或不准确的地方, 恳请读者批评和指正。若有问题,可通过邮箱或在博客上留言与笔者共同讨论。笔者的联系 方式是: 口邮箱:fanping.deng@gmail.com 口博客: blog. csdn. net/inmost、 cnblogs. net/inmost和hp:/mny. oschina. net/inmost/blog 致谢 本书即将付梓!首先要感谢杨福川编辑的大力支持。另外,要感谢本书的审稿编辑姜影。 再一次感谢我所在的中科创达( ThunderSoft)公司。有幸工作在这样一个互相信任、互 相鼓励、平等和开放式的环境中,我才能完成本书。公司领导所给予的机会和挑战,时时鞭 策着我保持虚心学习的心态。此外,我所在团队的各位同仁也给予了我不少支持和帮助。本 e该书已由机械工业出版社于2011年出版,书号为9787-11357629 书出版之日,将是我们团队为之努力奋斗的 Android系统高效、稳定运行于客户手札之时! 如既往地感谢妻子和家人,他们是我奋斗的动力。 谢谢在人生和职业道路上曾给予我指导的诸位师长。 当然,最应感谢的还是肯花费宝贵时间和精力关注本书的读者,你们的意见和建议,将 会使我获得巨大的精神财富! 邓凡平于北京,中科创达( Thunder Soft)公司 目录 前言 第1章搭建 Android源码工作环境/1 1.1 android系统架构/2 1.2搭建开发环境/3 1.2.1下载源码/3 1.2.2编译源码/4 123利用 Eclipse调试 system process/5 1.3本章小结/11 第2章深人理解 Java Binder和 Message Queue/12 2.1概述/13 2.,2Java层中的 Binder架构分析/13 2.2. I Binder架构总览/l3 2.2.2初始化Java层 Binder框架/14 223 addservice实例分析/17 224Java层 Binder架构总结/26 23心系两界的 MessageQueue/27 231 MessageQueue的创建/27 2.3.2提取消息/28 23.3 native pollonce函数分析/3 234 MessageQueue总结/41 24本章小结/42 第3章深人理解 SystemServer/44 3.1概述/45 32 SystemServer分析/45 3.2.1main函数分析/45 32.2 Service群英会/48 33 Entropy Service分析/49 34 Drop Box ManagerService分析/50 34 1 DBMS构造函数分析/51 34.2 dropbox日志文件的添加/51 343DBMS和 settings数据庳/56 3.5 Disk Stats Service和 Device StorageMonitor Service分析/56 3.5.1 Diskstats service分析/56 35.2 DeviceStorage Manager service分析/58 36 Sampling ProfilerService分析/60 3.6.1 Sampling Profiler Service构造函数分析/6l 36.2 Sampling ProfilerIntegration分析/62 37 Clipboardservice分析/64 3.7.1复制数据到剪贴板/64 3.7.2从剪切板粘贴数据/67 3.73CBS中的杈根菅理/69 38本章小结/73 第4章深人理解 PackageManagerService/74 4.1概述/75 X 42初识 Package Service/76 43PKMS的main函数分析/77 4.3.1构造函数分析之前期准备工作/78 4、3.2构造函数分柝之扫描 Package/90 43.3构造函数分析之扫尾工作/105 4.34PKMS构造函数总结/105 44 APK Installation分析/105 4.4.1 adb install分析/l05 44.2pm分析/107 44.3 installPackage With Verification函数分析/109 444APK安装流程总结/121 44.5 Verification介绍/122 4.5 queryIntentActivities分析124 4.5.1 Intent及 IntentFilter介绍/124 4.5.2 Activity信息的管理/l25 4.53 Intent匹配查询分析/128 45.4 query IntentActivities总结/131 4.6 install及 UserManager介绍/l3I 4.6.1 installa介绍/131 4.6.2 UserManager介绍/136 4.7本章学习指导/138 48本章小结/138 第5章深人理解 PowerManagerService/139 5.1概述/I40 5.2初识 Power MatragerService/140 52.lPMS构造函数分析/141 5,2.2init分析/41 523 systemReady分析/I47 524 BootComplete处理/148 52.5初识 PowerManagerService总结/l49 53 PMS WakeLock分析/149
用户评论