近期在自动化测试过工作中接触到截屏的功能,使用Android原生的截图工具实在效率低下,研究了下minicap这个经典工具,和大家分享下学习历程。
minicap
minicap是STF(or Smartphone Test Farm 开源的web远程批量设备管理系统)框架的依赖工具,作为服务端实时向web端传输Android设备的屏幕截屏数据流,已经在github上开源维护了近3年,一直非常活跃,最近更新并适配了Android 8.1,业内应用广泛。测算性能比较好的手机可以达到30-40FPS的截屏速度。
在ZUK Z2 Pro机型上使用原生screencap工具截屏并输出到图像需要4s多,对比minicap则只需要190ms,差距明显。minicap使用了libjpeg-turbo作为编码压缩工具,压缩后的图片体积更小1080P分辨率的手机截图根据色彩丰富度不同一般只需要100k,sceencap则需要2M。
安装使用
minicap是NDK开发的native工具,分为minicap可执行文件和minicap.so库。由于minicap.so调用了一些私有API,所以必须依赖AOSP源码环境编译。minicap可执行文件需要自己编译,如果不想搭建NDK环境编译可以到GitHub上下载(https://github.com/Lukai912/minicap_build)
这里不对minicap做socket配置,只使用其截图功能。如果有需要可以参考(https://github.com/openstf/minicap)。
push文件
查看手机支持的ABI
查看手机SDK版本
然后将对应版本和SDK的可执行文件与so库push到手机中
adb push libs/$ABI/minicap /data/local/tmp/
adb push jni/minicap-shared/aosp/libs/android-$SDK/$ABI/minicap.so /data/local/tmp/
修改minicap可执行文件的可执行权限
chmod 777 /data/local/tmp/minicap
测试工具
执行minicap的参数
-P后面是手机屏幕的分辨率
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 –t
如果有如下显示则表示工具已经安装成功可以使用了
保存截图并pull到手机
附上简单的python脚本
这篇总结了下minicap脱离STF使用的方法,自己在初次使用时遇到一些不便,希望能帮助同学们避免踩坑,更好的集成到现有的测试或开发业务中。下篇会继续分析minicap源码及截图方案对比。
Qtest是360旗下的专业测试团队!
是WEB平台部测试技术平台化、效率化的先锋力量!
领取专属 10元无门槛券
私享最新 技术干货