Android系统源代码情景分析

Android系统源代码情景分析
作 者: 罗升阳
出版社: 电子工业出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 移动开发
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  罗升阳,1984年出生,2007年毕业于浙江大学计算机系,取得学士学位,2010年毕业于上海交通大学计算机系,取得硕士学位。毕业后一直从事于互联网软件开发,并且致力于移动平台的研究,特别是对Android平台有深入的理解和研究。在国内知名IT技术社区CSDN上发表了数十篇高质量的Android系统原创性文章,并且开设博客专栏:《老罗的Android之旅》,积极与网友互动,深受大家喜爱,访问量一直居于前茅。

内容简介

在内容上,《Android系统源代码情景分析(含CD光盘1张)》结合使用情景,全面、深入、细致地分析了Android系统的源代码,涉及到Linux内核层、硬件抽象层(HAL)、运行时库层(Runtime)、应用程序框架层(Application Framework)以及应用程序层(Application)。 在组织上,《Android系统源代码情景分析(含CD光盘1张)》将上述内容划分为初识Android系统、Android专用驱动系统和Android应用程序框架三大篇。初识Android系统篇介绍了参考书籍、基础知识以及实验环境搭建;Android专用驱动系统篇介绍了Logger日志驱动程序、Binder进程间通信驱动程序以及Ashmem匿名共享内存驱动程序;Android应用程序框架篇从组件、进程、消息以及安装四个维度对Android应用程序的框架进行了深入的剖析。 通过上述内容及其组织,本书能使读者既能从整体上把握Android系统的层次结构,又能从细节上掌握每一个层次的要点。

图书目录

第1篇 初识Android系统第1章

准备知识................................................................21.1

Linux内核参考书籍..................................................21.2

Android应用程序参考书籍....................................... 31.3

下载、编译和运行Android源代码........................... 31.3.1

下载Android源代码...........................................41.3.2

编译Android源代码...........................................41.3.3

运行Android模拟器...........................................51.4

下载、编译和运行Android内核源代码............................................................61.4.1

下载Android内核源代码................................... 61.4.2

编译Android内核源代码................................... 71.4.3

运行Android模拟器...........................................81.5

开发第一个Android应用程序................................... 81.6

单独编译和打包Android应用程序模块..........................................................111.6.1

导入单独编译模块的mmm命令...............................................................111.6.2

单独编译Android应用程序模块...............................................................121.6.3

重新打包Android系统镜像文件...............................................................12第2章

硬件抽象层.......................................................132.1

开发Android硬件驱动程序..................................... 142.1.1

实现内核驱动程序模块.................................. 142.1.2

修改内核Kconfig文件...................................... 212.1.3

修改内核Makefile文件..................................... 222.1.4

编译内核驱动程序模块.................................. 222.1.5

验证内核驱动程序模块.................................. 232.2

开发C可执行程序验证Android硬件驱动程序...............................................242.3

开发Android硬件抽象层模块................................. 262.3.1

硬件抽象层模块编写规范............................... 262.3.2

编写硬件抽象层模块接口............................... 292.3.3

硬件抽象层模块的加载过程........................... 332.3.4

处理硬件设备访问权限问题........................... 362.4

开发Android硬件访问服务..................................... 382.4.1

定义硬件访问服务接口.................................. 382.4.2

实现硬件访问服务..........................................392.4.3

实现硬件访问服务的JNI方法.......................... 402.4.4

启动硬件访问服务..........................................432.5

开发Android应用程序来使用硬件访问服务..................................................44第3章

智能指针...............................................................493.1

轻量级指针.............................................................503.1.1

实现原理分析................................................503.1.2

应用实例分析................................................533.2

强指针和弱指针.....................................................543.2.1

强指针的实现原理分析.................................. 553.2.2

弱指针的实现原理分析.................................. 613.2.3

应用实例分析................................................67第2篇 Android专用驱动系统第4章

Logger日志系统.............................................744.1

Logger日志格式.......................................................754.2

Logger日志驱动程序..............................................764.2.1

基础数据结构................................................774.2.2

日志设备的初始化过程.................................. 784.2.3

日志设备文件的打开过程............................... 834.2.4

日志记录的读取过程...................................... 844.2.5

日志记录的写入过程...................................... 884.3

运行时库层日志库.................................................934.4

C/C++日志写入接口.............................................1004.5

Java日志写入接口................................................1044.6

Logcat工具分析.....................................................1104.6.1

基础数据结构..............................................1114.6.2

初始化过程..................................................1154.6.3

日志记录的读取过程.................................... 1274.6.4

日志记录的输出过程.................................... 132第5章

Binder进程间通信系统............................... 1445.1

Binder驱动程序.....................................................1455.1.1

基础数据结构..............................................1465.1.2

Binder设备的初始化过程.............................. 1645.1.3

Binder设备文件的打开过程.......................... 1655.1.4

Binder设备文件的内存映射过程............................................................1665.1.5

内核缓冲区管理...........................................1735.2

Binder进程间通信库.............................................1835.3

Binder进程间通信应用实例................................. 1885.4

Binder对象引用计数技术..................................... 1965.4.1

Binder本地对象的生命周期.......................... 1975.4.2

Binder实体对象的生命周期.......................... 2015.4.3

Binder引用对象的生命周期.......................... 2045.4.4

Binder代理对象的生命周期.......................... 2095.5

Binder对象死亡通知机制..................................... 2125.5.1

注册死亡接收通知........................................2135.5.2

发送死亡接收通知........................................2165.5.3

注销死亡接收通知........................................2215.6

ServiceManager的启动过程..................................2245.6.1

打开和映射Binder设备文件.......................... 2265.6.2

注册为Binder上下文管理者.......................... 2275.6.3

循环等待Client进程请求............................... 2315.7

ServiceManager代理对象的获取过程...........................................................2385.8

Service组件的启动过程........................................2445.8.1

注册Service组件............................................2455.8.2

启动Binder线程池.........................................2895.9

Service代理对象的获取过程................................ 2915.10

Binder进程间通信机制的Java接口.............................................................3005.10.1

ServiceManager的Java代理对象的获取过程..........................................3005.10.2

Java服务接口的定义和解析..................................................................3105.10.3

Java服务的启动过程.................................... 3135.10.4

Java服务代理对象的获取过程..............................................................3205.10.5

Java服务的调用过程.................................... 323第6章

Ashmem匿名共享内存系统..............................................................3276.1

Ashmem驱动程序.................................................3286.1.1

基础数据结构..............................................3286.1.2

匿名共享内存设备的初始化过程...........................................................3306.1.3

匿名共享内存设备文件的打开过程.......................................................3326.1.4

匿名共享内存设备文件的内存映射过程................................................3346.1.5

匿名共享内存块的锁定和解锁过程.......................................................3366.1.6

匿名共享内存块的回收过程..................................................................3446.2

运行时库cutils的匿名共享内存访问接口....................................................3456.3

匿名共享内存的C++访问接口............................. 3496.3.1

MemoryHeapBase.........................................3496.3.2

MemoryBase.................................................3596.3.3

应用实例.....................................................3646.4

匿名共享内存的Java访问接口............................. 3706.4.1

MemoryFile..................................................3706.4.2

应用实例.....................................................3756.5

匿名共享内存的共享原理.................................... 386第3篇 Android应用程序框架第7章

Activity组件的启动过程............................. 3927.1

Activity组件应用实例............................................3927.2

根Activity组件的启动过程.................................... 3987.3

子Activity组件在进程内的启动过程............................................................4327.4

子Activity组件在新进程中的启动过程........................................................440第8章

Service组件的启动过程............................ 4438.1

Service组件应用实例.............................................4438.2

Service组件在新进程中的启动过程.............................................................4518.3

Service组件在进程内的绑定过程.................................................................463第9章

Android系统广播机制................................. 4869.1

广播机制应用实例...............................................4879.2

广播接收者的注册过程........................................4939.3

广播的发送过程...................................................501第10章

ContentProvider组件的实现原理.................................................52410.1

ContentProvider组件应用实例........................... 52510.1.1

ArticlesProvider...........................................52510.1.2

Article.........................................................53510.2

ContentProvider组件的启动过程................................................................55010.3

ContentProvider组件的数据共享原理........................................................57310.3.1

数据共享模型.............................................57310.3.2

数据传输过程.............................................57610.4

ContentProvider组件的数据更新通知机制................................................59610.4.1

注册内容观察者..........................................59710.4.2

发送数据更新通知......................................603第11章

Zygote和System进程的启动过程.................................................61111.1

Zygote进程的启动脚本........................................61111.2

Zygote进程的启动过程........................................61411.3

System进程的启动过程.......................................622第12章

Android应用程序进程的启动过程.................................................63012.1

应用程序进程的创建过程.................................. 63012.2

Binder线程池的启动过程................................... 63912.3

消息循环的创建过程..........................................641第13章

Android应用程序的消息处理机制.................................................64513.1

创建线程消息队列.............................................64513.2

线程消息循环过程.............................................65013.3

线程消息发送过程.............................................65513.4

线程消息处理过程.............................................660第14章

Android应用程序的键盘消息处理机制.......................................66714.1

键盘消息处理模型.............................................66714.2

InputManager的启动过程.................................... 67014.2.1

创建InputManager......................................67014.2.2

启动InputManager......................................67314.2.3

启动InputDispatcher....................................67514.2.4

启动InputReader........................................67714.3

InputChannel的注册过程..................................... 68814.3.1

创建InputChannel.......................................68914.3.2

注册Server端InputChannel...........................69714.3.3

注册系统当前激活的应用程序窗口.....................................................70114.3.4

注册Client端InputChannel...........................70614.4

键盘消息的分发过程..........................................70914.4.1

InputReader获得键盘事件........................... 71014.4.2

InputDispatcher分发键盘事件...............................................................71714.4.3

系统当前激活的应用程序窗口获得键盘消息.......................................72714.4.4

InputDispatcher获得键盘事件处理完成通知.........................................743<