部分内容采自: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 <http://gnu.org/licenses/gpl.html>
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

  正常的话:此时minicap安卓端的程序已经运行起来了,并且开启了一个socket服务器。

  注意报错(在此处我查了一天,并且发现是应该是minicap本身的bug):

          我的测试机是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
  • 运行node app.js时可能还会报错找不到Module ws,执行一下操作尝试解决:
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

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐