Android 性能优化 【总篇:深入浅出】

本篇的主要针对整机性能的一个解读,主要拆解整机性能有哪些小的领域,对应的测试用例是怎么样的,这类问题优化思路是怎么样的。

各家厂商针对性能的测试都设计了不同的用例,因此针对性能测试其实是比较五花八门的。我这里凭着经验来总结一下通常都有哪些场景和性能测试相关。

1、基本功能

基本功能主要是针对某些特定场景下,例如唤醒速度、解锁速度、拍照、拨号等基本功能操作,所耗费的时间。这部分在某些厂家可能缺少相关案例,但是在某些厂家可能又会针对某个场景要求非常高。

因此这里并不打算详细解说这块内容,主要收集了如下几个案例:

|---------|-----------------------------------------|
| 优化项 | 优化措施描述 |
| 解锁速度优化 | 去掉解锁时的动画,直接进入桌面,提升解锁速度 |
| 桌面切换 | 缩短launcher页面切换动画时间,提升页面切换速度。 |
| 应用和通知显示 | 提前处理异步处理InstalledAppCounter耗时大循环,提升显示速度 |
| 电源键唤醒 | 减少lcd背光、TP等不必要的延时 |
| 电源键唤醒 | 将TP resume 过程放入 workqueue,减少 resume 时间 |

这类问题相对来说比较独立,例如解锁速度类问题分析,就需要fw对解锁这块流程有所研究,然后分析在什么阶段耗时;例如桌面切换就应该先给到launcher模块先分析一下代码是否异常。

2、开机时延

开机时延主要侧重方向是系统从按电源开机,到进入lancher界面,所花的时间。当然这个过程涉及到第一次开机,和非第一次开机等不同场景。虽然场景不一样,但是他们的分析思路都是一样的。Tinno的基础测试用例报告如下:

主要优化思路:减少启动项、异步加载、优化流程的执行耗时;

很多因素都会影响开机速度:

  • Debug日志较多耗时:删除debug日志、关闭UART日志
  • Dexopt应用太多耗时:跳过某些dexopt耗时特别多的应用
  • Preloadclass比较慢:精简preloadclass和异步加载class
  • 首次开机优化耗时:APK预编译

针对如上原因存在如下策略:

  • 删除开机过程中不需要的调试日志
  • 关闭串口日志
  • 首次开机跳过某些应用的预编译优化
  • 异步加载一些java类

详细细节参考

3、开机RAM/ROM

开机RAM是指的系统开机之后,RAM占用多少,可用RAM是多少,ROM占用给多少,可用ROM多少,这类问题需要我们使用一些基本命令来调试RAM/ROM。除此之外还需要我们对已占用的RAM/ROM进行拆分和澄清:

  • 已占用的RAM进行拆分:通常是查看所有进程包括内核占用内存的情况
  • 已占用的ROM进行拆分:通常是各个分区表的配置和各个分区占用空间的情况

4、系统跑分

跑分测试主要是针对CPU/GPU/MEM/UX等进行跑分,针对CPU/GPU跑分通常使用安兔兔等APK,关于MEM主要是对RAM/ROM读写相关测试,通常使用Benchmark或者FLASH等APK,UX一般使用3D等APK。

Tinno针对系统跑分的测试报告如下:

5、应用启动

6、滑动卡帧

7、游戏性能

相关推荐
古法安卓5 小时前
Android-Direct Boot 阶段与 getFilesDir() 路径变更问题深度分析
android·java·android studio
阿巴斯甜5 小时前
Android Studio Detekt 使用
android
杉氧5 小时前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
Super 含6 小时前
Android 包体积优化(一):APK 到底大在哪里?从 APK 结构到体积分析
android·ide·vscode
Super 含7 小时前
Android 包体积优化(四):深入 ReDex——StripDebugInfo、InterDex 与 DEX 重排
android
安卓与AI研习社7 小时前
主线程明明是空闲的,为什么仍然 ANR?3 个真实 Trace 的证据链复盘
android
恋猫de小郭8 小时前
Dart 3.13 大更新,感觉比 Flutter 更带劲
android·前端·flutter
大锅盖19 小时前
HarmonyOS 6.1.1 ArkWeb:交付门户下载资料前-为什么必须先登记下载代理与来源字段
android·华为·harmonyos
峥嵘life17 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
Kapaseker18 小时前
破坏性更新 - 解读 Jetpack Compose 1.12
android·kotlin