搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Android进阶解密
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121348389
  • 作      者:
    刘望舒著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2018
收藏
编辑推荐

1 一线专家和工程师何红辉、徐宜生 、何俊林、安卓巴士技术社区、潘辰星、周泰良、杨强、Tamic联袂力荐

2 《Android进阶解密》基于Android 8.0,将系统源码和应用开发结合讲解,帮助读者融会贯通,破解Android应用开发进阶秘密。

3 《Android进阶之光》介绍了 Android应用开发所需的系统源码知识,还介绍了JNI、ClassLoader、Java虚拟机、DVM&ART虚拟机和Hook等技术,以及热修复原理、插件化原理、绘制优化和内存优化等与应用开发相关的知识点。


展开
作者简介

刘望舒,资深开发工程师,Android进阶二部曲《Android进阶之光》《Android进阶解密》的作者,公众号“刘望舒”的作者,CSDN人气博主。他在博客中构建了“Android相关原创知识体系”,该体系全面且深入并广获好评。他拥有近10年的开发经验和多年的技术管理经验,对Android框架层及应用层开发有着独到、深入的理解。

展开
内容介绍

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

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

展开
精彩书评

市面上不乏帮助新手入门和深入剖析系统源码的Android书籍,而本书则在入门与深究细节之间找到了平衡点,为广大Android工程师点亮了进阶之光。

——何红辉  《Android源码设计模式解析与实战》、《Android开发进阶:从小工到专家》作者

 

通过阅读本书,作者将带你从系统设计的角度窥探Android开发的进阶技巧,这是一本进阶好书。

——徐宜生  《Android群英传》作者

 

源码阅读非常重要,本书很好地诠释了一些我们需要熟知的技术原理,读完本书令人豁然开朗。无论是在面试中,还是在实际工作中,本书介绍的都是非常重要的技术内容。这是一本让你进阶成为资深工程师的好书。

——何俊林  《Android音视频开发》作者、爱奇艺前多媒体开发工程师

 

强烈建议从事系统架构、核心系统开发的朋友仔细阅读本书,它能解放你的思想,给予你无限的启发。同时也建议正在从事应用层开发工作的朋友不要错过本书,它不仅能让你对手中工具的使用知其然,还能知其所以然。

——安卓巴士技术社区

 

在这个竞争白热化的时代,Android开发者越来越焦虑,因为各种新语言、新框架、新源码层出不穷,甚至应届生通过使用开源框架,分分钟就能设计出界面漂亮、运行流畅的App。如果想在如此残酷的世界里保持竞争力,就需要让自己向底层挖,挖得越深,根基就越稳。我一直非常希望有一本比较新的源码解析类的书籍,可以带领开发者继续前进,而现在,这本书已经到你手上了。

——潘辰星  阿里巴巴无线开发专家

 

随着Android开发的深入,Android源码、插件化、热修复等技术是一个Android应用开发者必须要涉及的,但市面上很多文章要么讲得太深,深入Native层的实现细节,根本不适合应用开发;要么讲得太浅,很多关键点一笔带过,没有和应用开发很好地结合起来。而望舒的这本书,将Android源码、插件化和热修复等技术与应用开发结合得恰到好处,不仅有基础知识的铺垫,扫清读者的阅读障碍,而且对讲解深度把控合理,不至于深到应用开发根本涉及不到的层面,同时也非常有助于加深开发者对应用开发的理解。

——周泰良  字节跳动Android开发工程师

 

市面上大多数源码解析的书籍都意在解析源码、加深理解,往往枯燥乏味,开发者难以领会其中精髓,本书的可贵之处是能够结合系统知识和应用知识,给予读者学以致用的信心。作为一个Framework开发者,我可以负责任地说,本书可以帮助读者深入理解源码及运用所学知识。

——杨强  小米资深开发工程师

 

本书符合市场需求,通过源码分析,详解主流技术,是Android开发进阶的不错选择!

——Tamic  美团高级工程师,“开发者技术前线”作者

展开
目录

第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

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证