ANDROID源码分析实录

所需积分/C币:19 2016-01-11 09:52:11 152.45MB PDF

《Android源码分析实录》共分为15章,主要内容包括走进Android世界、硬件抽象层详解、分析JNI(Java本地接口)层、Android内存系统分析、Andmid虚拟机系统详解、IPC通信机制详解、Zygote进程/System进程和应用程序进程、分析Activitv组件、Content Provider数据存储、Broadcast(广播)系统详解、多媒体系统详解、电源管理系统详解、输入系统驱动应用、蓝牙系统详解、网络系统详解等。
Android源码分析实录 李忠良编著 清华大学出版社 北京 内容简介 Android是一款服务于智能手机和平板电脑等设备的操作系统,截止作者撰写此书时为止, Android在智 能手机操作系统市场中已经占有75%的份额。为了让广大读者充分了解这款神奇的操作系统的架构原理,本 书循序渐进地分析了 Android系统核心源码的基本知识。 本书共分为15章,主要内容包括走进 Android世界、硬件抽象层详解、分析JN(Java本地接口)层、 Android 内存系统分析、 Android虛拟机系统详解、IPC通信机制详解、 Zygote进程/ System进程和应用程序进程、分析 Δ ctivity组件、( ontent Provider数据存储、 Broadcast(广播)系统详解、多媒体系统详解、电源管理系统详解、 输入系统驱动应用、蓝牙系统详解、网络系统详解等。 本书几乎涵盖了 Android源码中的所有核心系统的内容,全书内容通俗易懂,适合 Android初学者、 Android爱好者、 Android底层开发人员、 Android应用开发人员阅读和学习,也可以作为相关培训学校和大专 院校相关专业的教学用书 本书封面贴有清华大学出版社防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010-6278298913701121933 图书在版编目(C|P)数据 Android源码分析实录/李忠良编著.一北京:清华大学出版社,2015 ISBN978-7-302-39329-0 Ⅰ.①A…·Ⅱ.①李…Ⅲ①移动终端一应用程序一程序设计Ⅳ.①N929.53 中国版本图书馆CIP数据核字(2015)第024952号 责任编辑:杨作梅 封面设计:杨玉兰 责任校对:马素伟 责任印制:沈露 出版发行:清华大学出版社 potle:http://www.tup.comcn,http://www.wabook.com 地址:北京清华大学学研大厦A座 社总机:010-62770175 邮邮 编:100084 购:010-62786544 投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn 质量反馈:010-62772015,shiliang@tup.tsinghua.edu.cn 印刷者:三河市君旺印务有限公司 装订者:三河市新茂装订有限公司 经销:全国新华书店 开本:190mm×260mm 印张:46.25 字数:1124千字 版次:2015年4月第1版 印次:2015年4月第1次印刷 印数:1~3000 定价:89.00元 产品编号:054375-01 前言 Androide中文译名为安卓)是IT界巨头 Google(谷歌)公司于2007年11月5日推出的一款 智能操作系统,最初被应用于智能手机,后来随着版本的更新和发展,也被广泛应用于平板电 脑、智能电视、可穿戴设备和健康设备中。 Android是一款基于 Linux平台的开源操作系统的 名称,根据国际数据公司(DC)公布的数据, Android在智能手机操作系统中的市场占有率已经 达到75%。 高份额的市场占有率使得更多的开发人员把目光投入这款神奇的系统,很多初学者也纷纷 涌入 Android的学习行列中,配合这些需求, Android的各种应用类图书不断涌现并广受欢迎。 但美中不足的是,深入源码分析的书籍屈指可数。而源码分析正是通往 Android殿堂、跻身为 高手的阶梯。 为了让广大初学者可以对 Android系统实现“灵与肉”的感知,而不是停留在抽象的原理 和概念上,本书对 Android系统的源码进行细致的分析,这样做的目的,是提炼出 Android系 统埋藏于深处的本质和精华的东西,以展示这款神奇的系统究竟是怎样实现的。 1.本书内容 Android系统升级较快,有些代码变动很大。系统自2007年发布第一个版本1.1以来,截 至2013年7月发布版本4.3,中间一共存在十多个版本。但据官方统计,到2013年5月5日, 占据前三位的版本分别是 Android42, Android4.1和 Android4.3,其实这三个版本的区别并不 是很大,只是在某领域的细节上进行了更新。因此,在本书中,我们选择本书最初写作时的最 新版本 Android43系统的实现。 本书共分15章,依次为走进 Android世界、硬件抽象层详解、分析JNI(Java本地接口)层、 Android内存系统分析、 Android虚拟机系统详解、IPC通信机制详解、 Zygote进程/ System进 程和应用程序进程、分析 Activity组件、 Content Provider数据存储、 Broadcast(广播)系统详解、 多媒体系统详解、电源管理系统详解、输入系统驱动应用、蓝牙系统详解、网络系统详解 本书几乎涵盖 Android源码中的所有核心系统的内容,全书通俗易懂,特别有利于初学者 学习和消化。 2.本书特色 本书内容十分丰富,分析细致、全面。我们的目标是通过一本图书,提供多本图书的价值, 读者可以根据自己的需要,有选择地阅读。 在内容的编写上,本书具有以下特色。 (1)结构合理 从用户的实际需要出发,科学安排知识结构。全书详细地讲解与 Android应用开发有关的 源码,内容循序渐进,由浅入深。 (2)易学易懂 本书条理清晰、语言简洁,可帮助读者快速掌握每个知识点,使读者既可以按照本书编排 Android源码分析实录 的章节顺序进行学习,也可以根据自己的需求,对某一章节进行有针对性的学习。 (3)实用性强 本书彻底摒弃枯燥的理论知识罗列,注重实用性和可操作性,通过细膩的笔法,逐步讲解 各个知识点的基本知识。 (4)内容全面 本书是如今市面上“内容最全的 Android源码分析书”,无论是获取源码,还是各个常用、 常见的模块系统,在本书中您都能找到解决问题的答案。 3.读者对象 本书适合下列人员阅读和学习: 初学 Android编程的自学者 Android源码分析人员。 Android底层开发人员。 Android系统开发人员。 相关培训机构的教师和学员 从事 Android开发的程序员。 4.作者支持 在编写此书的过程中,得到了清华大学出版社工作人员的大力支持,正是由于各位编辑的 求实态度、耐心的工作和奉献精神,才使得本书能够快速出版。 另外也十分感谢我的家人在我写作的时候给予的巨大支持 由于作者水平有限,本书的疏漏之处在所难免,恳请读者提出意见或建议,以便再版时修 订并使之更臻完善。我们提供了售后支持QQ(号码为1727069718),读者如有疑问可以通过QQ 提出,将会得到满意的答复。 编者 l1<………………… 目录 第1章走进 Android世界 1.6.6系统运行库… 24 1.6.7硬件抽象层 25 1.1 Android系统的优势 17编译 Android源码..26 1.1.1开源 2 1.7.1搭建编译环境………27 1.1.2强大的开发团队的支持 1.7.2开始编译……27 1.1.3开发人员的支持…1 1.7.3在模拟器中运行…29 1.2 Android系统架构介绍 1.74编译源码生成SDK. 30 1.21底层操作系统层( Linux内核层)…4 35 1.2.2库( Libraries)和运行环境 第2章硬件抽象层详解 ( Runtime)….,……4 21什么是HAL层……136 1.23应用程序框架( Application 2.1.1为什么把对硬件的支持划分为 Framework) 两层来实现 36 1.24顶层应用程序( Application)5 21.2HAL层的位置结构…36 13核心组件 22分析 HAL Module架构 38 131 Activity的界面表现 2.2.1 hw module t.…39 1.3.2 Intent和 Intent Filters界面 2.2.2 hw module methods t....40 切换 .6 2. 2. 3 hw device t 1.3.3 Service服务…6 23分析文件 hardware.c…41 1.3.4 Broadcast IntentReceiver 23.1函数 hw get module….41 广播… 23,2数组 variant keys 1.3.5用 Content Provider存储 777 23.3载入相应的库 14进程和线程 2.3.4打开相应库并获得 hw module t 141什么是进程 结构体 43 14.2什么是线程 8 24分析硬件抽象层的加载过程……4 1.5获取 Android4.3源码 2.5分析硬件访问服务……48 1.5.1在 Linux系统中获取 Android 2.5.1定义硬件访问服务接口 48 源码.… 8 252实现硬件访问服务…49 1.52在 Windows平台上获取 Android 2.6分析 monoid工程….50 源码. 26.1直接调用 Service方法实现…51 16 Android源码结构分析 .14 26,2通过 Manager调用 Service 1.6.1 Android源码的目录结构…15 实现… 16,2应用程序 27分析HAL层的具体实现(以 Sensor系统 16.3应用程序框架…… 为例) 59 1.64系统服务 19 2.7.1传感器系统的基础知识…59 1.6.5系统程序库….21 2.7.2HAL层的 Sensor代码.…60 Android源码分析实录 2.7.3 Sensor编程的流程… .61 4.2分析 Ashen驱动程序……98 第3章分析JN(Java本地接口)层…,63 4.2.1基础数据结构…… 4.2.2初始化处理…… 9 3.1JN基础.…64 4.2.3打开匿名共享内存设备文件…101 3.1.1JN1的层次结构 .64 424内存映射… 3.1.2JNI的本质…… 4.2.5读写操作……105 3.1.3与JN1相关的文件…65 4.2.6锁定和解锁 3.2分析Java层… 66 42.7回收内存块…113 32.1加载JNI库… 4.3分析C++访问接口层…115 3.2.2实现扫描工作. 68 43.1接口 MemoryHeap Base…115 3.2.3读取并保存信息 9 43.2接口 Memory Base 125 3.24删除不是SD卡中的文件信息…72 44分析Java访问接口层…128 3.2.5直接转向JN1…172 4.5内存优化机制 132 3.2.6扫描函数 scanFile….173 4.5.1sp和wp简析 132 3.27异常处理… 73 4.52详解智能指针……134 3.3分析 MediaScanner的JN层…14 4.53轻量级指针……136 33.1将 Native对象的指针保存到 4.54强指针………139 Java对象… ……… 75 4.5.5弱指针……153 3.32创建 Native层的 Media Scanner 对象…75 第5章 Android虚拟机系统详解 34分析 MediaScanner的 Native层 76 5.1 Android虚拟机基础 160 3.4.1注册JNI函数. 76 5.1.1 Android虚拟机源码目录.160 34.2完成注册工作 51.2 Dalvik的架构…… 16l 3.43动态注册……80 5.13 Dalvik虚拟机的主要特征…163 344处理路径参数.…82 514 Dalvik的进程管理163 34.5扫描文件.… 83 51.5 Android的初始化流程 163 34.6添加TAG信息 83 52分析 Dalvik的运作流程…164 347 JNIEnv接口 85 521 Dalvik虚拟机相关的可执行 348JNI中的环境变量 86 程序 3.5JNI实例分析(基于 Camera系统)…87 3.5.1Java层预览接口 522初始化 Dalvik虚拟机 167 87 3.52注册预览的JNI函数 89 523启动 Zygote. 3.53CC++层的预览函数……92 524启动 SystemServer进程190 525加载cass类文件 .193 第4章 Android内存系统分析 95 53 Dalvik VM的内存系统…197 4.1 Android的进程通信机制. 53.1如何分配内存………197 4.11 Android的进程间通信(PC) 53.2分析内存管理机制的源码 99 机制 Binder.96 54分析 Dalvik vm的启动过程……211 4..2 Service manager是 Binder机制的 541创建一个 Dalvik vm实例…211 上下文管理者 542指定控制选项 目录 543创建并初始化 Dalvik VM 7.2.2分析 SystemServer……304 实例 220 7.2.3分析 Entropy Service.30 544创建 JNIEnv Ext对象 223 7.2.4分析 DropBoxManagerService…310 545设置当前进程….129 7.2.5分析 Disk Stats Service.1318 546注册 Android核心类的JNI 7.2.6分析 Device Storage Manager. 方法 22 Service 323 54.7使用线程创建 javaCreateThreadEtc 7.2.7分析 Sampling ProfilerService…326 钩子…233 73应用程序进程详解…336 5.5创建 Dalvik Vm进程…233 73.1创建应用程序……1336 5.5.1分析底层启动过程 234 732启动线程池 347 5.52创建 Dalvik Vm进程…234 733创建信息循环…… 348 53初始化运行的DkM…238第8章分析 Activity组件… .351 第6章|PC通信机制详解…241 8.1 Activity基础135 6.1 Binder机制概述…242 8.1.1 Activity的状态.1352 62分析 Binder驱动程序 243 8.1.2 Activity的主要函数 62.1分析数据结构143 8.2启动 Activity 355 622分析设备初始化 255 821 Launcher启动应用程序…356 623打开 Binder设备文件257 822返回 Activity ManagerService的 624内存映射 258 远程接口……358 62.5释放物理页面…264 82.3解析 Intent的内容…1359 62.6分配内核缓冲区…1264 824分析检查机制……1363 62.7释放内核缓冲区…67 82.5执行 Activity组件的操作 378 628查询内核缓冲区 269 8.2.6将 Launcher推入 Paused 63 Binder封装库… 270 状态……386 63.1 Binder库的实现层次 70 827处理消息…388 6.32类 BInder… 271 8.2.8报告暂停… 389 63.3类 BpRefBase .274 82.9建立双向连接 394 6.34类 IPCThreadState…1275 8.2.10启动新的 Activity… 400 64初始化Java层 Binder框架…279 8.2.11发送通知信息 403 第7章 Zygote进程、 System进程和 第9章 Content Provider数据存储.….5 应用程序进程 283 9.1 Content provider基础..0406 7.1· Zygote(孕育进程详解284 9.1.1 Content Provider在应用程序中的 7.1.1 Zygote基础 284 架构 406 7.1.2分析 Zygote的启动过程…285 91.2 Content provider的常用接口….407 7.2 System进程详解…103 9,2启动 Content provider .408 7.2.1启动 System进程前的准备 9.2.1获得对象接口……408 工作 303 922存在校验…410 》V (Android源码分析实录排排 923启动 Android应用程序…16 15实现 Open Core中的 OpenMAX 924根据进程启动 部分 503 Content provider 416 1.3.6 Open Core扩展详解517 9,25处理消息… 422 114 Stagefright框架详解 523 92.6具体启动 1423 114.1 Stagefright代码结构….53 93 Content Provider数据共享 427 114.2 Stagefright实现 OpenMAX 93.1获取接口……427 接口……1524 932创建 Cursor window对象……430 114.3分析Ⅴ ideo buffer的传输 933数据传递…433 流程…28 934处理进程通信的请求……436 第12章电源管理系统详解 533 935数据操作… 442 12.1 Android Power Management基础….534 第10章 Broadcast(广播)系统详解……47 122分析 Framework层 535 10.1 Broadcast基础 448 12.2.1文件 Power Manager. java…535 10.2发送广播信息 448 122.2文件 PowerManagerService java 10.2. intent描述指示…49 123分析JNI层……560 10.22传递广播信息……449 123.1文件 android os Power. cpp…560 10.23封装传递……1450 12.3.2文件 power,c…… ,561 10.24处理发送请求……451 12.4分析 Kernel(内核)层…562 10.2.5查找广播接收者….51 1241文件 power. c…52 10.26处理广播信息… 455 124.2文件 earlysuspend. c…65 10.27检查权限… 464 12.4.3文件 wakelock.c…56 10.28处理的进程通信请求……:466 12.44文件 resume.c 568 10.3分析 BroadcastReceiver.…69 124.5文件 suspend. c 568 10.31 MainActivity的调用…1470 124.6文件main.c…570 10.32注册广播接收者……470 124.7proc文件 570 10.3.3获取接口对象…-71 12.5 wakelock Fll early suspend 571 10.34处理进程间的通信请求……474 12.5.1 wakelock的原理…71 第11章多媒体系统详解 479 12.52 early suspend的原理 572 12.53 Android休眠 572 111 Android多媒体系统介绍….480 12.54 Android唤醒. 575 12 OpenMAX框架详解…481 12.1分析 OpenMAX框架构成482 第13章输入系统驱动应用..157 1.2.2实现 OpenMAX Il层接口….486 13.1输入系统介绍……578 113分析 Open Core框架… 495 13.2分析Inpu输入)系统驱动.80 113.1 Open Core的层次结构….495 13.2.1分析头文件,… 113.2 OpenCore的代码结构…496 1322分析核心文件 Input.c..584 113.3 Open Core的编译结构…497 13.2.3分析 event机制 11.34操作系统兼容库…… .501 13.3分析硬件抽象层 603 Ⅵ<…

...展开详情

评论 下载该资源后可以进行评论 14

e894348683 资源很nice,学习到很多android知识
2018-06-23
回复
hmliy_hao 可以可以,很强的一本书
2018-04-25
回复
木木1130 是很好的书。资源是扫描版,带目录。
2018-03-01
回复
panliucheng 不错 挺不错的
2017-12-04
回复
yueng_ender 可以可以,很强的一本书
2017-10-18
回复
云中显卡 是很好的书。资源是扫描版,带目录。
2017-10-12
回复
xuziyi2008 好书,不错,谢谢分享
2017-10-11
回复
zhouhaihua007 非常好!!!!!!
2017-10-08
回复
qq_27537639 不错,值得学习!
2017-02-24
回复
w_anchenchen 不错的书籍,可以使用
2017-02-06
回复
img
hx0_0_8

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐