京文联发专营店
  • 扫码下单

  • 正版现货区域包邮DZ Android进阶解密 刘望舒 畅销书Android进阶之光图书Android系统
  • 本书是一本Android进阶书籍,主要针对Android 8.0系统源码并结合应用开发相关
    • 作者: 刘望舒著
    • 出版社: 电子工业出版社
    • 出版时间:2018-10
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    店铺装修中

    商家:
    京文联发专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    京文联发专营店

  • 商品参数
    • 作者: 刘望舒著
    • 出版社:电子工业出版社
    • 出版时间:2018-10
    • 开本:16
    • ISBN:9787121348389
    • 版权提供:电子工业出版社

    定价 99.00
    出版社 电子工业出版社
    出版时间 2018年10月
    开本 16开
    作者 刘望舒
    页数 468
    ISBN编码 9787121348389



    内容介绍


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

    作者介绍


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

    关联推荐

     

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

     

    目录

     

    第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进阶二部曲包括《Android进阶之光》和本书,因此写这本书的原因和《Android进阶之光》有些关联,主要有以下几点:
    (1)《Android进阶之光》适合初、中级工程师阅读,因此我需要写一本适合中、高#工程师阅读的进阶书。
    (2)目前市场上的系统源码分析的书大部分不是专门为应用开发编写的,因此我要专门为Android应用开发编写一本系统源码分析的书,不仅如此,我还要将系统源码和应用开发相结合。
    (3)目前Android应用综合类进阶书籍很少,在2017年出版的只有《Android进阶之光》,在2018年我仍要贡献出自己的力量。
    (4)目前市面上的源码分析类书籍大部分是基于Android 6.0以前版本的,需要有一本书籍来对更新版本的系统源码进行分析。
    (5)《Android进阶之光》覆盖的知识点还远远不够,我希望能覆盖更多的知识点,让更多的人受益。
    本书内容
    本书共分为17章,各章内容如下:
    ? 第1章介绍Android系统架构、系统源码目录和如何阅读源码,带领大家走进Android系统源码的世界。
    ? 第2章介绍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的原理。
    ? 第10章介绍Android开发所需要了解的Java虚拟机知识。
    ? 第11章介绍Dalvik和ART虚拟机。
    ? 第12章介绍ClassLoader,它是理解热修复原理和插件化原理必#的知识点。
    ? 第13章介绍热修复原理,包括热修复框架的对比、资源修复、代码修复和动态链接库的修复。
    ? 第14章介绍Hook技术,为讲解插件化原理做铺垫。
    ? 第15章介绍插件化原理,包括插件化的产生、四大组件的插件化、资源的插件化和so的插件化。
    ? 第16章介绍绘制优化,包括绘制性能分析和布局优化。
    ? 第17章介绍内存优化,从避免内存泄漏开始讲起,然后介绍常用的内存分析工具Memory Monitor、Allocation Tracker和Heap Dump,#后介绍分析内存泄漏的利器MAT和LeakCanary。
    本书特色
    本书主要有以下特点:
    ? 本书的知识点自成体系并且环环相扣,每一个章节都或多或少地与其他章节有所关联。
    ? 本书是目前市面上少有的专门为Android应用开发#所编写的源码分析类书籍,并且将系统源码和应用开发相结合。
    ? 本书是目前市面上少有的讲解插件化和热修复原理的书。
    ? 本书为了更好地讲解知识点,会先介绍一些知识点做铺垫,比如要学习插件化原理,就需要先学习四大组件工作过程、AMS、ClassLoader和Hook技术等相关知识点。
    读者对象
    本书适合以下读者阅读:
    ? 有一定基础的Android应用开发工程师。
    ? Android系统开发工程师。
    ? 对Android系统源码感兴趣的读者。
    致谢
    感谢本书的策划编辑付睿,她在CSDN博客中发现了我,并积极推动本书的出版进度,才使得本书能够及时出版。感谢我的父母以及所有关注我的朋友们,你们的鼓励和认可为我写书以及写博客带来了源源不断的动力。
    勘误与互动
    本人虽已竭尽全力,但书中难免会有错误,欢迎大家向我反馈,我也会在独立博客和CSDN博客中定期发布本书的勘误信息。

    刘望舒 
    2018年6月于北京

    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购