部分内容采自:https://blog.csdn.net/Sunxiaolin2016/article/details/90697555
1、通过git下载minicap源码:
win环境下:git clone https://github.com/openstf/minicap.git
2、micicap项目还依赖于libjpeg-turbo,首先我们需要在minicap引入libjpeg-turbo项目源码:
cd minicap
git submodule init
git submodule update
完成后,可以看到vendor目录下多了一个libjpeg-turbo目录
3、编译指令
在minicap根目录下执行:ndk-build.cmd APP_PLATFORM=android-28 PLATFORM_SDK_VERSION=28
报错:
在这里我想了很久,结果发现还是NDK的版本有问题,我系统默认的一个是最新的22就会报错,我是用AS工具下载的,也许下的不全还是怎地吧。我机子上有三个版本的
22的版本查看是这样的
F:\test\aaa\minicap>ndk-build -version
GNU Make 4.3.90
Built for x86_64-w64-mingw32
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
后来我改为20的,版本查看是这样的
F:\test\aaa\minicap>D:\androidSDK\ndk\20.1.5948944\build\ndk-build -version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-w64-mingw32
编译指令改为:F:\test\aaa\minicap>D:\androidSDK\ndk\20.1.5948944\build\ndk-build.cmd APP_PLATFORM=android-28 PLATFORM_SDK_VERSION=28
编译成功了,根目录下会多一个libs目录
4、.编译报错(文章提到的这两处错误,我看了下我下载的本来就是合要求的,但备注一下):
1.不支持gnustl_static,改成c++_static
修改minicap-master\jni\Application.mk文件 :
#APP_STL := gnustl_static
APP_STL := c++_static
2.GCC不在支持NDK_TOOLCHAIN_VERSION := 4.9,去掉这一行
修改minicap-master\jni\Application.mk文件 :
#NDK_TOOLCHAIN_VERSION := 4.9
5、.编译生成的文件:
编译生成可执行文件和so文件。要主要so文件需要对应不同的CPU的abi类型
可执行文件生成目录:
\minicap-master\libs\arm64-v8a\minicap
so文件一定用下面的目录中的so:
minicap-master\jni\minicap-shared\aosp\libs\android-28\arm64-v8a\minicap.so
我的机器CPU是armeabi-v7a架构的,一定要用这个目录里面的so,否则因为跟系统不匹配导致运行报错。
6、拷贝到目录中
F:\test\aaa\minicap>adb push F:\test\aaa\minicap\libs\armeabi-v7a\minicap /data/
local/tmp
F:\test\aaa\minicap>adb push F:\test\aaa\minicap\jni\minicap-shared\aosp\libs\an
droid-28\armeabi-v7a\minicap.so /data/local/tmp
需要修改minicap 和minicap.so为777的权限:
adb shell chmod 777 /data/local/tmp/minicap*
7、adb命令行运行minicap
注意屏幕的尺寸,获取屏幕尺寸:adb shell wm size
启动minicap
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 720x1520@720x1520/0
我的测试机是Redmi 8A android版本9 sdk版本是28,CPU是armeabi-v7a
报错如下:
后来我找到另一台早期的Redmi 6 Pro android版本8.1,sdk版本27,CPU是 arm64-v8a 机器成功运行起来了。
8、本地的端口映射到minicap工具上,端口随意
新开一个cmd窗口
//local port
adb forward tcp:1717 localabstract:minicap
9、运行nodejs
minicap源码目录中提供了一个example的nodejs程序,可以运行起来查看截图的效果。
node F:\Github\minicap-master\example\example\app.js
运行之前需要安装安卓NodeJs环境:
npm install -g ws
npm install -g express
npm cache clean -f
npm i
npm audit fix
npm audit fix --force
在新的cmd窗口中执行:
node F:\test\aaa\minicap\example\app.js
注意:在启动node上我又遇到了坑,不具典型性,因为不是很了解node:
坑1:我机器上原先有一个node 6点几版本的,一直报ws没有安装
坑2:卸载后,我下载最新版本的node,结果说win7不支持,只能装v12.17.1版本以前的,最后下载了v12.16.1版本
坑3: 下载安装完后直接进行上几步操作,还是报ws没有安装,后来一气之下重装了一次。再按:https://www.cnblogs.com/janfu/p/9887717.html 这篇文档重新做了一次,总算可以了。
8.打开浏览器
http://localhost:9002/
9、总结
使用的命令:
//使用adb命令查看CPU版本架构信息
//CPU Version
adb shell cat /proc/cpuinfo
adb shell cat /system/build.prop
adb shell getprop ro.product.cpu.abi
//OS Version
adb shell getprop ro.build.version.sdk
//Display size
adb shell wm size
adb push F:\Github\minicap-master\libs\arm64-v8a\minicap /data/local/tmp/
adb push F:\Github\minicap-master\jni\minicap-shared\aosp\libs\android-28\arm64-v8a\minicap.so /data/local/tmp/
//chmod
adb shell chmod 777 /data/local/tmp/minicap*
//test minicap is usefull or not
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1920x1080@1920x1080/0 -t
//start minicap
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1920x1080@1920x1080/0
//local port
adb forward tcp:1717 localabstract:minicap
// node js
npm install -g ws
npm install -g express
npm cache clean -f
npm i
npm audit fix
npm audit fix --force
//run js
node F:\Github\minicap-master\example\example\app.js
node app.js
//ndk compile
ndk-build.cmd APP_PLATFORM=android-28
ndk-build.cmd APP_PLATFORM=android-28 PLATFORM_SDK_VERSION=28