Android进阶解密pdf

图书网 2021年11月3日00:56:46
评论
1.9K
摘要

1 一线专家和工程师何红辉、徐宜生 、何俊林、安卓巴士技术社区、潘辰星、周泰良、杨强、Tamic联袂力荐
2 《Android进阶解密》基于Android 8.0,将系统源码和应用开发结合讲解,帮助读者融会贯通,破解Android应用开发进阶奥秘。
3 《Android进阶解密》介绍了 Android应用开发所需的系统源码知识,还介绍了JNI、ClassLoader、Java虚拟机、DVM&ART虚拟机和Hook等技术,以及热修复原理、插件化原理、绘制优化和内存优化等与应用开发相关的知识点。

Android进阶解密 作者:刘望舒

Android进阶解密 出版社:电子工业出版社

Android进阶解密 内容简介

《Android进阶解密》是一本Android进阶书籍,主要针对Android 8.0系统源码并结合应用开发相关知识进行介绍。《Android进阶解密》共分为17章,从3个方面来组织内容。 第1方面介绍Android应用开发所需要掌握的系统源码知识,第二方面介绍JNI、ClassLoader、Java虚拟机、DVM&ART虚拟机和Hook等技术,第三方面介绍热修复原理、插件化原理、绘制优化和内存优化等与应用开发相关的知识点。3个方面有所关联并形成一个知识体系,从而使Android开发者能通过阅读本书达到融会贯通的目的。

《Android进阶解密》适合有一定基础的Android应用开发工程师、Android系统开发工程师和对Android系统源码感兴趣的读者阅读。

Android进阶解密 目录

第1章 Android系统架构 1

1.1 Android系统架构 1

1.2 Android系统源码目录 4

1.2.1 整体结构 4

1.2.2 应用层部分 5

1.2.3 应用框架层部分 6

1.2.4 C/C++程序库部分 6

1.3 源码阅读 7

1.3.1 在线阅读 7

1.3.2 使用Source Insight 9

1.4 本章小结 12

第2章 Android系统启动 13

2.1 init进程启动过程 13

2.1.1 引入init进程 13

2.1.2 init进程的入口函数 14

2.1.3 解析init.rc 17

2.1.4 解析Service类型语句 19

2.1.5 init启动Zygote 20

2.1.6 属性服务 23

2.1.7 init进程启动总结 27

2.2 Zygote进程启动过程 27

2.2.1 Zygote概述 28

2.2.2 Zygote启动脚本 28

2.2.3 Zygote进程启动过程介绍 30

2.2.4 Zygote进程启动总结 38

2.3 SystemServer处理过程 39

2.3.1 Zygote处理SystemServer进程 39

2.3.2 解析SystemServer进程 44

2.3.3 SystemServer进程总结 48

2.4 Launcher启动过程 48

2.4.1 Launcher概述 48

2.4.2 Launcher启动过程介绍 49

2.4.3 Launcher中应用图标显示过程 54

2.5 Android系统启动流程 59

2.6 本章小结 60

第3章 应用程序进程启动过程 61

3.1 应用程序进程简介 61

3.2 应用程序进程启动过程介绍 62

3.2.1 AMS发送启动应用程序进程请求 62

3.2.2 Zygote接收请求并创建应用程序进程 68

3.3 Binder线程池启动过程 75

3.4 消息循环创建过程 78

3.5 本章小结 80

第4章 四大组件的工作过程 81

4.1 根Activity的启动过程 82

4.1.1 Launcher请求AMS过程 82

4.1.2 AMS到ApplicationThread的调用过程 85

4.1.3 ActivityThread启动Activity的过程 94

4.1.4 根Activity启动过程中涉及的进程 99

4.2 Service的启动过程 101

4.2.1 ContextImpl到AMS的调用过程 101

4.2.2 ActivityThread启动Service 103

4.3 Service的绑定过程 110

4.3.1 ContextImpl到AMS的调用过程 111

4.3.2 Service的绑定过程 112

4.4 广播的注册、发送和接收过程 122

4.4.1 广播的注册过程 122

4.4.2 广播的发送和接收过程 127

4.5 Content Provider的启动过程 137

4.5.1 query方法到AMS的调用过程 137

4.5.2 AMS启动Content Provider的过程 143

4.6 本章小结 148

第5章 理解上下文Context 149

5.1 Context的关联类 149

5.2 Application Context的创建过程 151

5.3 Application Context的获取过程 156

5.4 Activity的Context创建过程 156

5.5 Service的Context创建过程 161

5.6 本章小结 163

第6章 理解ActivityManagerService 164

6.1 AMS家族 164

6.1.1 Android 7.0的AMS家族 164

6.1.2 Android 8.0的AMS家族 170

6.2 AMS的启动过程 171

6.3 AMS与应用程序进程 174

6.4 AMS重要的数据结构 176

6.4.1 解析ActivityRecord 177

6.4.2 解析TaskRecord 177

6.4.3 解析ActivityStack 178

6.5 Activity栈管理 181

6.5.1 Activity任务栈模型 181

6.5.2 Launch Mode 182

6.5.3 Intent的FLAG 182

6.5.4 taskAffinity 185

6.6 本章小结 186

第7章 理解WindowManager 187

7.1 Window、WindowManager和WMS 187

7.2 WindowManager的关联类 188

7.3 Window的属性 193

7.3.1 Window的类型和显示次序 193

7.3.2 Window的标志 195

7.3.3 软键盘相关模式 196

7.4 Window的操作 196

7.4.1 系统窗口的添加过程 197

7.4.2 Activity的添加过程 202

7.4.3 Window的更新过程 203

7.5 本章小结 206

第8章 理解WindowManagerService 207

8.1 WMS的职责 207

8.2 WMS的创建过程 209

8.3 WMS的重要成员 217

8.4 Window的添加过程(WMS处理部分) 219

8.5 Window的删除过程 225

8.6 本章小结 230

第9章 JNI原理 231

9.1 系统源码中的JNI 232

9.2 MediaRecorder框架中的JNI 233

9.2.1 Java Framework层的MediaRecorder 233

9.2.2 JNI层的MediaRecorder 234

9.2.3 Native方法注册 235

9.3 数据类型的转换 239

9.3.1 基本数据类型的转换 240

9.3.2 引用数据类型的转换 240

9.4 方法签名 242

9.5 解析JNIEnv 244

9.5.1 jfieldID和jmethodID 245

9.5.2 使用jfieldID和jmethodID 247

9.6 引用类型 249

9.6.1 本地引用 249

9.6.2 全局引用 249

9.6.3 弱全局引用 250

9.7 本章小结 251

第10章 Java虚拟机 252

10.1 概述 252

10.1.1 Java虚拟机家族 253

10.1.2 Java虚拟机执行流程 253

10.2 Java虚拟机结构 254

10.2.1 Class文件格式 255

10.2.2 类的生命周期 256

10.2.3 类加载子系统 257

10.2.4 运行时数据区域 258

10.3 对象的创建 260

10.4 对象的堆内存布局 262

10.5 oop-klass模型 263

10.6 垃圾标记算法 266

10.6.1 Java中的引用 266

10.6.2 引用计数算法 267

10.6.3 根搜索算法 269

10.7 Java对象在虚拟机中的生命周期 270

10.8 垃圾收集算法 271

10.8.1 标记—清除算法 271

10.8.2 复制算法 272

10.8.3 标记—压缩算法 273

10.8.4 分代收集算法 274

10.9 本章小结 275

第11章 Dalvik和ART 276

11.1 Dalvik虚拟机 276

11.1.1 DVM与JVM的区别 276

11.1.2 DVM架构 278

11.1.3 DVM的运行时堆 280

11.1.4 DVM的GC日志 280

11.2 ART虚拟机 281

11.2.1 ART与DVM的区别 281

11.2.2 ART的运行时堆 282

11.2.3 ART的GC日志 283

11.3 DVM和ART的诞生 285

11.4 本章小结 288

第12章 理解ClassLoader 289

12.1 Java中的ClassLoader 289

12.1.1 ClassLoader的类型 289

12.1.2 ClassLoader的继承关系 291

12.1.3 双亲委托模式 292

12.1.4 自定义ClassLoader 295

12.2 Android中的ClassLoader 298

12.2.1 ClassLoader的类型 298

12.2.2 ClassLoader的继承关系 300

12.2.3 ClassLoader的加载过程 302

12.2.4 BootClassLoader的创建 306

12.2.5 PathClassLoader的创建 309

12.3 本章小结 311

第13章 热修复原理 312

13.1 热修复的产生 312

13.2 热修复框架的种类和对比 313

13.3 资源修复 314

13.3.1 Instant Run概述 314

13.3.2 Instant Run的资源修复 315

13.4 代码修复 318

13.4.1 类加载方案 319

13.4.2 底层替换方案 321

13.4.3 Instant Run方案 322

13.5 动态链接库的修复 323

13.5.1 System的load和loadLibarary方法 323

13.5.2 nativeLoad方法分析 327

13.6 本章小结 333

第14章 Hook技术 334

14.1 Hook技术概述 334

14.2 Hook技术分类 336

14.3 代理模式 336

14.3.1 代理模式简单实现 337

14.3.2 动态代理的简单实现 338

14.4 Hook startActivity方法 339

14.4.1 Hook Activity的startActivity方法 340

14.4.2 Hook Context的startActivity方法 343

14.4.3 Hook startActivity总结 344

14.5 本章小结 345

第15章 插件化原理 346

15.1 动态加载技术 346

15.2 插件化的产生 347

15.2.1 应用开发的痛点和瓶颈 347

15.2.2 插件化思想 348

15.2.3 插件化定义 350

15.3 插件化框架对比 351

15.4 Activity插件化 352

15.4.1 Activity的启动过程回顾 352

15.4.2 Hook IActivityManager方案实现 354

15.4.3 Hook Instrumentation方案实现 364

15.4.4 总结 367

15.5 Service插件化 368

15.5.1 插件化方面Service与Activity的不同 368

15.5.2 代理分发实现 370

15.6 ContentProvider插件化 376

15.6.1 ContentProvider的启动过程回顾 376

15.6.2 VirtualApk的实现 377

15.7 BroadcastReceiver的插件化 385

15.7.1 广播插件化思路 386

15.7.2 VirtualApk的实现 386

15.8 资源的插件化 387

15.8.1 系统资源加载 387

15.8.2 VirtualApk实现 389

15.9 so的插件化 390

15.10 本章小结 393

第16章 绘制优化 394

16.1 绘制性能分析 394

16.1.1 绘制原理 395

16.1.2 Profile GPU Rendering 396

16.1.3 Systrace 398

16.1.4 Traceview 404

16.2 布局优化 407

16.2.1 布局优化工具 407

16.2.2 布局优化方法 411

16.2.3 避免GPU过度绘制 419

16.3 本章小结 420

第17章 内存优化 421

17.1 避免可控的内存泄漏 421

17.1.1 什么是内存泄漏 421

17.1.2 内存泄漏的场景 422

17.2 Memory Monitor 428

17.2.1 使用Memory Monitor 429

17.2.2 大内存申请与GC 430

17.2.3 内存抖动 430

17.3 Allocation Tracker 430

17.3.1 使用Allocation Tracker 431

17.3.2 alloc文件分析 431

17.4 Heap Dump 434

17.4.1 使用Heap Dump 434

17.4.2 检测内存泄漏 436

17.5 内存分析工具MAT 438

17.5.1 生成hprof文件 438

17.5.2 MAT分析hprof文件 440

17.6 LeakCanary 448

17.6.1 使用LeakCanary 449

17.6.2 LeakCanary应用举例 449

17.7 本章小结 453

图书网:Android进阶解密pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

人在职场

面试沟通巧技能pdf

适读人群 :本书可为广大求职者面试提供有益指导,也适合作为各层次毕业生找工作的指导用书。 面试,实质是沟通!谁掌握了面试沟通的巧技能,谁就获得了面试的致胜法宝。本书讲述了求职者在面...
人工智能

深度学习之PyTorch实战计算机视觉pdf

适读人群 :本书面向对深度学习技术感兴趣,但是相关基础知识较为薄弱或者零基础的读者。 作者的文笔很好,对深度学习、Python、PyTorch、神经网络、迁移学习及相关数学知识讲解...
项目管理IT人文

关键链pdf

关键链 作者: 艾利·高德拉特 译者: 罗嘉颖 关键链 出版社: 电子工业出版社 关键链 内容简介 《关键链(修订本)》内容简介:项目无处不在.但都有一定的特征:可动用的资源有限;有完成日期及开支限制...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: