minicap 是什么?
minicap 是开源项目 STF 的一个可用于实时查看屏幕视图的工具,视图刷新速度可以达到 30-40 FPS
由于 SDK 不同,CPU 架构不同,需要根据自己型号的设备自己编译,但是不要怕,编译和操作很简单,但需要点儿执行力
准备工作(以下在 windows 64 位机上进行的操作)
- 下载 Android NDK(我使用的版本是经过验证可行的版本)
NDK r13 windows 64bit - 下载 nodejs
nodejs - 将 minicap 源码 git clone 到本地(路径不要带空格和中文)
minicap 源码路径 - 更新 jpeg-turbo 库
在 minicap 根目录下执行
git submodule init
git submodule update
如果这一步执行失败了,那么手动下载此库
jpeg-turbo
并将下载的目录下 jni/vendor/libjpeg-turbo 拷贝到 minicap/jni/vendor 下
- 修改 minicap/jni/Application.mk
// 注释掉这一行
#NDK_TOOLCHAIN_VERSION := 4.9
// 修改这一行
APP_STL := c++_static
开始编译
在 minicap 目录下执行(环境变量要记得先配好 ~~~)
该命令会将 minicap 支持的 CPU 平台版本全部编译出来
// 这条指令编译出来的仍然可以在 SDK=20 的设备上跑
ndk-build.cmd APP_PLATFORM=android-27 PLATFORM_SDK_VERSION=27
编译很快,4个版本编译花了 1 分钟
开始运行
编译结束,在 minicap/libs 下可见 4 个版本目录,不知道自己设备的 ABI 通过以下命令查询
adb shell getprop ro.product.cpu.abi
将文件 push 到设备中
adb push minicap/libs/arm64-v8a/minicap /data/local/tmp
// 注意这里 push 的是预置的 so 文件,根据自己设备 SDK LEVEL 选择对应目录下的
adb push minicap/jni/minicap-shared/aosp/libs/android-27/arm64-v8a/minicap.so /data/local/tmp
修改文件执行权限
adb shell chmod 777 /data/local/tmp/minicap*
运行 minicap
// 获取屏幕分辨率
adb shell wm size
// 运行可执行文件,1920x1080 为屏幕分辨率
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1920x1080@1920x1080/0
执行成功~
本地查看实时视图
1、给 nodejs 设置环境变量,然后切换到目录 minicap/example
下载 nodejs 项目依赖库
npm install ws
npm install express
检查 example 目录下是否存在 node_modules 目录
如果不存在,则在安装 nodejs 的目录下查找,并将 node_modules 拷贝过来
里面应存在 ws 和 express 目录
2、将本地端口和设备端口进行转发
adb forward tcp:1717 localabstract:minicap
3、启动 nodejs 项目
// minicap/example 目录下执行
node app.js
提示 Listening on port 9002 表示成功
4、浏览器打开
http://localhost:9002
此时操作设备,画面几乎是实时刷新到页面,非常快的有木有!~~~