minicap是一个可以远程获取android屏幕画面的开源库,它在低版本的android系统上采用截屏的方式获取画面,在4.2以上的android系统上采用创建VirtualDisplay的方式来获取画面、性能大大提高.
https://github.com/openstf/minicap
1. 通过git 克隆minicap 项目
C:\>git clone https://github.com/openstf/minicap.git
Cloning into 'minicap'...
remote: Counting objects: 2229, done.
remote: Total 2229 (delta 0), reused 0 (delta 0), pack-reused 2228 eceiving objects: 100% (2229/2229
Receiving objects: 100% (2229/2229), 2.02 MiB | 6.00 KiB/s, done.
Resolving deltas: 100% (1042/1042), done.
C:\>cd minicap
2. 初始化模块
C:\minicap>git submodule init
Submodule 'libjpeg-turbo' (https://github.com/openstf/android-libjpeg-turbo.git) registered for path
'jni/vendor/libjpeg-turbo'
3. 更新模块
C:\minicap>git submodule update
Cloning into 'C:/minicap/jni/vendor/libjpeg-turbo'...
Submodule path 'jni/vendor/libjpeg-turbo': checked out '46be77d8b8287ea3687da6ab245032929363515b'
4. 通过adb 命令查看手机的CUP 架构及SDK版本
ABI架构---> adb shell getprop ro.product.cpu.abi
SDK版本---> adb shell getprop ro.build.version.sdk
5. 根据手机SDK 平台及cup架构,使用ndk 进行编译
C:\minicap>E:\androidStudioSDK\ndk-bundle\ndk-build.cmd APP_PLATFORM=android-25 APP_ABI=armeabi-v7a
[armeabi-v7a] Compile++ thumb: minicap-shared <= Minicap.cpp
[armeabi-v7a] SharedLibrary : minicap.so
[armeabi-v7a] Compile++ thumb: minicap-common <= JpgEncoder.cpp
[armeabi-v7a] Compile++ thumb: minicap-common <= SimpleServer.cpp
[armeabi-v7a] Compile++ thumb: minicap-common <= minicap.cpp
[armeabi-v7a] StaticLibrary : libminicap-common.a
[armeabi-v7a] Compile thumb : jpeg-turbo <= jsimd_arm.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jsimd_arm_neon.S
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcapimin.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcapistd.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jccoefct.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jccolor.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcdctmgr.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jchuff.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcinit.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcmainct.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcmarker.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcmaster.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcomapi.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcparam.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcphuff.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcprepct.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcsample.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jctrans.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdapimin.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdapistd.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdatadst.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdatasrc.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdcoefct.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdcolor.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jddctmgr.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdhuff.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdinput.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdmainct.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdmarker.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdmaster.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdmerge.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdphuff.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdpostct.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdsample.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdtrans.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jerror.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jfdctflt.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jfdctfst.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jfdctint.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jidctflt.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jidctfst.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jidctint.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jidctred.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jquant1.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jquant2.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jutils.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jmemmgr.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jmemnobs.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jaricom.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jcarith.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdarith.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= turbojpeg.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= transupp.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdatadst-tj.c
[armeabi-v7a] Compile thumb : jpeg-turbo <= jdatasrc-tj.c
[armeabi-v7a] StaticLibrary : libjpeg-turbo.a
[armeabi-v7a] Executable : minicap
[armeabi-v7a] Install : minicap => libs/armeabi-v7a/minicap
[armeabi-v7a] Executable : minicap-nopie
[armeabi-v7a] Install : minicap-nopie => libs/armeabi-v7a/minicap-nopie
[armeabi-v7a] Install : minicap.so => libs/armeabi-v7a/minicap.so
C:\minicap>
6.拷贝编译生成的文件到手机
adb push libs/$ABI/minicap /data/local/tmp/
adb push jni/minicap-shared/aosp/libs/android-$SDK/$ABI/minicap.so /data/local/tmp/
7. 修改权限
adb shell chmod 777 /data/local/tmp/minicap
adb shell chmod 777 /data/local/tmp/minicap.so
8. 进行手机端口映射
adb forward tcp:1717 localabstract:minicap
9.设置显示屏幕尺寸
通过adb 命令获取屏幕尺寸 adb shell wm size
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0
// 执行以上命令后不要关掉命令行窗口
10. 运行node.js程序
1.进入 C:\minicap\example 目录后,开启命令行,安装websocket 组件
npm install -g ws
npm install -g express
2. 安装完成组件后,设置path
set NODE_PATH=C:\Users\Administrator\AppData\Roaming\npm\node_modules
3.运行程序
node app.js
ip 及端口修改在 app.js index.html