背景
在性能优化中,有一个apk的安装场景也是各个产品关注的重点指标,测试会对apk的安装时间进行相关竞品的测试对比。

那么作为开发的我们首先要知道如何科学合理的测试出整个apk的安装时间,
下面分享几个性能优化过程中apk的安装时间统计方法。
UI方式进行统计
观察一下安装过程的UI特点
首先在点击安装前会有一个可以点击安卓的dialog弹出

点击这里的install后,在安装时候明显出现了一个安装中进度条

安装完成后,进度条就消失了,变成如下:

所以这里就完全可以,使用老方法高速摄像机拍照整个安装过程,通过卡画面变化的时间点方式进行统计。
Perfetto统计画面变化方法
每次使用照相机拍照方式相对很不方便,测试可以使用这种方式,但是对我们开发这里完全可以使用抓取trace使用Perfetto UI来进行测量。
试想其实从开始安装到安装结束,这个全过程其实显示的界面都是同一个有进度条动画的窗口:
这里我们可以去SurfaceFlinger找到这个窗口的的Buffer,进行时间卡点计算:
专门buffer如下
BufferTX - com.android.packageinstaller/com.android.packageinstaller.InstallInstalling#509
找到后也可以和实际现象完全对应,可以看到在不断上帧,因为进度条在不断的动。

SQL方式进行查询及Slice查看
直接看installSession,installPackages的slice

使用SQL语句查询:
SELECT name, count(*) AS cnt, avg(dur)/1e6 AS avg_ms
FROM slice
WHERE name IN (
'installSession', 'installStage', 'verification',
'installPackages', 'scanPackage', 'copyApk'
)
GROUP BY name
ORDER BY avg_ms DESC;
可以得出下面的结果:
明显可以看出整个install耗费时间为5.3s,核心耗费时间在installPackages这块,耗费时间为4.9s。
总结:
上面已经分享了3-4种的统计apk安装时间的方法,这里作为开发,大家可以首选Perfetto的方式进行统计,然后再找到相关的apk安装的性能瓶颈点进行相关的优化,优化后,再使用同样方式进行查询apk的安装时间。

313

被折叠的 条评论
为什么被折叠?



