3

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

 2 years ago
source link: https://zhuanlan.zhihu.com/p/423605434
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

写在前面

最近读了一本新书:《打造流畅的 Android App》,链接:

因为书名所以买了这本书,读完之后觉得有必要写一篇文章,让还没有买此书的同学了解一下

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

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

v2-076d1fa13583ee79e93857837dd5583a_720w.jpg

内容介绍

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

  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. 第九章:系统性能优化介绍:App 开发者使用各种方法和黑科技来进行性能监控和性能分析,那么 Android 系统开发者又是如何做的呢?这一章会介绍一些各种厂商的性能优化、AOSP 的性能优化、高通和 MTK 的优化等
  10. 第十章:高效工作指南:内容暂定,包括但不限于
    1. AOSP 代码编译的必要性和流程
    2. 阅读 AOSP 代码的技巧,比如 http://cs.android.com、导入 AS、导入 vscode 等、画流程图等
    3. Windows、Linux 、Mac 开发环境推荐、配置命令行等
    4. 工作方式推荐:多写、多记、多总结、多分享

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

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

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

我本人看过的几本书

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

写在最后

  1. 欢迎大家留言分享自己看过的觉得非常不错的 Android 性能相关的书籍、博客、视频课、官方教程等
  2. 欢迎大家留言分享你们认为一本讲 Android 流畅性的书,应该包含哪些内容
  3. 欢迎大家点赞、分享本文,让更多人参与讨论
  4. 推广一波个人博客,有很多 Android 性能相关的文章

5. 个人微信公众号:AndroidPerformance,欢迎关注,本文微信地址:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK