接下来手把手教你实现这样的效果。
minicap是一个可以远程获取android屏幕画面的开源库,它在低版本的Android系统上采用截屏的方式获取画面,在Android4.2以上系统上采用创建VirtualDisplay的方式来获取画面、性能大大提高。 minicap的核心功能都在minicap.so中实现,如果要进行二次开发直接引用即可。
git clone https://github.com/openstf/minicap.git cd minicap git submodule init // 初始化jni/vendor/libjpeg-turbo子仓库配置 git submodule update // 更新jni/vendor/libjpeg-turbo子仓库代码
minicap |-example 简单的示例客户端,连接minicap服务端,转换为web显示 |-jni 源代码,minicap为纯c/c++ | |-minicap 简单的示例服务端,实现将捕获到的帧通过网络传输的功能 | |-minicap-shared 核心功能库,实现捕获画面、并通知listener的功能 | | |-aosp 实际实现 | | |-libs 已经编译好的so库 | | |-android-xx 对应API版本为xx的so库,实现方法有所不同 | | |-src 源代码 | | |-mock 空实现 | |-vendor 依赖的第三方库 | | |-libs 编译后的输出目录
1) 下载安装adb
2) 在环境变量配置中添加adb路径,按键Windows+R打开运行,输入sysdm.cpl,回车,弹出系统属性对话框 在高级==》环境变量==》系统变量==》path,添加adb可执行文件的文件夹路径。
需要手机打开调试者模式,打开 设置==>开发人员选项==>USB调试,打开即可。开发人员选项在Android4.2以下,可以直接看到。 在Android 4.2及以上版本中默认是隐藏的。打开开发人员选项的方法是:打开 设置==>关于手机,连续点击版本号7次即可。
首次调试,手机会弹出是否允许某台电脑以USB方式调试该手机的问询对话框,勾选允许使用这台计算机进行调试。
然后用adb devices命令,查看已连接的设备。如果设备列表为空,可以尝试一下:1)重新开启USB调试权限 ; 2)撤销USB调试权限重新赋权;3) 重启手机
adb devices
不同的Android
手机使用不同的CPU
,而不同的 CPU
支持不同的指令集,CPU
与指令集的每种组合都有专属的应用二进制接口,即 ABI(全称:ApplicationBinary Interface)
adb shell getprop ro.product.cpu.abi
adb shell getprop ro.build.version.sdk
ndk-build可以通过APP_PLATFORM参数设置目标平台,默认是android-14,这里指定的是android-26(8.0),实际并没有什么影响,因为只有minicap-shared的实现是平台相关的,但我们使用了编译好的库;通过APP_ABI可以指定指令平台,如果不指定默认将编译全部的armeabi-v7a、arm64-v8a、x86、x86_64平台。
执行完毕后,在libs/armeabi-v7a下会生成minicap、minicap.so、minicap-nopie三个文件,实际用到的只有minicap,这里生成的minicap.so是一个空实现。
ndk-build.cmd APP_PLATFORM=android-26 APP_ABI=arm64-v8a
so文件一定用minicap-master\jni\minicap-shared\aosp\libs\android-26\arm64-v8a\minicap.so,cpu架构要匹配.否则会导致与系统不兼容,运行会报错
adb push libs/arm64-v8a/minicap data/local/tmp adb push jni/minicap-shared/aosp/libs/android-26/arm64-v8a/minicap.so data/local/tmp
adb shell chmod 777 data/local/tmp/minicap adb shell chmod 777 data/local/tmp/minicap.so
adb shell wm size
# 测试服务器是否可用 adb shell LD_LIBRARY_PATH=data/local/tmp data/local/tmp/minicap -P 1080x1920@1080x1920/0 -t # 启动服务器 adb shell LD_LIBRARY_PATH=data/local/tmp data/local/tmp/minicap -P 1080x1920@1080x1920/0
adb forward tcp:1717 localabstract:minicap
yarn
node app.js
minicap 源码下载
在Windows下编译与运行minicap
轻轻松松运行起minicap
云真机平台的设计与实现--架构分析