• 文章介绍
  • 评价建议
  • 资源名称:深入理解Android5源代码

    内容简介:

    本书共分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应用开发人员学习,也可以作为相关培训学校和大专院校相关专业师生的教学用书。

    资源目录:

    第1章 Android系统介绍 1

    1.1 Android系统成功的秘诀 1

    1.1.1 获取了业界的广泛支持 1

    1.1.2 研发阵容强大 1

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

    1.1.4 开源 2

    1.2 剖析Android系统架构 2

    1.2.1 底层操作系统层(OS) 3

    1.2.2 各种库(Libraries)和Android

    运行环境(RunTime) 3

    1.2.3 Application Framework(应用

    程序框架) 3

    1.2.4 顶层应用程序(Application) 4

    1.3 五大组件 4

    1.3.1 Activity界面 4

    1.3.2 Intent和Intent Filters切换 4

    1.3.3 Service(服务) 5

    1.3.4 Broadcast Receiver发送广播 5

    1.3.5 用Content Provider存储数据 6

    1.4 进程和线程 6

    1.4.1 什么是进程 6

    1.4.2 什么是线程 6

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

    2.1 获取Android源代码 7

    2.1.1 在Linux系统中获取Android

    源代码 7

    2.1.2 在Windows平台获取Android

    源代码 8

    2.2 分析Android源代码结构 10

    2.2.1 总体结构 11

    2.2.2 应用程序部分 12

    2.2.3 应用程序框架部分 13

    2.2.4 系统服务部分 13

    2.2.5 系统程序库部分 15

    2.2.6 硬件抽象层部分 17

    2.3 Android源代码提供的接口 18

    2.3.1 暴露接口和隐藏接口 18

    2.3.2 调用隐藏接口 23

    2.4 编译源代码 25

    2.4.1 搭建编译环境 25

    2.4.2 在模拟器中运行 27

    2.5 编译源代码生成SDK 27

    第3章 分析Java Native Interface

    系统 30

    3.1 JNI基础 30

    3.1.1 JNI的功能结构 30

    3.1.2 JNI的调用层次 30

    3.1.3 分析JNI的本质 31

    3.2 分析MediaScanner 32

    3.2.1 分析Java层 32

    3.2.2 分析JNI层 37

    3.2.3 分析Native(本地)层 38

    3.3 分析Camera系统的JNI 44

    3.3.1 Java层预览接口 45

    3.3.2 注册预览的JNI函数 46

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

    第4章 分析HAL系统 49

    4.1 HAL基础 49

    4.1.1 推出HAL的背景 49

    4.1.2 HAL的基本结构 50

    4.2 分析HAL module架构 51

    4.2.1 hw_module_t 52

    4.2.2 结构hw_module_methods_t

    的定义 52

    4.2.3 hw_device_t结构 53

    4.3 分析文件hardware.c 53

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

    4.3.2 数组variant_keys 54

    4.3.3 载入相应的库 54

    4.3.4 获得hw_module_t结构体 54

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

    4.5 分析硬件访问服务 58

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

    4.5.2 具体实现 59

    4.6 分析Android官方实例 60

    4.6.1 获取实例工程源代码 60

    4.6.2 直接调用Service方法的

    实现代码 61

    4.6.3 通过Manager调用Service

    的实现代码 64

    4.7 HAL和系统移植 66

    4.7.1 移植各个Android部件

    的方式 66

    4.7.2 设置设备权限 67

    4.7.3 init.rc初始化 70

    4.7.4 文件系统的属性 70

    第5章 分析IPC通信机制 72

    5.1 Binder机制概述 72

    5.2 分析Binder驱动程序 73

    5.2.1 分析数据结构 73

    5.2.2 分析设备初始化 82

    5.2.3 打开Binder设备文件 83

    5.2.4 内存映射 85

    5.2.5 释放物理页面 89

    5.2.6 分配内核缓冲区 89

    5.2.7 释放内核缓冲区 91

    5.2.8 查询内核缓冲区 93

    5.3 Binder封装库 93

    5.3.1 类BBinder 94

    5.3.2 类BpRefBase 96

    5.3.3 类IPCThreadState 97

    5.4 初始化Java层Binder框架 99

    5.5 分析MediaServer的通信机制 101

    5.5.1 MediaServer的入口函数 101

    5.5.2 ProcessState 102

    5.5.3 defaultServiceManager 103

    5.5.4 注册MediaPlayerService 108

    5.5.5 分析StartThread Pool和

    join Thread Pool 117

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

    6.1 分析实体对象(binder_node) 119

    6.2 分析本地对象(BBinder) 121

    6.3 分析引用对象(binder_ref) 129

    6.4 分析代理对象(BpBinder) 131

    6.5 分析Java接口 134

    6.5.1 获取Service Manager 134

    6.5.2 分析ActivityManagerService

    的Java层 138

    第7章 分析ServiceManager和

    MessageQueue 151

    7.1 分析ServiceManager 151

    7.1.1 分析主入口函数 151

    7.1.2 打开Binder设备文件 152

    7.1.3 注册处理 154

    7.1.4 创建Binder实体对象 156

    7.1.5 尽职的循环 157

    7.1.6 将信息注册到

    ServiceManager 162

    7.1.7 分析MediaPlayerService

    和Client 164

    7.2 获得Service Manager接口 169

    7.3 分析MessageQueue 171

    7.3.1 创建MessageQueue 171

    7.3.2 提取消息 171

    7.3.3 分析函数nativePollOnce 174

    第8章 init进程和Zygote进程 182

    8.1 分析init进程 182

    8.1.1 分析入口函数 182

    8.1.2 分析配置文件 185

    8.1.3 分析Service 190

    8.1.4 解析on字段的内容 195

    8.1.5 init控制Service 197

    8.1.6 控制属性服务 204

    8.2 分析Zygote(孕育)进程 210

    8.2.1 Zygote基础 211

    8.2.2 分析Zygote的启动过程 211

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

    9.1 分析System进程 224

    9.1.1 启动System进程前

    的准备工作 224

    9.1.2 分析SystemServer 225

    9.1.3 分析EntropyService 227

    9.1.4 分析DropBoxManager

    Service 229

    9.1.5 分析DiskStatsService 234

    9.1.6 分析DeviceStorageManager

    Service(监测系统内存存储

    空间的状态) 237

    9.1.7 分析SamplingProfiler

    Service 239

    9.2 分析应用程序进程 246

    9.2.1 创建应用程序 246

    9.2.2 启动线程池 254

    9.2.3 创建信息循环 255

    第10章 分析Activity组件 258

    10.1 Activity基础 258

    10.1.1 Activity状态 258

    10.1.2 剖析Activity中的

    主要函数 259

    10.2 分析Activity的启动源代码 260

    10.2.1 Launcher启动应用程序 261

    10.2.2 返回ActivityManagerService

    的远程接口 262

    10.2.3 解析intent的内容 263

    10.2.4 分析检查机制 265

    10.2.5 执行Activity组件的操作 274

    10.2.6 将Launcher推入Paused

    状态 279

    10.2.7 处理消息 281

    10.2.8 暂停完毕 282

    10.2.9 建立双向连接 285

    10.2.10 启动新的Activity 289

    10.2.11 通知机制 291

    10.2.12 发送消息 292

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

    11.1 PackageManagerService概述 295

    11.2 系统进程启动 296

    11.3 开始运行 296

    11.4 扫描APK文件 306

    11.5 解析并安装文件 307

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

    Launcher 323

    11.6.1 设置系统进程 323

    11.6.2 启动Home应用程序 324

    11.6.3 启动com.android.launcher2. Launcher 330

    11.6.4 加载应用程序 333

    11.6.5 获得Activity 336

    第12章 Content Provider存储机制 341

    12.1 Content Provider基础 341

    12.1.1 Content Provider在应用

    程序中的架构 341

    12.1.2 Content Provider的常用

    接口 342

    12.2 启动Content Provider 343

    12.2.1 获得对象接口 343

    12.2.2 存在校验 344

    12.2.3 启动Android应用程序 348

    12.2.4 根据进程启动Content

    Provider 348

    12.2.5 处理消息 352

    12.2.6 具体启动 354

    12.3 Content Provider数据共享 356

    12.3.1 获取接口 356

    12.3.2 创建CursorWindow对象 358

    12.3.3 数据传递 361

    12.3.4 处理进程通信的请求 362

    12.3.5 数据操作 367

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

    13.1 Broadcast基础 370

    13.2 发送广播信息 371

    13.2.1 intent描述指示 371

    13.2.2 传递广播信息 371

    13.2.3 封装传递 372

    13.2.4 处理发送请求 372

    13.2.5 查找广播接收者 373

    13.2.6 处理广播信息 375

    13.2.7 检查权限 382

    13.2.8 处理的进程通信请求 384

    13.3 分析BroadCastReceiver 386

    13.3.1 MainActivity的调用 386

    13.3.2 注册广播接收者 387

    13.3.3 获取接口对象 388

    13.3.4 处理进程间的通信请求 390

    第14章 分析电源管理系统 392

    14.1 Power Management架构基础 392

    14.2 分析Framework层 392

    14.2.1 文件PowerManager.java 393

    14.2.2 提供PowerManager功能 393

    14.3 JNI层架构分析 410

    14.3.1 定义了两层之间的

    接口函数 410

    14.3.2 与Linux Kernel层

    进行交互 411

    14.4 Kernel(内核)层架构分析 411

    14.4.1 文件power.c 412

    14.4.2 文件earlysuspend.c 414

    14.4.3 文件wakelock.c 414

    14.4.4 文件resume.c 416

    14.4.5 文件suspend.c 416

    14.4.6 文件main.c 417

    14.4.7 proc文件 417

    14.5 wakelock和early_suspend 418

    14.5.1 wakelock的原理 418

    14.5.2 early_suspend的原理 419

    14.5.3 Android休眠 419

    14.5.4 Android唤醒 421

    14.6 Battery电池系统架构和管理 421

    14.6.1 实现驱动程序 422

    14.6.2 实现JNI本地代码 422

    14.6.3 Java层代码 423

    14.6.4 实现Uevent部分 424

    14.7 JobScheduler节能调度机制 428

    14.7.1 JobScheduler机制的

    推出背景 428

    14.7.2 JobScheduler的实现 428

    14.7.3 实现操作调度 429

    14.7.4 封装调度任务 431

    第15章 分析WindowManagerService

    系统 434

    15.1 WindowManagerService基础 434

    15.2 计算Activity窗口的大小 435

    15.2.1 实现View遍历 436

    15.2.2 函数relayoutWindow 446

    15.2.3 函数relayoutWindow 447

    15.2.4 拦截消息的处理类 466

    15.2.5 判断是否计算过 477

    第16章 分析电话系统 482

    16.1 Android电话系统详解 482

    16.1.1 电话系统简介 482

    16.1.2 电话系统结构 483

    16.1.3 驱动程序介绍 485

    16.1.4 RIL接口 486

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

    16.2 电话系统中的音频模块 493

    16.2.1 音频系统结构 493

    16.2.2 分析音频系统的层次 494

    16.3 分析拨号流程 501

    16.3.1 拨号界面 501

    16.3.2 实现Phone应用 504

    16.3.3 Call通话控制 507

    16.3.4 静态方法调用 510

    16.3.5 通话管理 512

    16.3.6 dial拨号 514

    16.3.7 状态跟踪 515

    16.3.8 RIL消息“出/入”口 516

    16.3.9 显示通话主界面 517

    第17章 分析短信系统 518

    17.1 短信系统的主界面 518

    17.2 发送普通短信 520

    17.3 发送彩信 530

    17.4 接收短信 537

    17.4.1 Java应用层的接收流程 538

    17.4.2 Framework层的处理过程 540

    第18章 Sensor传感器系统详解 542

    18.1 Android传感器系统概述 542

    18.2 Java层详解 543

    18.3 Frameworks层详解 548

    18.3.1 监听传感器的变化 548

    18.3.2 注册监听 548

    18.4 JNI层详解 556

    18.4.1 实现Native(本地)函数 557

    18.4.2 处理客户端数据 561

    18.4.3 处理服务端数据 563

    18.4.4 封装HAL层的代码 572

    18.4.5 处理消息队列 576

    18.5 HAL层详解 578

    第19章 分析SEAndroid系统 585

    19.1 SEAndroid概述 585

    19.1.1 内核空间 587

    19.1.2 用户空间 588

    19.2 文件安全上下文 596

    19.2.1 设置打包在ROM里面

    的文件的安全上下文 597

    19.2.2 设置虚拟文件系统的

    安全上下文 600

    19.2.3 设置应用程序数据文件的

    安全上下文 601

    19.3 进程安全上下文 612

    19.3.1 为独立进程静态地设置

    安全上下文 612

    19.3.2 为应用程序进程设置

    安全上下文 615

    第20章 分析ART系统 621

    20.1 对比Dalvik VM和ART 621

    20.2 启动ART 623

    20.2.1 运行app_process进程 624

    20.2.2 准备启动 627

    20.2.3 创建运行实例 632

    20.2.4 注册本地JNI函数 633

    20.2.5 启动守护进程 634

    20.2.6 解析参数 635

    20.2.7 初始化类、方法和域 641

    20.3 分析主函数main 647

    20.4 查找目标类 648

    20.4.1 函数LookupClass() 648

    20.4.2 函数DefineClass() 650

    20.4.3 函数InsertClass() 653

    20.4.4 函数LinkClass() 653

    20.5 类操作 655

    20.6 实现托管操作 656

    20.7 加载OAT文件 660

    20.7.1 产生OAT 660

    20.7.2 创建ART虚拟机 661

    20.7.3 解析启动参数并创建堆 663

    20.7.4 生成指定目录文件 665

    20.7.5 加载OAT文件 666

    20.7.6 解析字段 668

    资源截图:

    1602728646 faf7a2c6b6b0314 - 深入理解Android5源代码_源雷技术空间

    1.本文部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。                                       2.若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。                                          3.如果本站有侵犯、不妥之处的资源,请在网站最下方联系我们。将会第一时间解决!                                     4.本站所有内容均由互联网收集整理、网友上传,仅供大家参考、学习,不存在任何商业目的与商业用途。                            5.本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
    源雷技术空间 » 深入理解Android5源代码_源雷技术空间

    常见问题FAQ

    资源后续会更新吗?
    源雷技术空间支持永久更新!
    不会安装搭建怎么办?
    可以加入QQ交流群87323150,大神帮忙搭建~
    开通VIP 享更多特权,建议使用QQ登录