最近项目需要使用屏幕截屏,正好了解到minicap,它是开源项目STF(Smartphone Test Farm)中的一个工具,负责屏幕显示。 它的优势很明显:实时截屏;通过socket通信传送截屏数据。
-
源码下载 直接 git clone github.com/openstf/min… 目前已经停止更新 最新的fork地址:github.com/DeviceFarme… 这个上面是持续维护
-
安卓依赖库 依赖于图片库libjpeg-turbo,直接通过git下载
git submodule init
git submodule update
-
通过ndk编译nimicap 获取CPU架构
adb shell getprop ro.product.cpu.abi
获取系统版本
adb shell getprop ro.build.version.sdk
ndk-build.cmd APP_PLATFORM=android-24 APP_ABI=arm64-v8a
APP_PLATFORM为系统版本 APP_ABI为CPU架构 ndk-build APP_PLATFORM=android-30 PLATFORM_SDK_VERSION=30
- 编译得到动态库,并push到安卓手机
push minicap /data/local/tmp/
push minicap.so /data/local/tmp/
- 运行minicap
//start minicap
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x2340@1080x2340/0
其中1080*2340 就是你手机的分辨率
- 本地的端口映射到minicap工具上,端口随意
adb forward tcp:1717 localabstract:minicap
8.运行nodejs minicap源码里面有example/文件夹下就是一个minicap提供的测试服务,由node.js搭建的服务端
所以启动需要本地有node.js环境,具体实现大概为开启socket连接,监听1717端口,然后再开一个websocket把监听到数据发给前端页面. 安装依赖的ws和 express模块后,启动
启动方式为:
node app.js PORD=9002
打开网址 http://localhost:9002/ 可以看到投屏