在线客服
深入理解Android内核设计思想(第2版)(上下)图书
人气:24

深入理解Android内核设计思想(第2版)(上下)

【好评返5元店铺礼券】国内博学一线开发工程师撰写、上万名读者实践过的、一本读得懂、用得上,帮助解决工程项目难点的全新指南

内容简介

全书从操作系统的基础知识入手,剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统、虚拟机等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者"知其然,更知其所以然"。本书分为编译篇、系统原理篇、应用原理篇、系统工具篇,共4篇25章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源码分析外为读者提供更易于理解的思维方式。

本书既适合Android系统工程师,也适合于应用开发工程师来阅读,从而提升Android开发能力。读者可以在本书潜移默化的学习过程中更深刻地理解Android系统,并将所学知识自然地应用到实际开发难题的解决中。

编辑推荐

基于Android SDK zui新版本

剖析了进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心知识在Android中的实现原理 Android安全机制 虚拟 内存优化 性能优化

通过大量图片与实例来引导读者学习,以求尽量在源码分析外,为读者提供更易于理解的思维路径

由浅入深,由总体框架再到细节实现,让读者尽快了解Android内核的设计思想

作者简介

林学森,作者曾于多家跨国企业担任研发和管理工作,并已在国内外会议、杂志上发表多篇一作文章,获得多个发明专利。现为某世界500强科技公司高级专家、博学架构师,在业界也比较有影响力。

目录

目 录

第1篇 Android编译篇

第1章 Android系统简介 2

1.1 Android系统发展历程 2

1.2 Android系统特点 4

1.3 Android系统框架 8

第2章 Android源码下载及编译 11

2.1 Android源码下载指南 11

2.1.1 基于Repo和Git的

版本管理 11

2.1.2 Android源码下载流程 12

2.2 原生Android系统编译指南 16

2.2.1 建立编译环境 16

2.2.2 编译流程 19

2.3 定制产品的编译与烧录 22

2.3.1 定制新产品 22

2.3.2 Linux内核编译 26

2.3.3 烧录/升级系统 27

2.4 Android Multilib Build 28

2.5 Android系统映像文件 31

2.5.1 boot.img 32

2.5.2 ramdisk.img 34

2.5.3 system.img 35

2.5.4 Verified Boot 35

2.6 ODEX流程 37

2.7 OTA系统升级 39

2.7.1 生成升级包 39

2.7.2 获取升级包 40

2.7.3 OTA升级—Recovery

模式 41

2.8 Android反编译 44

2.9 NDK Build 46

2.10 第三方ROM的移植 48

第3章 Android编译系统 50

3.1 Makefile入门 50

3.2 Android编译系统 52

3.2.1 Makefile依赖树的概念 53

3.2.2 Android编译系统抽象

模型 53

3.2.3 树根节点droid 54

3.2.4 main.mk解析 55

3.2.5 droidcore节点 59

3.2.6 dist_files 61

3.2.7 Android.mk的编写规则 61

3.3 Jack Toolchain 64

3.4 SDK的编译过程 68

3.4.1 envsetup.sh 68

3.4.2 lunch sdk-eng 70

3.4.3 make sdk 75

3.5 Android系统GDB调试 85

第2篇 Android原理篇

第4章 操作系统基础 90

4.1 计算机体系结构

(Computer Architecture) 90

4.1.1 冯 诺依曼结构 90

4.1.2 哈佛结构 90

4.2 什么是操作系统 91

4.3 进程间通信的经典实现 93

4.3.1 共享内存

(Shared Memory) 94

4.3.2 管道(Pipe) 95

4.3.3 UNIX Domain Socket 97

4.3.4 RPC(Remote Procedure Calls) 99

4.4 同步机制的经典实现 100

4.4.1 信号量(Semaphore) 100

4.4.2 Mutex 101

4.4.3 管程(Monitor) 101

4.4.4 Linux Futex 102

4.4.5 同步范例 103

4.5 Android中的同步机制 104

4.5.1 进程间同步——Mutex 104

4.5.2 条件判断——Condition 105

4.5.3 "栅栏、障碍"

——Barrier 107

4.5.4 加解锁的自动化操作

——Autolock 108

4.5.5 读写锁——Reader

WriterMutex 109

4.6 操作系统内存管理基础 110

4.6.1 虚拟内存

(Virtual Memory) 110

4.6.2 内存保护

(Memory Protection) 113

4.6.3 内存分配与回收 113

4.6.4 进程间通信——mmap 114

4.6.5 写时拷贝技术

(Copy on Write) 115

4.7 Android中的Low

Memory Killer 115

4.8 Android匿名共享内存

(Anonymous Shared Memory) 118

4.8.1 Ashmem设备 118

4.8.2 Ashmem应用实例 122

4.9 JNI 127

4.9.1 Java函数的本地实现 127

4.9.2 本地代码访问JVM 130

4.10 Java中的反射机制 132

4.11 学习Android系统的两条线索 133

第5章 Android进程/线程和

程序内存优化 134

5.1 Android进程和线程 134

5.2 Handler, MessageQueue,

Runnable与Looper 140

5.3 UI主线程——ActivityThread 147

5.4 Thread类 150

5.4.1 Thread类的内部原理 150

5.4.2 Thread休眠和唤醒 151

5.4.3 Thread实例 155

5.5 Android应用程序如何利用

CPU的多核处理能力 157

5.6 Android应用程序的典型启

动流程 157

5.7 Android程序的内存管理与优化 159

5.7.1 Android系统对内存使用

的限制 159

5.7.2 Android中的内存泄露与

内存监测 160

第6章 进程间通信 — Binder 166

6.1 智能指针 169

6.1.1 智能指针的设计理念 169

6.1.2 强指针sp 172

6.1.3 弱指针wp 173

6.2 进程间的数据传递载体

——Parcel 179

6.3 Binder驱动与协议 187

6.3.1 打开Binder驱动

——binder_open 188

6.3.2 binder_mmap 189

6.3.3 binder_ioctl 192

6.4 "DNS"服务器——Service

Manager(Binder Server) 193

6.4.1 ServiceManager的启动 193

6.4.2 ServiceManager的构建 194

6.4.3 获取ServiceManager服

务—设计思考 199

6.4.4 ServiceManagerProxy 203

6.4.5 IBinder和BpBinder 205

6.4.6 ProcessState和IPCThreadState 207

6.5 Binder客户端——Binder Client 237

6.6 Android接口描述语言——AIDL 242

6.7 匿名Binder Server 254

第7章 Android启动过程 257

7.1 及时个系统进程(init) 257

7.1.1 init.rc语法 257

7.1.2 init.rc实例分析 260

7.2 系统关键服务的启动简析 261

7.2.1 Android的"DNS服务器"

——ServiceManager 261

7.2.2 "孕育"新的线程和进程

——Zygote 261

7.2.3 Android的"系统服务"

——SystemServer 274

7.2.4 Vold和External Storage

存储设备 276

7.3 多用户管理 282

第8章 管理Activity和组件运行状

态的系统进程——Activity ManagerService(AMS) 284

8.1 AMS功能概述 284

8.2 管理当前系统中Activity

状态——Activity Stack 286

8.3 startActivity流程 288

8.4 完成同一任务的"集合"——Activity Task 296

8.4.1 "后进先出"——Last In,First Out 297

8.4.2 管理Activity Task 298

8.5 Instrumentation机制 300

第9章 GUI系统 — SurfaceFlinger 305

9.1 OpenGL ES与EGL 305

9.2 Android的硬件接口——HAL 307

9.3 Android终端显示设备的"化身"

——Gralloc与Framebuffer 309

9.4 Android中的本地窗口 313

9.4.1 FramebufferNativeWindow 315

9.4.2 应用程序端的本地窗口——Surface 321

9.5 BufferQueue详解 325

9.5.1 BufferQueue的内部原理 325

9.5.2 BufferQueue中的缓冲区

分配 328

9.5.3 应用程序的典型绘图

流程 333

9.5.4 应用程序与BufferQueue

的关系 339

9.6 SurfaceFlinger 343

9.6.1 "黄油计划"——Project Butter 343

9.6.2 SurfaceFlinger的启动 347

9.6.3 接口的服务端——Client 351

9.7 VSync的产生和处理 355

9.7.1 VSync信号的产生和

分发 355

9.7.2 VSync信号的处理 361

9.7.3 handleMessageTransaction 363

9.7.4 "界面已经过时/无效,需要重

新绘制"——handleMessage Invalidate 367

9.7.5 合成前的准备工作

——preComposition 369

9.7.6 可见区域

——rebuildLayerStacks 371

9.7.7 为"Composition"搭建环境

——setUpHWComposer 375

9.7.8 doDebugFlashRegions 377

9.7.9 doComposition 377

第10章 GUI系统之"窗口管理员"

—WMS 385

10.1 "窗口管理员"——WMS综述 386

10.1.1 WMS的启动 388

10.1.2 WMS的基础功能 388

10.1.3 WMS的工作方式 389

10.1.4 WMS,AMS与Activity

间的联系 390

10.2 窗口属性 392

10.2.1 窗口类型与层级 392

10.2.2 窗口策略

(Window Policy) 396

10.2.3 窗口属性

(LayoutParams) 398

10.3 窗口的添加过程 400

10.3.1 系统窗口的添加过程 400

10.3.2 Activity窗口的添加

过程 409

10.3.3 窗口添加实例 412

10.4 Surface管理 416

网友评论(不代表本站观点)

免责声明

更多相关图书