万本电子书0元读

万本电子书0元读

顶部广告

深入理解Android 5 源代码电子书

新版本Android 5.0 全面讲解了Android 5源程序的核心技术,包括Java Native Interface系统,HAL系统,IPC通信机制,Binder对象和Java口,init程和Zygote程,System程和应用程序程,Activity组件,应用程序管理服务,Content Provider、Broadcast系统,电源管理系统,电话系统,短信系统、传感器系统、SEAndroid系统和ART系统等核心知识。

售       价:¥

纸质售价:¥68.30购买纸书

173人正在读 | 3人评论 6.2

作       者:李骏

出  版  社:人民邮电出版社

出版时间:2016-01-01

字       数:120.2万

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(3条)
  • 读书简介
  • 目录
  • 累计评论(3条)
本书共分20章,循序渐地分析了Android系统的基本源代码,依次讲解了Android系统介绍,获取并编译Android源代码,分析Java Native Interface系统,分析HAL系统,分析IPC通信机制,分析Binder对象和Java口,分析ServiceManager和MessageQueue,init程和Zygote程,System程和应用程序程,分析Activity组件,应用程序管理服务分析,Content Provider、Broadcast(广播)系统,电源管理系统分析,分析WindowManagerService系统、分析电话系统,分析短信系统、Sensor传感器系统详解、分析SEAndroid系统和分析ART系统等核心知识。本书内容言简意赅,讲解方法通俗易懂,不仅适合有一定基础的读者学习,也特别有利于初学者学习。 本书适合Android初学者、Android爱好者、Android底层发人员、Android应用发人员学习,也可以作为相关培训学校和大专院校相关专业师生的教学用书。<br/>【推荐语】<br/>新版本Android 5.0 全面讲解了Android 5源程序的核心技术,包括Java Native Interface系统,HAL系统,IPC通信机制,Binder对象和Java口,init程和Zygote程,System程和应用程序程,Activity组件,应用程序管理服务,Content Provider、Broadcast系统,电源管理系统,电话系统,短信系统、传感器系统、SEAndroid系统和ART系统等核心知识。<br/>【作者】<br/>李骏,清华大学电子信息工程专业学士。较早Android发领域。有多年的Android发经验,熟练使用Java和C/C++行软件发。熟悉Android层次结构和Linux驱动层的结构及其上的发,有着丰富的Android底层和驱动层的优化、移植经验,擅长利用JNI技术发 Android上的应用程序。曾带领团队利用NDK技术成功发过具有库仑计电池芯片的电池管理软件,以及在Android上成功移植人脸识别程序,目前在凹凸电子担任Android架构师。<br/>
目录展开

前言

第1章 Android系统介绍

1.1 Android系统成功的秘诀

1.1.1 获取了业界的广泛支持

1.1.2 研发阵容强大

1.1.3 为开发人员“精心定制”

1.1.4 开源

1.2 剖析Android系统架构

1.2.1 底层操作系统层(OS)

1.2.2 各种库(Libraries)和Android运行环境(RunTime)

1.2.3 ApplicationFramework(应用程序框架)

1.2.4 顶层应用程序(Application)

1.3 五大组件

1.3.1 Activity界面

1.3.2 Intent和IntentFilters切换

1.3.3 Service(服务)

1.3.4 BroadcastReceiver发送广播

1.3.5 用ContentProvider存储数据

1.4 进程和线程

1.4.1 什么是进程

1.4.2 什么是线程

第2章 获取并编译Android源代码

2.1 获取Android源代码

2.1.1 在Linux系统中获取Android源代码

2.1.2 在Windows平台获取Android源代码

2.2 分析Android源代码结构

2.2.1 总体结构

2.2.2 应用程序部分

2.2.3 应用程序框架部分

2.2.4 系统服务部分

2.2.5 系统程序库部分

2.2.6 硬件抽象层部分

2.3 Android源代码提供的接口

2.3.1 暴露接口和隐藏接口

2.3.2 调用隐藏接口

2.4 编译源代码

2.4.1 搭建编译环境

2.4.2 在模拟器中运行

2.5 编译源代码生成SDK

第3章 分析Java Native Interface系统

3.1 JNI基础

3.1.1 JNI的功能结构

3.1.2 JNI的调用层次

3.1.3 分析JNI的本质

3.2 分析MediaScanner

3.2.1 分析Java层

3.2.2 分析JNI层

3.2.3 分析Native(本地)层

3.3 分析Camera系统的JNI

3.3.1 Java层预览接口

3.3.2 注册预览的JNI函数

3.3.3 C/C++层的预览函数

第4章 分析HAL系统

4.1 HAL基础

4.1.1 推出HAL的背景

4.1.2 HAL的基本结构

4.2 分析HAL module架构

4.2.1 hw_module_t

4.2.2 结构hw_module_methods_t的定义

4.2.3 hw_device_t结构

4.3 分析文件hardware.c

4.3.1 寻找动态链接库的地址

4.3.2 数组variant_keys

4.3.3 载入相应的库

4.3.4 获得hw_module_t结构体

4.4 分析硬件抽象层的加载过程

4.5 分析硬件访问服务

4.5.1 定义硬件访问服务接口

4.5.2 具体实现

4.6 分析Android官方实例

4.6.1 获取实例工程源代码

4.6.2 直接调用Service方法的实现代码

4.6.3 通过Manager调用Service的实现代码

4.7 HAL和系统移植

4.7.1 移植各个Android部件的方式

4.7.2 设置设备权限

4.7.3 init.rc初始化

4.7.4 文件系统的属性

第5章 分析IPC通信机制

5.1 Binder机制概述

5.2 分析Binder驱动程序

5.2.1 分析数据结构

5.2.2 分析设备初始化

5.2.3 打开Binder设备文件

5.2.4 内存映射

5.2.5 释放物理页面

5.2.6 分配内核缓冲区

5.2.7 释放内核缓冲区

5.2.8 查询内核缓冲区

5.3 Binder封装库

5.3.1 类BBinder

5.3.2 类BpRefBase

5.3.3 类IPCThreadState

5.4 初始化Java层Binder框架

5.5 分析MediaServer的通信机制

5.5.1 MediaServer的入口函数

5.5.2 ProcessState

5.5.3 defaultServiceManager

5.5.4 注册MediaPlayerService

5.5.5 分析StartThread Pool和join Thread Pool

第6章 分析Binder对象和Java接口

6.1 分析实体对象(binder_node)

6.2 分析本地对象(BBinder)

6.3 分析引用对象(binder_ref)

6.4 分析代理对象(BpBinder)

6.5 分析Java接口

6.5.1 获取Service Manager

6.5.2 分析ActivityManagerService的Java层

第7章 分析ServiceManager和MessageQueue

7.1 分析ServiceManager

7.1.1 分析主入口函数

7.1.2 打开Binder设备文件

7.1.3 注册处理

7.1.4 创建Binder实体对象

7.1.5 尽职的循环

7.1.6 将信息注册到ServiceManager

7.1.7 分析MediaPlayerService和Client

7.2 获得Service Manager接口

7.3 分析MessageQueue

7.3.1 创建MessageQueue

7.3.2 提取消息

7.3.3 分析函数nativePollOnce

第8章 init进程和Zygote进程

8.1 分析init进程

8.1.1 分析入口函数

8.1.2 分析配置文件

8.1.3 分析Service

8.1.4 解析on字段的内容

8.1.5 init控制Service

8.1.6 控制属性服务

8.2 分析Zygote(孕育)进程

8.2.1 Zygote基础

8.2.2 分析Zygote的启动过程

第9章 System进程和应用程序进程

9.1 分析System进程

9.1.1 启动System进程前的准备工作

9.1.2 分析SystemServer

9.1.3 分析EntropyService

9.1.4 分析DropBoxManagerService

9.1.5 分析DiskStatsService

9.1.6 分析DeviceStorageManagerService(监测系统内存存储空间的状态)

9.1.7 分析SamplingProfilerService

9.2 分析应用程序进程

9.2.1 创建应用程序

9.2.2 启动线程池

9.2.3 创建信息循环

第10章 分析Activity组件

10.1 Activity基础

10.1.1 Activity状态

10.1.2 剖析Activity中的主要函数

10.2 分析Activity的启动源代码

10.2.1 Launcher启动应用程序

10.2.2 返回ActivityManagerService的远程接口

10.2.3 解析intent的内容

10.2.4 分析检查机制

10.2.5 执行Activity组件的操作

10.2.6 将Launcher推入Paused状态

10.2.7 处理消息

10.2.8 暂停完毕

10.2.9 建立双向连接

10.2.10 启动新的Activity

10.2.11 通知机制

10.2.12 发送消息

第11章 应用程序管理服务——PackageManagerService分析

11.1 PackageManagerService概述

11.2 系统进程启动

11.3 开始运行

11.4 扫描APK文件

11.5 解析并安装文件

11.6 启动系统默认Home应用程序Launcher

11.6.1 设置系统进程

11.6.2 启动Home应用程序

11.6.3 启动com.android.launcher2.Launcher

11.6.4 加载应用程序

11.6.5 获得Activity

第12章 Content Provider存储机制

12.1 Content Provider基础

12.1.1 ContentProvider在应用程序中的架构

12.1.2 ContentProvider的常用接口

12.2 启动Content Provider

12.2.1 获得对象接口

12.2.2 存在校验

12.2.3 启动Android应用程序

12.2.4 根据进程启动Content Provider

12.2.5 处理消息

12.2.6 具体启动

12.3 Content Provider数据共享

12.3.1 获取接口

12.3.2 创建CursorWindow对象

12.3.3 数据传递

12.3.4 处理进程通信的请求

12.3.5 数据操作

第13章 分析广播机制源代码

13.1 Broadcast基础

13.2 发送广播信息

13.2.1 intent描述指示

13.2.2 传递广播信息

13.2.3 封装传递

13.2.4 处理发送请求

13.2.5 查找广播接收者

13.2.6 处理广播信息

13.2.7 检查权限

13.2.8 处理的进程通信请求

13.3 分析BroadCastReceiver

13.3.1 MainActivity的调用

13.3.2 注册广播接收者

13.3.3 获取接口对象

13.3.4 处理进程间的通信请求

第14章 分析电源管理系统

14.1 Power Management架构基础

14.2 分析Framework层

14.2.1 文件PowerManager.java

14.2.2 提供PowerManager功能

14.3 JNI层架构分析

14.3.1 定义了两层之间的接口函数

14.3.2 与Linux Kernel层进行交互

14.4 Kernel(内核)层架构分析

14.4.1 文件power.c

14.4.2 文件earlysuspend.c

14.4.3 文件wakelock.c

14.4.4 文件resume.c

14.4.5 文件suspend.c

14.4.6 文件main.c

14.4.7 proc文件

14.5 wakelock和early_suspend

14.5.1 wakelock的原理

14.5.2 early_suspend的原理

14.5.3 Android休眠

14.5.4 Android唤醒

14.6 Battery电池系统架构和管理

14.6.1 实现驱动程序

14.6.2 实现JNI本地代码

14.6.3 Java层代码

14.6.4 实现Uevent部分

14.7 JobScheduler节能调度机制

14.7.1 JobScheduler机制的推出背景

14.7.2 JobScheduler的实现

14.7.3 实现操作调度

14.7.4 封装调度任务

第15章 分析WindowManagerService系统

15.1 WindowManagerService基础

15.2 计算Activity窗口的大小

15.2.1 实现View遍历

15.2.2 函数relayoutWindow

15.2.3 函数relayoutWindow

15.2.4 拦截消息的处理类

15.2.5 判断是否计算过

第16章 分析电话系统

16.1 Android电话系统详解

16.1.1 电话系统简介

16.1.2 电话系统结构

16.1.3 驱动程序介绍

16.1.4 RIL接口

16.1.5 分析电话系统的实现流程

16.2 电话系统中的音频模块

16.2.1 音频系统结构

16.2.2 分析音频系统的层次

16.3 分析拨号流程

16.3.1 拨号界面

16.3.2 实现Phone应用

16.3.3 Call通话控制

16.3.4 静态方法调用

16.3.5 通话管理

16.3.6 dial拨号

16.3.7 状态跟踪

16.3.8 RIL消息“出/入”口

16.3.9 显示通话主界面

第17章 分析短信系统

17.1 短信系统的主界面

17.2 发送普通短信

17.3 发送彩信

17.4 接收短信

17.4.1 Java应用层的接收流程

17.4.2 Framework层的处理过程

第18章 Sensor传感器系统详解

18.1 Android传感器系统概述

18.2 Java层详解

18.3 Frameworks层详解

18.3.1 监听传感器的变化

18.3.2 注册监听

18.4 JNI层详解

18.4.1 实现Native(本地)函数

18.4.2 处理客户端数据

18.4.3 处理服务端数据

18.4.4 封装HAL层的代码

18.4.5 处理消息队列

18.5 HAL层详解

第19章 分析SEAndroid系统

19.1 SEAndroid概述

19.1.1 内核空间

19.1.2 用户空间

19.2 文件安全上下文

19.2.1 设置打包在ROM里面的文件的安全上下文

19.2.2 设置虚拟文件系统的安全上下文

19.2.3 设置应用程序数据文件的安全上下文

19.3 进程安全上下文

19.3.1 为独立进程静态地设置安全上下文

19.3.2 为应用程序进程设置安全上下文

第20章 分析ART系统

20.1 对比Dalvik VM和ART

20.2 启动ART

20.2.1 运行app_process进程

20.2.2 准备启动

20.2.3 创建运行实例

20.2.4 注册本地JNI函数

20.2.5 启动守护进程

20.2.6 解析参数

20.2.7 初始化类、方法和域

20.3 分析主函数main

20.4 查找目标类

20.4.1 函数LookupClass()

20.4.2 函数DefineClass()

20.4.3 函数InsertClass()

20.4.4 函数LinkClass()

20.5 类操作

20.6 实现托管操作

20.7 加载OAT文件

20.7.1 产生OAT

20.7.2 创建ART虚拟机

20.7.3 解析启动参数并创建堆

20.7.4 生成指定目录文件

20.7.5 加载OAT文件

20.7.6 解析字段

累计评论(3条) 2个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部