前言
Android 稳定性优化是一个需要长期投入,持续运营和维护的一个过程,不仅深入探讨了 Java Crash、Native Crash 和 ANR 的解决流程及方案,还分析了其内部实现原理和监控流程。本文对稳定性优化方面的知识做了一个全面总结,主要内容如下:
如何提升App的稳定性
一般性的App能接触到稳定性的需求其实并不多,只有大型的处于稳定运营期的App才会重视App的稳定性,稳定性实际上是一个大问题,一个稳定的产品才能够保证用户的留存率,所以稳定性是质量体系中最基本也是最关键的一环:
- 稳定性是大问题,Crash是P0优先级:对于用户来说很难容忍你的应用发生崩溃。
- 稳定性可优化的面很广:不仅仅是指崩溃,像卡顿、耗电等也属于稳定性优化的范畴,对于移动端高可用这个标准来说,性能优化只是高可用的一部分,还有一部分就是应用业务流程功能上的可用。
稳定性维度
- Crash维度:一般会将Crash单独作为一项重要指标进行突破,最常见的统计指标就是Crash率,后面会说到。
- 性能维度:启动速度、内存、卡顿、流量、电量等等,在解决应用的Crash之后,就应该着手保障性能体系的稳定。
- 业务高可用维度:业务层面的高可用是相当关键的一步,需要使用多种手段去保障App业务的主流程及核心路径的可用性。
稳定性优化概述
如果App到了线上才发现异常,其实已经造成了损失,所以稳定性优化重点在于预防
- 重在预防、监控必不可少:从开发到测试到发布上线运维这些各个阶段都需要预防异常的发生,或者说要将发生异常造成的损失降到最低,用最小的代价暴露最多的问题,同时监控也是必不可少的一步,需要拥有一定的监控手段来更加灵敏的发现问题。
- 思考更深一层、重视隐含信息:比如你发现了一个崩溃,但是你不能简单的只看这一个崩溃,要考虑这个崩溃是不是在其他地方也有同样或者类似的,如果有就考虑是否统一处理,今后该如何预防,总结经验。
- 长效保持需要科学流程:在项目的每一个阶段建立完善的相关规范,保证长效的优化效果。
在这里给大家免费分享一份《360°全方位Android性能优化解析》,这份学习手册将会带领大家一步一步深入探索Android的性能优化,让产品的性能从各个方面得到提升,希望大家喜欢。
这份资料一共有721页,4个大点,25个小章节,不仅仅有详细的底层原理的解析,还有专门的实践案例!文末直接领取
第一章 设计思想与代码质量优化
1.六大原则
- 单一职责原则
- 里氏替换原则
- 依赖倒转原则
- 接口隔离原则
- ……
2.设计模式
第二章 程序性能优化
1.启动速度与执行效率优化
- 冷启动和热启动解析
- APP 启动黑白屏解决办法
- APP 卡顿问题分析及解决方案
- 启动速度与执行效率优化之 StrictMode
- ……
2.布局检测与优化
3.内存优化
- 内存抖动和内存泄漏
- 内存大户
- Bitmap 内存优化
- Profile 内存监测工具
- Mat 大对象与泄漏检测
- 耗电优化
- 网络传输与数据存储优化网络传输与数据存储优化
- APK 大小优化
- 屏幕适配
- ……
4.耗电优化
- Doze&Standby
- Battery Historian
- JobScheduler
- WorkManager
5.网络传输与数据存储优化
- google 序列化工具 protobuf
- 7z 极限压缩
- ……
6.APK 大小优化
7.屏幕适配
进行适配的原理
屏幕分辨率限定符与 smallestWidth 限定符适配原理
为什么选择 smallestWidth 限定符适配
怎么适配其他 module
常见问题处理
…
8.OOM 问题原理解析
- adj 内存管理机制
- JVM 内存回收机制与 GC 算法解析
- 生命周期相关问题总结
- Bitmap 压缩方案总结
- ……
9.ANR 问题解析
- AMS 系统时间调节原理
- 程序等待原理分析
- ANR 问题解决方案
- ……
10.Crash 监控方案
- Java 层监控方案
- Nativie 层监控方案
- ……
第三章 开发效率优化
1.分布式版本控制系统 Git
- 企业高效持续集成平台场景介绍
- GIT 分布式版本控制系统
- GIT 分支管理
- ……
2.自动化构建系统 Gradle:
- Gradle 与 Android 插件:gradle 与 android gradle 插件的关系、Gradle Transform API 的基本使用……
- Gradle Transform API 的基本使用:什么是 Transform、Transform 的使用场景、Transform API 学习、输入的类型……
- 自定义插件开发:Gradle 插件简介、开始准备、实践、自定义 Gradle 插件、buildSrc 模块方式……
- 插件实战:多渠道打包、发版自动钉钉……