书籍详情
《Android进阶解密电子工业》[29M]百度网盘|亲测有效|pdf下载
  • Android进阶解密电子工业

  • 出版社:鸿扬千页图书专营店
  • 出版时间:2018-10
  • 热度:9457
  • 上架时间:2024-06-30 08:52:20
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

基本信息

  • 商品名:【满□8包邮】Android进阶解密97871□1348389电子工业
  • ISBN:9787121348389
  • 定价:99
  • 出版社:电子工业出版社
  • 作者:刘望舒

参考信息(以实物为准)

  • 出版时间:2018-10-01
  • 印刷时间:2018-10-01
  • 版次:1
  • 印次:
  • 包装:平装
  • 开本:16开
  • 用纸:胶版纸
  • 页数:468
  • 字数:

产品特色

编辑推荐

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

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

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


内容简介

《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进阶之光》有些关联,主要有以下几点:

(1)《Android进阶之光》适合初、中级工程师阅读,因此我需要写一本适合中、高级工程师阅读的进阶书。

(□)目前市场上的系统源码分析的书大部分不是专门为应用开发编写的,因此我要专门为Android应用开发编写一本系统源码分析的书,不仅如此,我还要将系统源码和应用开发相结合。

(3)目前Android应用综合类进阶书籍很少,在□017年出版的只有《Android进阶之光》,在□018年我仍要贡献出自己的力量。

(4)目前市面上的源码分析类书籍大部分是基于Android 6.0以前版本的,需要有一本书籍来对更新版本的系统源码进行分析。

(5)《Android进阶之光》覆盖的知识点还远远不够,我希望能覆盖更多的知识点,让更多的人受益。

本书内容

本书共分为17章,各章内容如下:

□□章介绍Android系统架构、系统源码目录和如何阅读源码,带领大家走进Android系统源码的世界。

第□章介绍Android系统启动过程,为□□的章节做好铺垫。

第3章介绍应用程序进程启动过程。

第4章介绍四大组件的工作过程,包括根Activity的启动过程,Service的启动和绑定过程,广播的注册、发送和接收过程,Content Provider的启动过程。

第5章从源码角度分析上下文Context。

第6章介绍ActivityManagerService,包括AMS家族、AMS的启动过程、AMS重要的数据结构和Activity栈管理等内容。

第7章介绍WindowManager,包括WindowManager的关联类、Window的属性和Window的操作等内容。

第8章介绍WindowManagerService,包括WMS的创建过程、WMS的重要成员和Window的添加过程等内容。

第9章结合MediaRecorder框架来介绍JNI的原理。

□□0章介绍Android开发所需要了解的Java虚拟机知识。

□□1章介绍Dalvik和ART虚拟机。

□□□章介绍ClassLoader,它是理解热修复原理和插件化原理必备的知识点。

□□3章介绍热修复原理,包括热修复框架的对比、资源修复、代码修复和动态链接库的修复。

□□4章介绍Hook技术,为讲解插件化原理做铺垫。

□□5章介绍插件化原理,包括插件化的产生、四大组件的插件化、资源的插件化和so的插件化。

□□6章介绍绘制优化,包括绘制性能分析和布局优化。

□□7章介绍内存优化,从避免内存泄漏开始讲起,然后介绍常用的内存分析工具Memory Monitor、Allocation Tracker和Heap Dump,□后介绍分析内存泄漏的利器MAT和LeakCanary。

本书特色

本书主要有以下特点:

本书的知识点自成体系并且环环相扣,每一个章节都或多或少地与其他章节有所关联。

本书是目前市面上少有的专门为Android应用开发者所编写的源码分析类书籍,并且将系统源码和应用开发相结合。

本书是目前市面上少有的讲解插件化和热修复原理的书。

本书为了更好地讲解知识点,会先介绍一些知识点做铺垫,比如要学习插件化原理,就需要先学习四大组件工作过程、AMS、ClassLoader和Hook技术等相关知识点。

读者对象

本书适合以下读者阅读:

有一定基础的Android应用开发工程师。

Android系统开发工程师。

对Android系统源码感兴趣的读者。

致谢

感谢本书的策划编辑付睿,她在CSDN博客中发现了我,并积极推动本书的出版进度,才使得本书能够及时出版。感谢我的父母以及所有关注我的朋友们,你们的鼓励和认可为我写书以及写博客带来了源源不断的动力。

勘误与互动

本人虽已竭尽全力,但书中难免会有错误,欢迎大家向我反馈,我也会在独立博客和CSDN博客中定期发布本书的勘误信息。

刘望舒

□018年6月于北京

目录

□□章  Android系统架构  1

1.1  Android系统架构  1

1.□  Android系统源码目录  4

1.□.1  整体结构  4

1.□.□  应用层部分  5

1.□.3  应用框架层部分  6

1.□.4  C/C++程序库部分  6

1.3  源码阅读  7

1.3.1  在线阅读  7

1.3.□  使用Source Insight  9

1.4  本章小结  1□

第□章  Android系统启动  13

□.1  init进程启动过程  13

□.1.1  引入init进程  13

□.1.□  init进程的入口函数  14

□.1.3  解析init.rc  17

□.1.4  解析Service类型语句  19

□.1.5  init启动Zygote  □0

□.1.6  属性服务  □3

□.1.7  init进程启动总结  □7

□.□  Zygote进程启动过程  □7

□.□.1  Zygote概述  □8

□.□.□  Zygote启动脚本  □8

□.□.3  Zygote进程启动过程介绍  30

□.□.4  Zygote进程启动总结  38

□.3  SystemServer处理过程  39

□.3.1  Zygote处理SystemServer进程  39

□.3.□  解析SystemServer进程  44

□.3.3  SystemServer进程总结  48

□.4  Launcher启动过程  48

□.4.1  Launcher概述  48

□.4.□  Launcher启动过程介绍  49

□.4.3  Launcher中应用图标显示过程  54

□.5  Android系统启动流程  59

□.6  本章小结  60

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

3.1  应用程序进程简介  61

3.□  应用程序进程启动过程介绍  6□

3.□.1  AMS发送启动应用程序进程请求  6□

3.□.□  Zygote接收请求并创建应用程序进程  68

3.3  Binder线程池启动过程  75

3.4  消息循环创建过程  78

3.5  本章小结  80

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

4.1  根Activity的启动过程  8□

4.1.1  Launcher请求AMS过程  8□

4.1.□  AMS到ApplicationThread的调用过程  85

4.1.3  ActivityThread启动Activity的过程  94

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

4.□  Service的启动过程  101

4.□.1  ContextImpl到AMS的调用过程  101

4.□.□  ActivityThread启动Service  103

4.3  Service的绑定过程  110

4.3.1  ContextImpl到AMS的调用过程  111

4.3.□  Service的绑定过程  11□

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

4.4.1  广播的注册过程  1□□

4.4.□  广播的发送和接收过程  1□7

4.5  Content Provider的启动过程  137

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

4.5.□  AMS启动Content Provider的过程  143

4.6  本章小结  148

第5章  理解上下文Context  149

5.1  Context的关联类  149

5.□  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.□  Android 8.0的AMS家族  170

6.□  AMS的启动过程  171

6.3  AMS与应用程序进程  174

6.4  AMS重要的数据结构  176

6.4.1  解析ActivityRecord  177

6.4.□  解析TaskRecord  177

6.4.3  解析ActivityStack  178

6.5  Activity栈管理  181

6.5.1  Activity任务栈模型  181

6.5.□  Launch Mode  18□

6.5.3  Intent的FLAG  18□

6.5.4  taskAffinity  185

6.6  本章小结  186

第7章  理解WindowManager  187

7.1  Window、WindowManager和WMS  187

7.□  WindowManager的关联类  188

7.3  Window的属性  193

7.3.1  Window的类型和显示次序  193

7.3.□  Window的标志  195

7.3.3  软键盘相关模式  196

7.4  Window的操作  196

7.4.1  系统窗口的添加过程  197

7.4.□  Activity的添加过程  □0□

7.4.3  Window的更新过程  □03

7.5  本章小结  □06

第8章  理解WindowManagerService  □07

8.1  WMS的职责  □07

8.□  WMS的创建过程  □09

8.3  WMS的重要成员  □17

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

8.5  Window的删除过程  □□5

8.6  本章小结  □30

第9章  JNI原理  □31

9.1  系统源码中的JNI  □3□

9.□  MediaRecorder框架中的JNI  □33

9.□.1  Java Framework层的MediaRecorder  □33

9.□.□  JNI层的MediaRecorder  □34

9.□.3  Native方法注册  □35

9.3  数据类型的转换  □39

9.3.1  基本数据类型的转换  □40

9.3.□  引用数据类型的转换  □40

9.4  方法签名  □4□

9.5  解析JNIEnv  □44

9.5.1  jfieldID和jmethodID  □45

9.5.□  使用jfieldID和jmethodID  □47

9.6  引用类型  □49

9.6.1  本地引用  □49

9.6.□  全局引用  □49

9.6.3  弱全局引用  □50

9.7  本章小结  □51

□□0章  Java虚拟机  □5□

10.1  概述  □5□

10.1.1  Java虚拟机家族  □53

10.1.□  Java虚拟机执行流程  □53

10.□  Java虚拟机结构  □54

10.□.1  Class文件格式  □55

10.□.□  类的生命周期  □56

10.□.3  类加载子系统  □57

10.□.4  运行时数据区域  □58

10.3  对象的创建  □60

10.4  对象的堆内存布局  □6□

10.5  oop-klass模型  □63

10.6  垃圾标记算法  □66

10.6.1  Java中的引用  □66

10.6.□  引用计数算法  □67

10.6.3  根搜索算法  □69

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

10.8  垃圾收集算法  □71

10.8.1  标记—清除算法  □71

10.8.□  □□算法  □7□

10.8.3  标记—压缩算法  □73

10.8.4  分代收集算法  □74

10.9  本章小结  □75

□□1章  Dalvik和ART  □76

11.1  Dalvik虚拟机  □76

11.1.1  DVM与JVM的区别  □76

11.1.□  DVM架构  □78

11.1.3  DVM的运行时堆  □80

11.1.4  DVM的GC日志  □80

11.□  ART虚拟机  □81

11.□.1  ART与DVM的区别  □81

11.□.□  ART的运行时堆  □8□

11.□.3  ART的GC日志  □83

11.3  DVM和ART的诞生  □85

11.4  本章小结  □88

□□□章  理解ClassLoader  □89

1□.1  Java中的ClassLoader  □89

1□.1.1  ClassLoader的类型  □89

1□.1.□  ClassLoader的继承关系  □91

1□.1.3  双亲委托模式  □9□

1□.1.4  自定义ClassLoader  □95

1□.□  Android中的ClassLoader  □98

1□.□.1  ClassLoader的类型  □98

1□.□.□  ClassLoader的继承关系  300

1□.□.3  ClassLoader的加载过程  30□

1□.□.4  BootClassLoader的创建  306

1□.□.5  PathClassLoader的创建  309

1□.3  本章小结  311

□□3章  热修复原理  31□

13.1  热修复的产生  31□

13.□  热修复框架的种类和对比  313

13.3  资源修复  314

13.3.1  Instant Run概述  314

13.3.□  Instant Run的资源修复  315

13.4  代码修复  318

13.4.1  类加载方案  319

13.4.□  底层替换方案  3□1

13.4.3  Instant Run方案  3□□

13.5  动态链接库的修复  3□3

13.5.1  System的load和loadLibarary方法  3□3

13.5.□  nativeLoad方法分析  3□7

13.6  本章小结  333

□□4章  Hook技术  334

14.1  Hook技术概述  334

14.□  Hook技术分类  336

14.3  代理模式  336

14.3.1  代理模式简单实现  337

14.3.□  动态代理的简单实现  338

14.4  Hook startActivity方法  339

14.4.1  Hook Activity的startActivity方法  340

14.4.□  Hook Context的startActivity方法  343

14.4.3  Hook startActivity总结  344

14.5  本章小结  345

□□5章  插件化原理  346

15.1  动态加载技术  346

15.□  插件化的产生  347

15.□.1  应用开发的痛点和瓶颈  347

15.□.□  插件化思想  348

15.□.3  插件化定义  350

15.3  插件化框架对比  351

15.4  Activity插件化  35□

15.4.1  Activity的启动过程回顾  35□

15.4.□  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.□  代理分发实现  370

15.6  ContentProvider插件化  376

15.6.1  ContentProvider的启动过程回顾  376

15.6.□  VirtualApk的实现  377

15.7  BroadcastReceiver的插件化  385

15.7.1  广播插件化思路  386

15.7.□  VirtualApk的实现  386

15.8  资源的插件化  387

15.8.1  系统资源加载  387

15.8.□  VirtualApk实现  389

15.9  so的插件化  390

15.10  本章小结  393

□□6章  绘制优化  394

16.1  绘制性能分析  394

16.1.1  绘制原理  395

16.1.□  Profile GPU Rendering  396

16.1.3  Systrace  398

16.1.4  Traceview  404

16.□  布局优化  407

16.□.1  布局优化工具  407

16.□.□  布局优化方法  411

16.□.3  避免GPU过度绘制  419

16.3  本章小结  4□0

□□7章  内存优化  4□1

17.1  避免可控的内存泄漏  4□1

17.1.1  什么是内存泄漏  4□1

17.1.□  内存泄漏的场景  4□□

17.□  Memory Monitor  4□8

17.□.1  使用Memory Monitor  4□9

17.□.□  大内存申请与GC  430

17.□.3  内存抖动  430

17.3  Allocation Tracker  430

17.3.1  使用Allocation Tracker  431

17.3.□  alloc文件分析  431

17.4  Heap Dump  434

17.4.1  使用Heap Dump  434

17.4.□  检测内存泄漏  436

17.5  内存分析工具MAT  438

17.5.1  生成hprof文件  438

17.5.□  MAT分析hprof文件  440

17.6  LeakCanary  448

17.6.1  使用LeakCanary  449

17.6.□  LeakCanary应用举例  449

17.7  本章小结  453

作者简介

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

精彩书评

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

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

 

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

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

 

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

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

 

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

——安卓巴士技术社区

 

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

——潘辰星  □□□□无线开发专家

 

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

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

 

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

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

 

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

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