一、工具准备

系统环境:Windows 10 64bit, Python3.6

1.minicap

Minicap提供了一个socket interface,用于从Android设备中流式传输实时屏幕捕获数据。Minicap与adb不同,stf通过调用Android的API,效率极大提升(后续研究)。Minicap用来替代原生的adb screencap,提供了更好的实时性,主流配置下FPS轻松达到30-40,且Android版本越高,配置越高,FPS理论上达到更大。

2.minitoucp

Minitouch提供了一个socket interface,用于在Android设备上触发多点触控事件和手势。
用来替代adb shell keyevent和adb shell input等,实时性很好。
由于minicap.so调用了一些私有API,所以必须依赖AOSP源码环境编译。
获取源码,准备编译:

git clone https://github.com/openstf/minicap.git
git clone https://github.com/openstf/minitouch.git

3.NDK和adb tools

minicap和minitouch分别提供了1个socket interface,通过socket与PC通讯。
工具是用NDK开发的,属于Android的底层开发,该工具分为两个部分,一个是动态连接库.so文件,一个是minicap可执行文件。但不是通用的,因为CPU架构的不同分为不同的版本文件,STF提供的minicap文件根据CPU 的ABI分为如下4种:arm64-v8a、armeabi-v7a,x86,x86_64 架构。而minicap.so文件在这个基础上还要分为不同的sdk版本。
所以我们需要下载NDKADB tools

1. 解压
2. 添加NDK和ADB tools目录到Path环境目录下

二、编译

1.minicap

进入minicap目录,cmd执行

ndk-build

2.minitouch

进入minitouch目录,cmd执行

ndk-build

tips:(非必需步骤)
ndk编译时默认是单线程。在多核的情况下,可以通过加线程数量参数加快编译速度。
修改ndk目录下的ndk-build.cmd,将

"%NDK_ROOT%prebuilt/%NDK_WIN_HOST%/bin/make.exe" -f "%NDK_ROOT%build/core/build-local.mk" SHELL=cmd %*

改为(-j 8,8根据你的cpu修改)

"%NDK_ROOT%prebuilt/%NDK_WIN_HOST%/bin/make.exe" -j 8 -f "%NDK_ROOT%build/core/build-local.mk" SHELL=cmd %*

此时你已经得到所有minicap、minitouch二进制文件和minicap.so动态链接库,实际使用时仅需copy对应你的设备的cpu与Android版本的minicap、minitouch、minicap.so三个文件到手机即可。
我们把挑选cpu与Android版本对应文件和拷贝至手机的步骤直接写入python脚本中(通过adb shell push实现),进一步实现自动化,感兴趣请看后面的源码

三、实现

git clone https://github.com/Zhao-hangtian/adbmirror-branch

看readme文件,
enjoy your self!

更多参考:
https://testerhome.com/topics/4400
http://blog.sina.com.cn/s/blog_aed19c1f0102we03.html
https://www.jianshu.com/p/fee5b31774be
https://www.cnblogs.com/kissfu/p/6344084.html
https://blog.csdn.net/kyotrue/article/details/78657578
⭐https://testerhome.com/topics/11507

最后修改日期: 2019年2月1日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。