minicap介绍
minicap是开源项目STF(Smartphone Test Farm)中的一个工具,负责屏幕显示。
因为原生的Android截图工具截图十分缓慢,STF自己写了一个工具叫minicap用来替代原生的screencap,这个工具是STF框架的依赖工具之一。
minicap工具是用NDK开发的,属于Android的底层开发,所以该工具分为两个部分,一个是动态连接库.so文件,一个是minicap可执行文件。但不是通用的,因为CPU架构的不同分为不同的版本文件,STF提供的minicap文件根据CPU 的ABI分为如下4种:
arm64-v8a
、armeabi-v7a
,x86
,x86_64
架构。而minicap.so文件在这个基础上还要分为不同的sdk版本。
这里提供一下Android 9到Android-27版本的支持文件的下载:minicap资源
大家也可以到github上自行下载:https://github.com/openstf/minicap
minicap的使用
用了上面的资源文件,我们还需要将相应的文件push到手机并修改权限。
传统方法请参见博客https://blog.csdn.net/itfootball/article/details/47658171,其实我的init.js也和这个博客是一样的,只是编成了脚本,简化了操作~
我在上面的资源包里编写了一个nodejs的脚本,可以自动获取手机的CPU,屏幕尺寸和apiLevel信息,程序运行结果如下:
emmm,,,不放心脚本?那我们再检查一下
minicap运行
好了,之前的准备工作完成了,该运行起来看看啦,输入下面指令检测一下,记得把分辨率改成自己手机的分辨率哦
adb shell LD_LIBRARY_PATH=/data/local/tmp/data/local/tmp/minicap -P 1080x1920@1080x1920/0 -t
如果一切顺利,最后就会得到个‘OK’,具体如下图:
如果很不幸你没有OK,那就检查一下之前的文件有push进手机没,或者权限有没有更改。
好了,既然已经OK了,那我们就运行起来看看吧,输入指令,注意指令和检测的指令只差了个‘-t’哦~
adb shell LD_LIBRARY_PATH=/data/local/tmp/data/local/tmp/minicap -P 1080x1920@1080x1920/0
上面其实是启动了一个socket服务器,我们需要跟该socket服务通信,首先我们要将本地的端口映射到minicap工具上,端口自己随意:
adb forward tcp:1717 localabstract:minicap
然后运行example目录下的app.js,如下图好啦,大功告成,打开浏览器,输入地址localhost:9002,奇迹发生啦~恭喜你成功运行起minicap啦