Android Tech And Perf

一本讲 Android 流畅性的书,应该有什么内容?

Word count: 2.8kReading time: 9 min
2021/10/27

最近读了一本新书:《打造流畅的 Android App》,京东链接:https://item.jd.com/10035215362170.html 。因为书名所以买了这本书,读完之后觉得有必要写一篇文章,让还没有买此书的同学了解一下

我个人的建议是:如果你是个老鸟,不建议买,这本书里面没有介绍太多原理性的东西,对于 Android 流畅性也没有一个比较全面的介绍;如果你是新手,这本书用来当做开阔视野 + 查漏补缺还可以,想更深入的了解 Android 流畅度还是差了点东西

之所以我会这么建议,是因为这本书确实没有讲太多性能或者流畅度相关的东西,也没有比较深入的原理部分,篇幅更多在讲静态代码审查AS Profiler 的使用App 架构保活网络性能优化APK 大小优化App 耗电等,内容也不深,浅尝辄止

打造

内容介绍

简单介绍一下这本书的内容,其章节如下

  1. 概述 :简单介绍为何要做性能优化,以及 Android Studio 的配置
  2. 静态代码审查 :大篇幅降了各种静态代码审查工具,比如 Android Lint 、CheckStyle、SpotBugs、PMD 等,除了 Lint 其他的我接触不多,也算是查漏补缺了
  3. 使用 Android Profiler 优化性能 :主要降了 AS Profiler 工具里面的 CPU Profiler、Memory Profiler、Network Profiler、Network Profiler ,这里主要重点是工具的使用,大概性地介绍了一下
  4. 高质量的 App 从架构开始:主要是架构原则、MVC、MVP、MVVM 这些
  5. 优雅地保活 App :简单介绍了下保活相关的技术
  6. 网络性能优化专题 :网络交互与多线程 + 海量数据传输优化
  7. 优化 APK 体积 :老生常谈的 APK 大小优化,多渠道打包 + 优化资源文件 + 代码混淆
  8. App 耗电及 Crash 体验优化:简单介绍了一下

从上面章节标题大家也可以看到,跟流畅性相关的内容比较少,内容相对会比较杂一些,感兴趣的可以买一本看看

我认为一本讲流畅性的书,应该有什么?

如果让我写这么一本书,我肯定是写不来的,非常钦佩能出书的技术小伙伴,给作者点个赞。

不过这并不妨碍我嘴炮打个山响(I am good at it):所以我觉得如果让我来写这本书,我会加入下面这些内容,确保大家通过这本书,就可以深入理解 Android 的流畅性原理,且可以熟练使用各种工具来分析所遇到的流畅性问题

鉴于在讨论 Android 性能问题的时候,卡顿(流畅性)响应速度ANR 这三个性能相关的知识点通常会放到一起来讲,因为引起卡顿、响应慢、ANR 的原因类似,只不过根据重要程度,被人为分成了卡顿(流畅性)、响应慢、ANR 三种,所以我们可以定义广义上的流畅性,包含了卡顿(流畅性)、响应慢和 ANR 三种,所以如果用户反馈说手机卡顿或者 App 卡顿(流畅性),大部分情况下都是广义上的卡顿(流畅性),需要搞清楚,到底出现了哪一种问题

所以我设想的章节应该包含下面的内容

  1. 第一章:Android 流畅性概述:这一章主要会讲性能相关的一些概念,包括从用户角度、开发角度、测试角度、AOSP 的角度、硬件角度等,讲述流畅性的一些概念。这一点很重要,因为在实践中发现,用户和开发、测试往往是同不同的角度来看待流畅度的,思考问题的时候别把自己的思维定在某一个角色,往往会有不一样的结果
  2. 第二章:Android 运行机制概述:这一章主要会讲一些 Android 运行机制相关的内容,了解这些知识点,对于分析 Android 流畅性问题是必须的,当下面这些知识点你非常熟悉之后,碰到流畅性的问题,你的脑海中就有一个图形化的工具在运转:用户怎么操作的、系统怎么反馈的、App 运行到了哪里、最有可能是哪里出现了问题、用什么工具去 Debug 最方便
    1. App 主线程运行原理(主线程和渲染线程)
    2. Message、Handler、MessageQueue、Looper 机制
    3. 屏幕刷新机制和 Vsync
    4. Choreogrepher 机制
    5. Buffer 工作流和 SurfaceFlinger 工作流
    6. Input 流程
    7. ANR 的设计思想
  3. 第三章:性能分析工具介绍:正所谓 工欲善其事必先利其器,趁手的工具对于分析性能问题至关重要,这一章主要会讲性能分析经常遇到的工具,并非是简单的介绍,会结合 Android 系统机制来讲解,工具主要包括但不限于 Systrace(Perfetto)AS ProfilerSimplePerfMATLog 工具(Log 内容分析和 Log 原理)、命令行工具(dumpsys meminfo、dumpsys gfxinfo、dumpsys cpuinfo、dumpsys SurfaceFlinger、dumpsys activity、dumpsys input、dumpsys window 等)、三方性能库(Koom、Matrix、Facebook profilo、BlockCanary、LeakCanary、Tailor/Raphael 等)
  4. 第四章:深入分析 Android 卡顿问题:运行机制和工具都介绍完了,那么接下来就是如何进行实战了,这一章主要会讲卡顿出现的原因、分析卡顿问题的套路、案例分享、编码最佳实践等
  5. 第五章:深入分析 Android 响应速度问题:同上,响应速度问题实战环节,这一章主要会讲响应速度问题出现的原因、分析响应速度问题的套路、案例分享、编码最佳实践等
  6. 第六章:深入分析 Android ANR 问题:ANR 也是用户体验的一部分,这里主要会讲 ANR 的设计思想、ANR 的几种类型、ANR 出现的原因、ANR 问题的分析套路、案例分享、编码最佳实践等(目测会有很大的篇幅)
  7. 第七章:深入分析 Android 内存问题:内存问题同样是影响用户体验一部分,而且是一个比较重要的性能指标,你懂得。本章会介绍 App 的内存占用、App 内存分析工具、内存泄漏分析、内存持续增长分析等,这里面的内容估计会牵扯到比较多的知识点,任重而道远啊….
  8. 第八章:性能测试:从测试的角度来看流畅性问题,这里会讲一些 性能指标获取(侵入式和非侵入式)性能标准制定竞品分析提 Bug 的标准和流程整机测试方法权威第三方的性能测试方法和标准介绍(绿色联盟、鲁大师、友盟、Bugly 等)性能监控工具开发(比如 Matrix、Koom、Fastbot、UI Automator、内存增长测试等),以及一些软技能:如何区分 Android 系统问题和 App 问题如何与开发和 PM 扯皮(开个玩笑)
  9. 第九章:线上性能监控:上一章讲的是本地性能测试,而这一章会讲线上是如何监控流畅度的,跟线下监控有区别的是,线上监控既要能体现真实的用户体验,又要尽量减少对用户的影响,还需要在发现问题的时候,能及时进行数据上报
  10. 第十章:系统性能优化介绍:App 开发者使用各种方法和黑科技来进行性能监控和性能分析,那么 Android 系统开发者又是如何做的呢?这一章会介绍一些各种厂商的性能优化、AOSP 的性能优化、高通和 MTK 的优化等
  11. 第十一章:高效工作指南:内容暂定,包括但不限于
    1. AOSP 代码编译的必要性和流程
    2. 阅读 AOSP 代码的技巧,比如 cs.android.com、导入 AS、导入 vscode 等、画流程图等
    3. Windows、Linux 、Mac 开发环境推荐、配置命令行等
    4. 工作方式推荐:多写、多记、多总结、多分享

嘴炮输出完毕,万事俱备,只欠大佬来完善内容了…

市面上还有哪些讲性能的书?

讲道理目前市面上的书都有点年代了,倒是掘金社区的 Android 性能优化文章非常多,各种大厂也乐意将他们的内部工具开源,给这些热爱分享小伙伴点个赞,让我们站在巨人的肩膀上前行

我本人看过的几本书

  1. 腾讯 TMQ 专项测试团队出的:《移动 App 性能评测与优化》,2016 年出版,专业性和实战拉满,值得一看,https://item.jd.com/11976603.html 微信读书:有电子书
  2. 邓老师的 《深入理解 Android:Java 虚拟机 ART》,ART 虚拟机的大部头书,对于了解 ART 虚拟机的运行有很大的帮助,App 的不少黑科技都会涉及到虚拟机 https://item.jd.com/12510921.html 微信读书:有电子书
  3. 道格・西勒斯(Doug Sillars)的 《高性能 Android 应用开发》,2016 年出版,英文原版更早一些,算是一个比较早的全方位讲解 Android App 性能的书了,感兴趣的可以收藏一本 https://item.jd.com/11995735.html 微信读书:没有电子书
  4. 腾讯大佬出的:《Android 应用性能优化最佳实践》,2017 年出版,内容也是性能相关 https://item.jd.com/12043655.html 微信读书:有电子书
  5. Brendan Gregg 大师新作:《BPF 之巅:洞悉 Linux 系统和应用性能》,中文版 2020 年出版,大部头工具书,屯之 https://item.jd.com/12769029.html 微信读书:没有电子书
  6. 同样是 Brendan Gregg 的 《性能之巅:洞悉系统、企业与云计算》,中文版 2020 年出版,大部头工具书,搞性能的应该人手一本… https://item.jd.com/12749867.html 微信读书:有电子书
  7. 张绍文的《Android 开发高手课https://time.geekbang.org/column/intro/142 最近重新听的感悟:高手就是高手
  8. 倪朋飞的 Linux 性能优化实践

写在最后

  1. 欢迎大家留言分享自己看过的觉得非常不错的 Android 性能相关的书籍、博客、视频课、官方教程等
  2. 欢迎大家留言分享你们认为一本讲 Android 流畅性的书,应该包含哪些内容
  3. 本文不涉及任何推广,大家放心食用
  4. 博客交流不方便,有疑问的可以在知乎或者微信公众号下面留言,或者直接加我微信(553000664),备注 Blog 即可
    1. 本文知乎地址:https://zhuanlan.zhihu.com/p/423605434
    2. 本文微信公众号地址:https://mp.weixin.qq.com/s/WUGWJx5FRJqXboQ2KKGRwA

关于我 && 博客

  1. 关于我 , 非常希望和大家一起交流 , 共同进步 .
  2. 博客内容导航
  3. 优秀博客文章记录 - Android 性能优化必知必会

一个人可以走的更快 , 一群人可以走的更远
微信扫一扫

CATALOG
  1. 1. 内容介绍
  2. 2. 我认为一本讲流畅性的书,应该有什么?
  3. 3. 市面上还有哪些讲性能的书?
  4. 4. 写在最后
  5. 5. 关于我 && 博客