图书介绍

Android源码分析实录2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Android源码分析实录
  • 李忠良编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302393290
  • 出版时间:2015
  • 标注页数:730页
  • 文件大小:95MB
  • 文件页数:741页
  • 主题词:移动终端-应用程序-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Android源码分析实录PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 走进Android世界1

1.1 Android系统的优势2

1.1.1 开源2

1.1.2 强大的开发团队的支持2

1.1.3 开发人员的支持2

1.2 Android系统架构介绍3

1.2.1 底层操作系统层(Linux内核层)4

1.2.2 库(Libraries)和运行环境(Runtime)4

1.2.3 应用程序框架(Application Framework)5

1.2.4 顶层应用程序(Application)5

1.3 核心组件5

1.3.1 Activity的界面表现5

1.3.2 Intent和IntentFilters界面切换6

1.3.3 Service服务6

1.3.4 用Broadcast IntentReceiver广播7

1.3.5 用Content Provider存储7

1.4 进程和线程7

1.4.1 什么是进程7

1.4.2 什么是线程8

1.5 获取Android 4.3 源码8

1.5.1 在Linux系统中获取Android源码8

1.5.2 在Windows平台上获取Android源码9

1.6 Android源码结构分析14

1.6.1 Android源码的目录结构15

1.6.2 应用程序16

1.6.3 应用程序框架18

1.6.4 系统服务19

1.6.5 系统程序库21

1.6.6 系统运行库24

1.6.7 硬件抽象层25

1.7 编译Android源码26

1.7.1 搭建编译环境27

1.7.2 开始编译27

1.7.3 在模拟器中运行29

1.7.4 编译源码生成SDK30

第2章 硬件抽象层详解35

2.1 什么是HAL层36

2.1.1 为什么把对硬件的支持划分为两层来实现36

2.1.2 HAL层的位置结构36

2.2 分析HAL Module架构38

2.2.1 hw_module_t39

2.2.2 hw_module_methods_t40

2.2.3 hw_device_t40

2.3 分析文件hardware.c41

2.3.1 函数hw_get_module41

2.3.2 数组variant_keys41

2.3.3 载入相应的库42

2.3.4 打开相应库并获得hw_module_t结构体43

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

2.5 分析硬件访问服务48

2.5.1 定义硬件访问服务接口48

2.5.2 实现硬件访问服务49

2.6 分析mokoid工程50

2.6.1 直接调用Service方法实现51

2.6.2 通过Manager调用Service实现56

2.7 分析HAL层的具体实现(以Sensor系统为例)59

2.7.1 传感器系统的基础知识59

2.7.2 HAL层的Sensor代码60

2.7.3 Sensor编程的流程61

第3章 分析JNI(Java本地接口)层63

3.1 JNI基础64

3.1.1 JNI的层次结构64

3.1.2 JNI的本质64

3.1.3 与JNI相关的文件65

3.2 分析Java层66

3.2.1 加载JNI库66

3.2.2 实现扫描工作68

3.2.3 读取并保存信息69

3.2.4 删除不是SD卡中的文件信息72

3.2.5 直接转向JNI72

3.2.6 扫描函数scanFile73

3.2.7 异常处理73

3.3 分析MediaScanner的JNI层74

3.3.1 将Native对象的指针保存到Java对象75

3.3.2 创建Native层的MediaScanner对象75

3.4 分析MediaScanner的Native层76

3.4.1 注册JNI函数76

3.4.2 完成注册工作78

3.4.3 动态注册80

3.4.4 处理路径参数82

3.4.5 扫描文件83

3.4.6 添加TAG信息83

3.4.7 JNIEnv接口85

3.4.8 JNI中的环境变量86

3.5 JNI实例分析(基于Camera系统)87

3.5.1 Java层预览接口87

3.5.2 注册预览的JNI函数89

3.5.3 C/C++层的预览函数92

第4章 Android内存系统分析95

4.1 Android的进程通信机制96

4.1.1 Android的进程间通信(IPC)机制Binder96

4.1.2 Service Manager是Binder机制的上下文管理者97

4.2 分析Ashmem驱动程序98

4.2.1 基础数据结构98

4.2.2 初始化处理99

4.2.3 打开匿名共享内存设备文件101

4.2.4 内存映射104

4.2.5 读写操作105

4.2.6 锁定和解锁107

4.2.7 回收内存块113

4.3 分析C++访问接口层115

4.3.1 接口MemoryHeapBase115

4.3.2 接口MemoryBase125

4.4 分析Java访问接口层128

4.5 内存优化机制132

4.5.1 sp和wp简析132

4.5.2 详解智能指针134

4.5.3 轻量级指针136

4.5.4 强指针139

4.5.5 弱指针153

第5章 Android虚拟机系统详解159

5.1 Android虚拟机基础160

5.1.1 Android虚拟机源码目录160

5.1.2 Dalvik的架构161

5.1.3 Dalvik虚拟机的主要特征163

5.1.4 Dalvik的进程管理163

5.1.5 Android的初始化流程163

5.2 分析Dalvik的运作流程164

5.2.1 Dalvik虚拟机相关的可执行程序164

5.2.2 初始化Dalvik虚拟机167

5.2.3 启动Zygote186

5.2.4 启动SystemServer进程190

5.2.5 加载class类文件193

5.3 Dalvik VM的内存系统197

5.3.1 如何分配内存197

5.3.2 分析内存管理机制的源码199

5.4 分析Dalvik VM的启动过程211

5.4.1 创建一个Dalvik VM实例211

5.4.2 指定控制选项212

5.4.3 创建并初始化Dalvik VM实例220

5.4.4 创建JNIEnvExt对象223

5.4.5 设置当前进程229

5.4.6 注册Android核心类的JNI方法229

5.4.7 使用线程创建javaCreateThreadEtc钩子233

5.5 创建Dalvik VM进程233

5.5.1 分析底层启动过程234

5.5.2 创建Dalvik VM进程234

5.5.3 初始化运行的Dalvik VM238

第6章 IPC通信机制详解241

6.1 Binder机制概述242

6.2 分析Binder驱动程序243

6.2.1 分析数据结构243

6.2.2 分析设备初始化255

6.2.3 打开Binder设备文件257

6.2.4 内存映射258

6.2.5 释放物理页面264

6.2.6 分配内核缓冲区264

6.2.7 释放内核缓冲区267

6.2.8 查询内核缓冲区269

6.3 Binder封装库270

6.3.1 Binder库的实现层次270

6.3.2 类BBinder271

6.3.3 类BpRefBase274

6.3.4 类IPCThreadState275

6.4 初始化Java层Binder框架279

第7章 Zygote进程、System进程和应用程序进程283

7.1 Zygote(孕育)进程详解284

7.1.1 Zygote基础284

7.1.2 分析Zygote的启动过程285

7.2 System进程详解303

7.2.1 启动System进程前的准备工作303

7.2.2 分析SystemServer304

7.2.3 分析EntropyService308

7.2.4 分析DropBoxManagerService310

7.2.5 分析DiskStatsService318

7.2.6 分析DeviceStorageManager-Service323

7.2.7 分析SamplingProfilerService326

7.3 应用程序进程详解336

7.3.1 创建应用程序336

7.3.2 启动线程池347

7.3.3 创建信息循环348

第8章 分析Activity组件351

8.1 Activity基础352

8.1.1 Activity的状态352

8.1.2 Activity的主要函数353

8.2 启动Activity355

8.2.1 Launcher启动应用程序356

8.2.2 返回ActivityManagerService的远程接口358

8.2.3 解析intent的内容359

8.2.4 分析检查机制363

8.2.5 执行Activity组件的操作378

8.2.6 将Launcher推入Paused状态386

8.2.7 处理消息388

8.2.8 报告暂停389

8.2.9 建立双向连接394

8.2.10 启动新的Activity400

8.2.11 发送通知信息403

第9章 Content Provider数据存储405

9.1 Content Provider基础406

9.1.1 Content Provider在应用程序中的架构406

9.1.2 Content Provider的常用接口407

9.2 启动Content Provider408

9.2.1 获得对象接口408

9.2.2 存在校验410

9.2.3 启动Android应用程序416

9.2.4 根据进程启动Content Provider416

9.2.5 处理消息422

9.2.6 具体启动423

9.3 Content Provider数据共享427

9.3.1 获取接口427

9.3.2 创建CursorWindow对象430

9.3.3 数据传递433

9.3.4 处理进程通信的请求436

9.3.5 数据操作442

第10章 Broadcast(广播)系统详解447

10.1 Broadcast基础448

10.2 发送广播信息448

10.2.1 intent描述指示449

10.2.2 传递广播信息449

10.2.3 封装传递450

10.2.4 处理发送请求451

10.2.5 查找广播接收者451

10.2.6 处理广播信息455

10.2.7 检查权限464

10.2.8 处理的进程通信请求466

10.3 分析BroadcastReceiver469

10.3.1 MainActivity的调用470

10.3.2 注册广播接收者470

10.3.3 获取接口对象471

10.3.4 处理进程间的通信请求474

第11章 多媒体系统详解479

11.1 Android多媒体系统介绍480

11.2 OpenMAX框架详解481

11.2.1 分析OpenMAX框架构成482

11.2.2 实现OpenMAX IL层接口486

11.3 分析OpenCore框架495

11.3.1 OpenCore的层次结构495

11.3.2 OpenCore的代码结构496

11.3.3 OpenCore的编译结构497

11.3.4 操作系统兼容库501

11.3.5 实现OpenCore中的OpenMAX部分503

11.3.6 OpenCore扩展详解517

11.4 Stagefright框架详解523

11.4.1 Stagefright代码结构523

11.4.2 Stagefright实现OpenMAX接口524

11.4.3 分析VideoBuffer的传输流程528

第12章 电源管理系统详解533

12.1 Android Power Management基础534

12.2 分析Framework层535

12.2.1 文件PowerManager.java535

12.2.2 文件PowerManagerService.java536

12.3 分析JNI层560

12.3.1 文件android_os_Power.cpp560

12.3.2 文件power.c561

12.4 分析Kemel(内核)层562

12.4.1 文件power.c562

12.4.2 文件earlysuspend.c565

12.4.3 文件wakelock.c566

12.4.4 文件resume.c568

12.4.5 文件suspend.c568

12.4.6 文件main.c570

12.4.7 proc文件570

12.5 wakelock和early_suspend571

12.5.1 wakelock的原理571

12.5.2 early_suspend的原理572

12.5.3 Android休眠572

12.5.4 Android唤醒575

第13章 输入系统驱动应用577

13.1 输入系统介绍578

13.2 分析Input(输入)系统驱动580

13.2.1 分析头文件580

13.2.2 分析核心文件input.c584

13.2.3 分析event机制600

13.3 分析硬件抽象层603

13.3.1 分析文件KeycodeLabels.h603

13.3.2 分析文件KeyCharacterMap.h608

13.3.3 分析Kl格式的文件609

13.3.4 分析kcm格式文件610

13.3.5 分析文件EventHub.cpp611

13.4 分析驱动的具体实现615

13.4.1 分析内置模拟器中的输入驱动实现615

13.4.2 MSM高通处理器中的输入驱动实现616

13.4.3 OMAP高通处理器中的输入驱动实现625

第14章 蓝牙系统详解627

14.1 Android系统中的蓝牙模块628

14.2 分析蓝牙模块的源码630

14.2.1 初始化蓝牙芯片630

14.2.2 蓝牙服务630

14.2.3 管理蓝牙电源631

14.3 与蓝牙相关的类632

14.3.1 BluetoothSocket类632

14.3.2 BluetoothServerSocket类633

14.3.3 BluetoothAdapter类634

14.3.4 BluetoothClass.Service类641

14.3.5 BluetoothClass.Device类641

14.4 低功耗蓝牙协议栈详解642

14.4.1 低功耗蓝牙协议栈基础642

14.4.2 低功耗蓝牙API详解643

14.5 Android中的BlueDroid644

14.5.1 Android系统中BlueDroid的架构644

14.5.2 Application Framework层分析645

14.5.3 分析Bluetooth System Service层653

14.5.4 分析JNI层654

14.5.5 分析HAL层659

14.6 Android蓝牙模块的运作流程659

14.6.1 打开蓝牙设备659

14.6.2 搜索蓝牙665

14.6.3 传输OPP文件671

第15章 网络系统详解679

15.1 使用WebKit浏览网页680

15.1.1 WebKit的Java层框架681

15.1.2 C/C++层框架685

15.1.3 分析WebKit的操作过程688

15.1.4 WebView详解692

15.1.5 WebViewCore详解693

15.2 Wi-Fi系统应用700

15.2.1 Wi-Fi概述700

15.2.2 Wi-Fi系统的层次结构701

15.2.3 与Linux的差异703

15.2.4 分析本地部分的源码703

15.2.5 分析JNI部分的源码706

15.2.6 分析Java Framework部分的源码708

15.2.7 分析Setting中的设置部分的源码721

热门推荐