Android性能优化难题一文总结
Posted 上马定江山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android性能优化难题一文总结相关的知识,希望对你有一定的参考价值。
前言
现在都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?作为一名android高级工程师或者架构师,我们看待问题的角度不能单一而是要学会从多个维度来仔细考量 ,这样才能更全面的认识以及解决问题!下文会从多个视角来学习性能优化工作当中 我们可能会遇到哪些难题!
性能优化有哪些难题
难点一:性能表现差
性能优化的第一个难题是APP的自身性能表现差,这是从APP自身性能使用来说的:
- 第一种问题是用户可以直观的感受到,比如说:APP启动慢、卡顿、丢桢等,用户肯定会报怨手机太卡了!
- 第二种问题是用户虽然不会直观的感受到,比如说:内存占用高,抖动频繁,但是这种隐藏的问题可能会导致内存溢出,从而影响程序的正常运行
- 此外性能问题还有应用耗电、网络请求慢、崩溃率和异常率高
其中崩溃率和异常率属于稳定性的范畴,崩溃率比较好理解需要注意的是应用异常率。异常是指APP不能正常的作出反应,比如说我们点击了一个按钮,它并没有正确的跳转到下一个界面,此时APP并没有崩溃,但是同样它也处于不可用的状态,带来的非常不好的用户体验。
难点二:线上问题无法排查
线上问题排查困难对于很多Android程序员来说就是个烧(tuo)脑(fa)的问题,下面来说说线上问题排查的主要难点!
性能优化的第一个难题是线上问题无从排查,这是从排查问题的视角来说, 通俗来讲的是耽误线上出现了异常时我们如何才能够保证较高的异常感知灵敏度。
当我们发布了一个新版本或者上线了一个新功能没有用户反馈,我们也千万不能够认为已经成功上线了,因为仅仅依赖于用户反馈这个单一的渠道非常容易错过异常出现的第一时间,等到有用户不堪忍受来反馈造成的损失已经太大,而且也已经错过最好的处理时机。
线上问题排查的第二个难点:如何复原案发现场, 假设用户给了我们反馈但是此刻我们也不能够高兴过早。因为用户有反馈不代表我们一定能够复现,很多问题并不是所有用户都会发生,发生了这种特殊问题的用户,他可能是使用了特殊的设备或者是他的账户处于特定的异常状态。等到我们在公司用自己的设备和自己的账户去复现他的问题的时候很有可能会因为条件不足而无法复现,自然也就没有办法快速解决。
线上问题的第三个难点:如何快速修复成功, 针对线上问题而言时间就是生命必须尽早的成功修复。在我们修复之后,为了保险起见一般都会开放部分小流量用户或者找特定用户来进行测试。但是如果说我们的手段是连续用户重新安装然后等待结果,这样的解决方案它的周期实在是太长,而且多次下来后用户也会有些反感,最终可能找不到配合你要用户。
难点三:性能优化的长期开销大
性能优化的第三个难题是性能优化的长期开销大,这是从团队管理者的视角来说。如果我们在每个版本当中都需要花费大量的精力来跟踪关于性能的问题,长期来看说团队的资源消耗非常大,团队的产出的也就变少,于是我们就要思考如何才能将问题扼杀在萌芽之中,尽可能的在上线之前将问题解决。
性能优化的长期开销大难点在于性能优化的效果不能够得到长期的保持,我们优化完成了之后的程序,如果没有措施那么很可能在接下来的版本当中会再次到了破坏,出现性能问题还是需要我们优化 ,这样长期的重复肯定会导致开销变大。
总结
通过上文所说性能优化工作当中遇到难题,我们反推也很容易总结出来我们对性能工作优化的要求指标:
- 性能表现好
- 线上问题容易排查
- 长期投入成本小
最后,分享给大家这份腾讯T3大佬汇聚了上百篇业界知名性能优化文章整理的而成的《Android性能优化实战解析》,帮助大家从大厂性能优化项目中吸取更多经验,提升自身的技能知识。
这份学习手册一共720页,六十一个章节,因此在下文我将着重介绍几个一线互联网大厂的项目给大家:
需要完整版的小伙伴们微信扫描下方二维码免费获取:
一线互联大厂性能优化实战
腾讯团队:
- 腾讯Bugly:对字符串匹配算法的一点理解
- 全民k歌适配arm64-v8a方案
- 全民K歌内存篇2——虚拟内存浅析
- 全民K歌内存篇1——线上监控与综合治理
- 腾讯 Bugly:动态下发 so 库在 Android APK 安装包瘦身方面的应用
爱奇艺团队
- 爱奇艺:安卓APP崩溃捕获方案——xCrash
- Android篇 | 爱奇艺APP启动优化实践分享
- 二维码扫描优化及爱奇艺APP的实践
字节团队:
- 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
- 字节跳动:二维码扫描优化
- 头条 | 深入理解gradle框架之二:依赖实现分析
- 头条| 开源 | Scene:Android 开源页面导航和组合框架
- 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%
- 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%(二)
- 抖音包大小优化-资源优化
- 今日头条 ANR 优化实践系列 - 设计原理及影响因素
- 今日头条 ANR 优化实践系列 - 监控工具与分析思路
- 今日头条 Android ‘秒’ 级编译速度优化
- 抖音 Android 性能优化系列:Java 内存优化篇
百度团队:
- 百度APP技术:Android H5首屏优化实践
- 百度APP组件化之路
- 百度APP网络深度优化系列《三》弱网优化
阿里团队
- 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
- 支付宝 APP 构建优化解析:通过安装包重排布优化 Android 端启动性能
- 支付宝 APP 构建优化解析:Android 包大小极致压缩
- 闲鱼如何在2个月内实现Android启动速度翻倍的?
- 解决支付宝包体积优化的遗留问题:运行时获取dexpc
携程:
- 携程:从智行 Android 项目看组件化架构实践
- 携程Android 10适配踩坑指南
网易
- 网易传媒技术团队:AOP技术在客户端的应用与实践
- 网易大数据|互联网产品决策秘笈: AB测试
- 网易新闻构建优化:如何让你的构建速度“势如闪电”?
- 网易新闻客户端 H5 秒开优化
由于内容过多,在这里就不做全部的展示,以上就是《Android性能优化实战解析》的大概目录以及部分内容截图。
最后
现在的时代背景下,初级移动开发人员很 “卷”,但优秀的高级工程师又比较稀缺,没有任何核心技能的工程师随时可能被“优化”掉。一定要打造自己的技术壁垒,让自己做到无可替代。
大家也没必要太过焦虑,找到适合自己的终身学习的方式以及那些中短期内不太会变的底层逻辑、跟随时代跳动的频率,去不断地迭代演进自己就好了。
需要完整版《Android性能优化实战解析》的小伙伴们微信扫描下方二维码免费获取:
以上是关于Android性能优化难题一文总结的主要内容,如果未能解决你的问题,请参考以下文章