Android进阶解密

Android进阶解密 pdf epub mobi txt 电子书 下载 2026

出版者:电子工业出版社
作者:刘望舒
出品人:
页数:468
译者:
出版时间:2018-10
价格:99
装帧:
isbn号码:9787121348389
丛书系列:
图书标签:
  • Android
  • Android进阶
  • 进阶必备
  • 计算机
  • 编程
  • 好书,值得一读
  • 源码
  • 热修复
  • Android
  • 逆向工程
  • 安全
  • 漏洞分析
  • 内存分析
  • 动态调试
  • Hook
  • 脱壳
  • 加壳
  • Smali
  • apk
  • Android开发
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

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

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

作者简介

刘望舒,资深开发工程师,Android进阶二部曲《Android进阶之光》《Android进阶解密》的作者,公众号“刘望舒”的作者,CSDN人气博主。他在博客中构建了“Android相关原创知识体系”,该体系全面且深入并广获好评。他拥有近10年的开发经验和多年的技术管理经验,对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
· · · · · · (收起)

读后感

评分

评分

评分

评分

评分

用户评价

评分

这本书的排版和逻辑结构处理得非常精妙,它不像有些技术书籍那样堆砌代码,而是以问题为导向,引导读者层层深入地去解决实际工作中遇到的“疑难杂症”。例如,当讨论到网络通信时,作者没有简单地推荐Retrofit,而是深入分析了OkHttp的核心设计模式,包括请求的调度、连接池的管理,乃至TLS握手过程中的细节处理。这种对基础库工作原理的挖掘,让我能够更自信地去修改或扩展现有的网络层代码,而不是仅仅停留在“使用”层面。对于资源管理和多线程并发处理的部分,作者的讲解清晰有力,特别是对线程池在不同场景下的适用性分析,提供了大量实用的经验之谈。读完这本书,我感觉自己对整个Android生态系统的理解从一个点拓展到了一个面,不再是孤立地看待各个模块,而是看到它们之间是如何紧密协作的。

评分

我一直认为,要真正成为一名“高级”工程师,就必须跨越那道从应用层到底层框架的鸿沟。这本书正是这样一座坚实的桥梁。它对Gradle构建系统和Kotlin协程在Android中的深度集成进行了非常详尽的阐述,特别是协程在处理生命周期绑定时的最佳实践,给出了几套不同的实现思路供参考对比。作者在解释这些复杂概念时,总能找到最核心的那个逻辑点,然后围绕它构建整个知识体系,使得学习曲线虽然陡峭,但每一步都走得踏实。我尤其欣赏书中对版本兼容性挑战的分析,展示了如何在不同API级别上实现一致的用户体验,这在实际项目中是至关重要的。总而言之,这本书的价值在于它极大地提升了我的工程化思维,让我从一个单纯的“编码者”蜕变为一个能够设计、并维护复杂系统的架构师。

评分

我原本以为这是一本又一本在重复介绍新特性和UI组件的书籍,但事实证明我大错特错。这本书的视角非常独特,它似乎专注于那些被官方文档一笔带过,却在实际项目中扮演关键角色的技术点。我特别喜欢它对性能调优的见解,不仅仅停留在使用Profile工具查看CPU和内存占用上,而是从更深层次探讨了垃圾回收(GC)机制在Android环境下的特殊性,以及如何通过代码层面的优化来规避潜在的卡顿。书中对于自定义View的渲染流程讲解得极其细致,从`measure`到`layout`再到`draw`,每一个像素点背后的计算逻辑都被剖析得淋漓尽致,这对我优化那些需要大量自定义动画和复杂布局的界面帮助太大了。说实话,这本书的深度已经超出了普通应用开发的范畴,更像是为系统级开发者准备的参考手册,它教你的不是“做什么”,而是“为什么能这么做”。

评分

这本书带给我最大的震撼是它对“遗留问题”和“边缘情况”的关注。很多教程都会忽略那些只有在特定设备或极端环境下才会暴露出来的Bug,但这本书却系统地梳理了这些潜在的陷阱,并提供了优雅的解决方案。比如,在处理传感器数据同步和后台任务定时唤醒时,作者分享了大量来自一线实战的经验教训,这些都是官方文档里找不到的“黑话”。它的论述风格非常沉稳、务实,不追求新奇的花哨技术,而是致力于打磨基础的健壮性。读到关于系统广播和权限变更处理的部分,我立刻意识到了过去代码中存在的安全隐患,并着手进行了修正。这本书更像是一位经验丰富的前辈,耐心地带着你穿越那些充满荆棘的开发路径,让你少走许多弯路,这份实在的价值是无法用金钱衡量的。

评分

这本书简直是为那些渴望深入理解Android底层原理的开发者准备的宝藏。我花了大量时间研究,发现作者在解析各种系统服务和框架结构时,展现出了惊人的洞察力。比如,书中对Activity生命周期和Fragment管理背后的线程调度机制的剖析,完全不是那种浅尝辄止的介绍,而是深入到源码层面,让你清楚地看到系统是如何一步步做出决策的。特别是关于IPC机制的章节,作者用清晰的图示和代码实例,把Binder的复杂性撕开给读者看,这对于那些想构建高性能、高稳定性的复杂应用的人来说,无疑是极大的帮助。读完后,我感觉自己对应用的启动流程和内存管理有了全新的认识,不再是简单地调用API,而是真正理解了“为什么这么做”。作者的文笔流畅而不失严谨,即便是面对晦涩难懂的底层概念,也能用生动的比喻和恰当的类比进行阐述,极大地降低了学习门槛,这让原本望而生畏的系统级开发变得触手可及。

评分

必须是力荐,这本书荣升为个人读书列表中的Top1。书中内容有一定的难度,看之前最好有点framework层基础,看完之后疏通了我自己很多的android知识盲区。书的编排思路也很清晰,不混乱。看一遍是远远不够的,多看几遍吧...

评分

本书基于Android8.0剖析系统源码,需要必须有一定的Android开发积累,如果能有C语言基础就更好了,层层紧扣逐步深入,可谓良心之作。 。。。。。。。。。。。。。。。。 花了一整天时间走马观花过了一遍,受益匪浅。 第2章系统启动是全书的基础,特别重要,一定要看明白,一遍不行再来一遍。第15章插件化原理简直就是本书的精华所在,几乎用到了前面所有章节的铺垫,毕竟插件化是动态加载中一个应用,知识体系庞大,用一章肯定只能讲个原理抛砖引玉,这已经足够了!

评分

非常给力 嗯 给1星2星的估计书都没看 ,估计和作者有仇吧,不过你给刷低分也改变不了这本书的口碑啊, 这书在应用开发进阶书中应该算是顶尖了,源码分析的到位,不罗嗦,还结合了应用开发的知识,建议都来买来看看。

评分

必须是力荐,这本书荣升为个人读书列表中的Top1。书中内容有一定的难度,看之前最好有点framework层基础,看完之后疏通了我自己很多的android知识盲区。书的编排思路也很清晰,不混乱。看一遍是远远不够的,多看几遍吧...

评分

和上一本一样,都是面试必备的,怀疑面试官是不是也都在看这书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有