当前位置:首页 > 工业技术
深入理解Android系统
深入理解Android系统

深入理解Android系统PDF电子书下载

工业技术

  • 电子书积分:19 积分如何计算积分?
  • 作 者:张元亮编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302404392
  • 页数:697 页
图书介绍:本书基于当前最新的Android 4.4.2系统,从获取源码和源码结构分析讲起,依次讲解了Android平台的源码结构和SDK解析,分析JNI、HAL层、内存系统、IPC通信机制、Binder对象和Java接口、ServiceManager和MessageQueue、init进程、三大进程系统、Dalvik VM、Activity组件、Broadcast(广播)系统、Content Provider等知识。书中几乎涵盖了Android源码中的主要内容,讲解方法通俗易懂、详细。
《深入理解Android系统》目录

第1章 获取并编译Android源码 1

1.1 获取Android源码 1

1.1.1 在Linux系统获取Android源码 1

1.1.2 在Windows平台获取Android源码 3

1.2 分析Android源码结构 6

1.2.1 总体结构 6

1.2.2 应用程序部分 7

1.2.3 应用程序框架部分 9

1.2.4 系统服务部分 10

1.2.5 系统程序库部分 12

1.2.6 系统运行库部分 15

1.2.7 硬件抽象层部分 16

1.3 分析源码中提供的接口 17

1.3.1 暴露接口和隐藏接口 17

1.3.2 调用隐藏接口 23

1.4 编译源码 26

1.4.1 搭建编译环境 26

1.4.2 在模拟器中运行 29

1.5 编译源码生成SDK 30

第2章 分析JNI 35

2.1 JNI基础 35

2.1.1 JNI的功能结构 35

2.1.2 JNI的调用层次 36

2.1.3 分析JNI的本质 36

2.2 分析MediaScanner 38

2.2.1 分析Java层 38

2.2.2 分析JNI层 45

2.2.3 分析Native(本地)层 46

2.3 分析Camera系统的JNI 54

2.3.1 Java层预览接口 54

2.3.2 注册预览的JNI函数 56

2.3.3 C/C++层的预览函数 59

2.4 Java与JNI基本数据类型转换 60

2.5 JNIEnv接口 61

2.6 开发JNI程序 62

2.6.1 开发JNI程序的步骤 62

2.6.2 开发一个自己的JNI程序 63

第3章 内存系统架构详解 66

3.1 分析Android的进程通信机制 66

3.1.1 IPC机制介绍 66

3.1.2 Service Manager是Binder机制的上下文管理者 67

3.1.3 Service Manager服务 84

3.2 分析匿名共享内存子系统 87

3.2.1 Ashmem系统基础 87

3.2.2 基础数据结构 88

3.2.3 初始化处理 89

3.2.4 打开匿名共享内存设备文件 90

3.2.5 实现内存映射 93

3.2.6 实现读/写操作 94

3.2.7 实现锁定和解锁 96

3.2.8 回收内存块 102

3.3 分析C++访问接口层 103

3.3.1 接口MemoryHeapBase 103

3.3.2 接口MemoryBase 112

3.4 分析Java访问接口层 115

第4章 硬件抽象层架构详解 120

4.1 HAL基础 120

4.1.1 推出HAL的背景 120

4.1.2 HAL的基本结构 121

4.2 分析HAL module架构 123

4.2.1 hw_module_t 124

4.2.2 hw_module_methods_t 124

4.2.3 hw_device_t 125

4.3 分析文件hardware.c 126

4.3.1 寻找动态链接库的地址 126

4.3.2 数组variant_keys 126

4.3.3 载入相应的库 127

4.3.4 获得hw_module_t结构体 127

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

4.5 分析硬件访问服务 132

4.5.1 定义硬件访问服务接口 132

4.5.2 具体实现 133

4.6 分析官方实例 134

4.6.1 获取实例工程源码 135

4.6.2 直接调用service()方法的实现代码 136

4.6.3 通过Manager调用service的实现代码 141

4.7 HAL和系统移植 144

4.7.1 移植各个Android部件的方式 144

4.7.2 设置设备权限 144

4.7.3 init.rc初始化 148

4.7.4 文件系统的属性 148

4.8 开发自己的HAL 150

4.8.1 封装HAL接口 150

4.8.2 开始编译 153

第5章 Binder通信机制详解 155

5.1 分析Binder驱动程序 155

5.1.1 数据结构binder_work 155

5.1.2 结构体binder_node 156

5.1.3 结构体binder_ref 157

5.1.4 通知结构体binder_ref_death 158

5.1.5 结构体binder_buffer 158

5.1.6 结构体binder_proc 159

5.1.7 结构体binder_thread 160

5.1.8 结构体binder_transaction 161

5.1.9 结构体binder_write_read 162

5.1.10 BinderDriverCommandProtocol 162

5.1.11 枚举BinderDriverReturnProtocol 163

5.1.12 结构体binder_ptr_cookie和binder_transaction_data 164

5.1.13 结构体flat_binder_object 164

5.1.14 设备初始化 165

5.1.15 打开Binder设备文件 167

5.1.16 实现内存映射 168

5.1.17 释放物理页面 173

5.1.18 分配内核缓冲区 174

5.1.19 释放内核缓冲区 176

5.1.20 查询内核缓冲区 179

5.2 Binder封装库 179

5.2.1 Binder的3层结构 180

5.2.2 类BBinder 181

5.2.3 类BpRefBase 183

5.2.4 类IPCThreadState 185

5.3 初始化Java层Binder框架 188

5.3.1 搭建交互关系 188

5.3.2 实现Binder类的初始化 188

5.3.3 实现BinderProxy类的初始化 190

5.4 实体对象binder_node 190

5.4.1 定义实体对象 191

5.4.2 增加引用计数 192

5.4.3 减少引用计数 193

5.5 本地对象BBinder 194

5.5.1 引用了运行的本地对象 195

5.5.2 处理接口协议 201

5.6 引用对象binder_ref 205

5.7 代理对象BpBinder 208

5.7.1 创建Binder代理对象 208

5.7.2 销毁Binder代理对象 209

第6章 init启动进程详解 213

6.1 什么是init进程 213

6.2 入口函数 214

6.3 init配置文件 217

6.3.1 init.rc基础 217

6.3.2 init.rc解析 219

6.4 解析Service 223

6.4.1 Zygote对应的service action 224

6.4.2 init组织Service 224

6.4.3 解析Service用到的函数 226

6.5 解析on 230

6.5.1 Zygote对应的on action 230

6.5.2 结构体action 232

6.5.3 解析on字段所在的option 232

6.6 init控制Service 233

6.6.1 启动Zygote 233

6.6.2 启动Service 234

6.6.3 总结4种启动Service的方式 238

6.7 启动属性服务 243

6.7.1 引入属性 243

6.7.2 设置内核变量 245

6.7.3 初始化属性服务 246

6.7.4 实现具体启动工作 247

6.7.5 获取属性值 249

6.7.6 处理请求 251

第7章 Zygote进程详解 253

7.1 Zygote基础 253

7.2 启动Zygote 254

7.2.1 init.c启动脚本 254

7.2.2 创建一个Socket 258

7.2.3 入口函数main() 260

7.2.4 启动函数创建一个虚拟机实例 262

7.2.5 和Zygote进程中的Socket实现连接 264

第8章 System进程详解 271

8.1 启动前的准备 271

8.1.1 获取创建的Socket 271

8.1.2 启动System进程 272

8.2 分析SystemServer 272

8.2.1 分析主函数main() 272

8.2.2 分析函数init2() 275

8.3 第一个启动的ServiceEntropyService 275

8.3.1 将内容写到urandom设备 276

8.3.2 将和设备相关的信息写到urandom设备 277

8.3.3 读取urandom设备的内容 277

8.3.4 发送ENTROPY_WHAT 278

8.4 生成并管理日志文件 278

8.4.1 分析DBMS构造函数 278

8.4.2 添加dropbox日志文件 280

8.4.3 DBMS和settings数据库 284

8.5 分析DiskStatsService 285

8.6 监测系统内部存储空间的状态 289

8.6.1 构造函数 289

8.6.2 内存检查 290

8.7 分析实现性能统计 292

8.7.1 构造函数 292

8.7.2 进行性能统计 293

8.7.3 输出统计文件 295

8.8 剪贴板服务 302

8.8.1 复制数据到剪贴板 302

8.8.2 从剪贴板粘贴数据 304

8.8.3 管理CBS中的权限 306

第9章 应用程序进程详解 309

9.1 创建应用程序 309

9.1.1 发送创建请求 309

9.1.2 保存启动参数 312

9.1.3 创建指定的应用程序 314

9.1.4 创建本地对象LocalSocket 315

9.1.5 接收创建新应用程序的请求 316

9.2 启动线程池 320

9.3 创建信息循环 322

第10章 ART机制架构详解 324

10.1 分析ART的启动过程 324

10.1.1 运行app_process进程 325

10.1.2 准备启动 329

10.1.3 创建运行实例 336

10.1.4 注册本地JNI函数 338

10.1.5 启动守护进程 339

10.1.6 解析参数 340

10.1.7 初始化类、方法和域 350

10.2 进入main()主函数 357

10.3 查找目标类 358

10.3.1 函数LookupClass() 359

10.3.2 函数DefineClass() 361

10.3.3 函数InsertClass() 365

10.3.4 函数LinkClass() 366

10.4 类操作 368

10.5 实现托管操作 370

第11章 Sensor传感器系统架构详解 376

11.1 Android传感器系统概述 376

11.2 Java层详解 377

11.3 Frameworks层详解 383

11.3.1 监听传感器的变化 383

11.3.2 注册监听 384

11.4 JNI层详解 396

11.4.1 实现Native(本地)函数 396

11.4.2 处理客户端数据 401

11.4.3 处理服务端数据 403

11.4.4 封装HAL层的代码 417

11.4.5 处理消息队列 422

11.5 HAL层详解 425

第12章 蓝牙系统架构详解 435

12.1 短距离无线通信技术概览 435

12.1.1 ZigBee——低功耗、自组网 435

12.1.2 Wi-Fi——大带宽支持家庭互联 435

12.1.3 蓝牙——4.0进入低功耗时代 436

12.1.4 NFC——必将逐渐远离历史舞台 436

12.2 蓝牙技术基础 437

12.2.1 蓝牙技术的发展历程 437

12.2.2 低功耗蓝牙的特点 437

12.2.3 低功耗蓝牙的架构 438

12.2.4 低功耗蓝牙分类 439

12.2.5 集成方式 439

12.2.6 BLE和传统蓝牙BR/EDR技术的对比 440

12.3 蓝牙规范详解 440

12.3.1 Bluetooth系统中的常用规范 441

12.3.2 蓝牙协议体系结构 441

12.3.3 低功耗(BLE)蓝牙协议 443

12.3.4 现有的基于GATT的协议/服务 443

12.3.5 双模协议栈 444

12.3.6 单模协议栈 445

12.4 低功耗蓝牙协议栈详解 445

12.4.1 低功耗蓝牙协议栈基础 445

12.4.2 蓝牙协议体系中的协议 446

12.5 TI公司的低功耗蓝牙 448

12.5.1 获取TI公司的低功耗蓝牙协议栈 448

12.5.2 分析TI公司的低功耗蓝牙协议栈 450

12.6 分析Android系统中的蓝牙模块 456

12.7 分析蓝牙模块的源码 458

12.7.1 初始化蓝牙芯片 458

12.7.2 蓝牙服务 458

12.7.3 管理蓝牙电源 459

12.8 Android系统的低功耗蓝牙协议栈 459

12.8.1 Android低功耗蓝牙协议栈基础 460

12.8.2 低功耗蓝牙API详解 460

第13章 Android多媒体框架架构详解 498

13.1 Android多媒体系统介绍 498

13.2 OpenMax框架详解 499

13.2.1 分析OpenMax框架构成 500

13.2.2 实现OpenMaxIL层接口 504

13.3 OpenCore框架详解 512

13.3.1 OpenCore层次结构 512

13.3.2 OpenCore代码结构 513

13.3.3 OpenCore编译结构 514

13.3.4 操作系统兼容库 518

13.3.5 实现OpenCore中的OpenMax部分 520

13.4 StageFright框架详解 532

13.4.1 StageFright代码结构 533

13.4.2 StageFright实现OpenMax接口 533

13.4.3 分析Video Buffer传输流程 537

第14章 音频系统框架架构详解 554

14.1 硬件架构的发展趋势 554

14.1.1 原始架构模式 554

14.1.2 移动处理器的解决方案 554

14.1.3 升级版高通骁龙801 555

14.2 音频系统基础 557

14.3 音频系统的层次 559

14.3.1 层次说明 559

14.3.2 Media库中的Audio框架 559

14.3.3 本地代码 562

14.3.4 分析JNI代码 564

14.3.5 分析Java层代码 565

14.4 Audio系统的硬件抽象层 567

14.4.1 Audio硬件抽象层基础 568

14.4.2 AudioFlinger中的Audio硬件抽象层的实现 569

14.4.3 真正实现Audio硬件抽象层 575

14.5 Kernel Driver实现 575

14.6 实现编/解码过程 582

14.6.1 AMR编码 583

14.6.2 AMR解码 587

14.6.3 解码MP3 591

第15章 视频系统架构详解 594

15.1 视频输出系统 594

15.1.1 基本层次结构 594

15.1.2 硬件抽象层架构 595

15.2 MediaPlayer架构详解 602

15.2.1 MediaPlayer架构图解 602

15.2.2 MediaPlayer的接口与架构 603

15.2.3 分析Java部分 610

15.2.4 分析JNI部分 614

15.2.5 核心库libmedia.so 618

15.2.6 服务库libmediaservice.so 621

15.2.7 OpenCorePlayer实现libopencoreplayer.so 622

15.2.8 对MediaPlayer的总结 622

15.3 VideoView详解 628

15.3.1 构造函数 628

15.3.2 公共方法 629

第16章 WebKit系统架构详解 635

16.1 WebKit系统目录 635

16.2 Java层的基本框架 636

16.3 Java层的主要类 637

16.3.1 WebView简介 637

16.3.2 WebViewDatabase 638

16.3.3 WebViewCore 638

16.3.4 CallbackProxy 638

16.3.5 BrowserFrame 639

16.3.6 JWebCoreJavaBridge 639

16.3.7 DownloadManagerCore 639

16.3.8 其他类 639

16.4 数据载入器架构 639

16.5 Java层对应的C/C++类库 640

16.6 分析WebKit的操作过程 642

16.6.1 WebKit初始化 642

16.6.2 载入数据 644

16.6.3 刷新绘制 644

16.7 WebViewCore详解 645

第17章 Android 5.0中的WebView 652

17.1 WebView架构基础 652

17.2 WebView类简介 654

17.3 WebViewProvider接口 656

17.4 WebViewChromium详解 659

17.5 WebViewChromiumFactoryProvider详解 660

17.6 AwContents架构 663

17.7 实现Mixed Content模式 666

17.8 引入第三方Cookie 667

第18章 Wi-Fi系统架构详解 670

18.1 Wi-Fi系统基础 670

18.2 Wi-Fi本地部分架构 672

18.3 Wi-Fi JNI部分架构 676

18.4 Java FrameWork部分的源码 677

18.4.1 WifiManager详解 678

18.4.2 WifiService详解 679

18.4.3 WifiWatchdogService详解 688

18.5 Setting设置架构 689

相关图书
作者其它书籍
返回顶部