群控实现的方式我了解的大体有两种(你的系统也可以兼备)

  • 方案一:基于ADB+集线器+AutoJS+QtScrcpy,依赖ADB和AutoJs的能力,实现基本ADB指令的下发,可指定设备
  • 方案二:基于AutoJS+WebSocket+QtScrcpy,依赖无障碍+网络互联能力,实现脚本指令的下发

注意点:
1.整体缺乏对中文的支持,一切命名尽量英文为宜,否则可能无法执行(或者你配置了中文支持)
2.开启USB调试(不同机型可能还会要求SIM卡等,才能打开完整的USB调试功能,请注意)
3.开启无障碍服务(开启悬浮框权限、后台弹出权限、安装未知应用权限等)

方案一:基于ADB+AutoJS+QtScrcpy

1.查看设备的接入

adb deivices

2.指定设备执行操作

adb -s [deviceId] ....

3.ADB基础指令

基础指令大全,协助你执行单个基础操作

基本用法
命令语法
为命令指定目标设备
启动/停止
查看 adb 版本
以 root 权限运行 adbd
指定 adb server 的网络端口
设备连接管理
查询已连接设备/模拟器
USB 连接
无线连接(Android11 及以上)
无线连接(需要借助 USB 线)
无线连接(无需借助 USB 线)
应用管理
查看应用列表
所有应用
系统应用
第三方应用
包名包含某字符串的应用
安装 APK
卸载应用
清除应用数据与缓存
查看前台 Activity
查看正在运行的 Services
查看应用详细信息
查看应用安装路径
与应用交互
启动应用/ 调起 Activity
调起 Service
停止 Service
发送广播
强制停止应用
收紧内存
文件管理
复制设备里的文件到电脑
复制电脑里的文件到设备
模拟按键/输入
电源键
菜单键
HOME 键
返回键
音量控制
媒体控制
点亮/熄灭屏幕
滑动解锁
输入文本
查看日志
Android 日志
按级别过滤日志
按 tag 和级别过滤日志
日志格式
清空日志
内核日志
查看设备信息
型号
电池状况
屏幕分辨率
屏幕密度
显示屏参数
android_id
IMEI
Android 系统版本
IP 地址
Mac 地址
CPU 信息
内存信息
更多硬件与系统属性
修改设置
分辨率
屏幕密度
显示区域
关闭 USB 调试模式
允许/禁止访问非 SDK API
状态栏和导航栏的显示隐藏
实用功能
屏幕截图
录制屏幕
重新挂载 system 分区为可写
查看连接过的 WiFi 密码
设置系统日期和时间
重启手机
检测设备是否已 root
使用 Monkey 进行压力测试
开启/关闭 WiFi
刷机相关命令
重启到 Recovery 模式
从 Recovery 重启到 Android
重启到 Fastboot 模式
通过 sideload 更新系统
安全相关命令
启用/禁用 SELinux
启用/禁用 dm_verity
更多 adb shell 命令
查看进程
查看实时资源占用情况
查看进程 UID
其它
常见问题
启动 adb server 失败
com.android.ddmlib.AdbCommandRejectedException
adb 的非官方实现

4.与AutoJS结合

  • AutoJs从4.1开始,就关闭免费版本的使用,开始了45元一次性买入的AutoJsPro,如果有长期使用需求的建议购买(付费版本更为可靠有效)
  • AutoXJs作为AutoJs4.X后换人维护的持续开源版,也可以尝试,目前使用与AutoJs表象一致,可尝试

可使用 adb 进行手机 Autojs 的安装或批量安装:
adb -s [deviceId] install apk在电脑上的路径

  • 使用intent的方式,向手机发送需要执行的JS脚本文件,JS脚本语法见
adb -s [deviceId] shell am start -n org.autojs.autoxjs.v6/org.autojs.autojs.external.open.RunIntentActivity -d file:///storage/emulated/0/Autojs/Test/Test1.js -t text/javascript
  • 以上指令的格式是:adb -s [deviceId] shell am start -n [packageName]/[className] -d [filePathOnPhone] -t text/javascript
  • 其中包名和类名,我这边是使用autoxjs的版本,所以在源代码中找到类名,包名的获取有点周折,我是获取了autoxjs的启动activity的日志,才找到了包名,与源码中对应的包名并不一样,如果不一致就会出现提示你 Activity not exist的问题
  • 对于 AutoJSPro / AutoJs 的版本可以参考包名/类名:org.autojs.autojs/.external.open.RunIntentActivity,因为版本不同,不确定后期会有所变化
  • 针对手机上的JS脚本文件,可以在 Autoxjs 的APP中书写,也可以在电脑上书写后push过去
  • 表面的原理看着像是依赖adb网络调试的端口进行操控的,未实际研究(setprop service.adb.tcp.port 5555)
  • 本人的测试是可以将使用adb指令执行JS文件脚本:打开APP执行自动操作

5.关于投屏与控制

以上就是实现批量控制的思路,对于其他需要页面上实时回传手机画面的:

  • 有使用adb截屏回传的(USB):无额外侵入,但是效率低,如果只是监控级别看一下屏幕是可以尝试的
  • 有集成开源的安卓投屏软件QtScrcpy(WIFI/USB):主打低延迟,能够托管鼠标和键盘,同步手机画面,现在开源、功能挺强、使用人群较多,可以尝试,

方案二:WebSocket+AutoJS+QtScrcpy

  • WebSocket 的方案起源于 VsCode 可以使用 AutoJS 的插件,通过WiFi互联对手机进行 debug
  • 依赖这样的思路,借用 VsCode AutoJS 的连接的实现原理,就可以复刻这样的思路,将本地脚本在手机上进行 debug
  • 同样可以根据websocket的端口指定具体的手机
  • 此外,如果需要同方案一样进行页面投屏与控制,也可以引入QtScrcpy
  • 可供学习的参考项目

从技术角度探索安卓群控实现的基本思路相关推荐

  1. 安卓分辨率_免费的安卓群控1数字云免费安卓群控系统

    免费的强大安卓群控系统 支持Auto.js脚本开发语言 不需要Root权限的JavaScript自动化软件 Auto.js脚本开发文档 https://hyb1996.github.io/AutoJs ...

  2. 如何实现一个安卓群控系统

    两年前的时候我写过一篇关于群控的<搭建stf+minicap实现安卓群控>,不少读者对这篇文章很感兴趣,纷纷私信我一起开发群控系统. 和他们聊过之后才发现压根就不是他们所说的群控,上篇文章 ...

  3. android 群控 网络 adb,安卓群控.sln · 罗金方/结合mini和adb命令,和adb socket实现安卓群控 - Gitee.com...

     Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion ...

  4. android 群控 网络 adb,安卓群控.sln · hhhooo/结合mini和adb命令,和adb socket实现安卓群控 - Gitee.com...

     Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion ...

  5. 930群控服务器虚拟机,安卓群控系统虚拟机版本跟真机版区别

    原标题:安卓群控系统虚拟机版本跟真机版区别 虚拟机版本跟真机版区别 安卓群控真机版: 介绍:真实手机设备(一般叫工作机 目前是一些旧手机 安卓系统不高于10的设备) 缺点:初期就要投入成本.搭设环境比 ...

  6. 搭建stf+minicap实现安卓群控

    网上找了很多的文章,关于怎么搭建stf的,有很多文章只是简单的粘贴复制抖机灵,我猜作者自己也没有搞成功:所以我特开一贴,从小白开始教大家怎么样利用stf+minicap做手机的群控,这里使用的linu ...

  7. 安卓记账APP的开发思路详解

    最近刚完成了一个安卓的记账软件,有JAVA的基础,第一次接触安卓,边学习安卓边做项目,大概花了两个月的时间(别怕,其实只要1个月左右就可以了,前期老去浪),将项目实现了,纵观整个过程,发现安卓的插件是 ...

  8. 【脚下生根】之深度探索安卓OpenGL投影矩阵

    世界变化真快,前段时间windows开发技术热还在如火如荼,web技术就开始来势汹汹,正当web呈现欣欣向荣之际,安卓小机器人,咬过一口的苹果,winPhone开发平台又如闪电般划破了混沌的web世界 ...

  9. 探索安卓中有意义的动画!

    ribot 致力于打造美好且充满意义的用户体验,在这一过程中,动画不可或缺. 在 Droidcon London 听完一场 激励人心的演讲之后, 笔者决定深入研究安卓动画.本文集中展示了其研究结果,希 ...

最新文章

  1. Lync 小技巧-49-Lync 自动备份-批量管理-用户(免费视频)
  2. java循环使用范围_Java循环流程控制语句
  3. php读取excel文件_php读取EXCEL文件 php excelreader读取excel文件
  4. 1.windows网络配置无法上网
  5. 【数据分析】Python :视频网站数据清洗整理和结论研究
  6. kafka的SASL的适用业务场景
  7. 一个简单的Map Iterator性能测试
  8. mongodb mysql资源占用_如何限制mongodb启动时占用过多内存
  9. Kafka的高性能原理
  10. 数据结构 | 链表队列(基本操作及图示)
  11. python汇总json数据_python的json包位置及用法总结
  12. 【论文写作】毕业论文写作时的常见问题
  13. JavaScript实现省市选择功能,jQuery,Json
  14. openproj ubuntu安装及其输入中文变方块乱码解决
  15. Python 安装pytz
  16. 黑马畅购商城06-Elasticsearch
  17. SQL中的DDL、DML、DCL、TCL是什么意思
  18. 水果店做生意不好怎么办,水果店生意不好如何做好
  19. 解救小哈(深度优先,广度优先)
  20. JavaScript 学习笔记 超详细(b站pink老师)

热门文章

  1. 电子地图是利用计算机,电子地图简介 什么是电子地图
  2. 【渝粤题库】陕西师范大学201291 商法学 作业(高起专)
  3. 基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
  4. 操作系统先进先出置换算法(FIFO)实现
  5. 家用是买轿车还是suv_SUV的完整形式是什么?
  6. Linux驱动开发: 网络设备驱动开发
  7. diskgeniuslinux版_硬盘工具DiskGenius v4.5.0 发布
  8. Kinect的介绍和应用【转】
  9. mysql 时差查了13小时_MySQL查询检查如何获取时差
  10. 一步步带你做vue后台管理框架(二)——上手使用 系列教程《一步步带你做vue后台管理框架》第二课