Escrcpy命令行批处理:同时控制多台设备

Escrcpy命令行批处理:同时控制多台设备

【免费下载链接】escrcpy 📱 Graphical Scrcpy to display and control Android, devices powered by Electron. | 使用图形化的 Scrcpy 显示和控制您的 Android 设备,由 Electron 驱动。 【免费下载链接】escrcpy 项目地址: https://gitcode.com/gh_mirrors/es/escrcpy

你还在为逐个操作多台Android设备而烦恼吗?Escrcpy的命令行批处理功能让你告别重复劳动,一文掌握多设备同步控制技巧,从此管理10台设备和管理1台设备一样简单!读完本文你将学会:批量镜像多台设备、自定义批处理脚本、设置定时任务自动执行,以及常见场景的自动化解决方案。

多设备管理痛点与解决方案

在移动设备测试、多账号运营或设备监控场景中,开发者和运营人员经常需要同时操作多台Android设备。传统方式下,每台设备都需要单独连接和控制,不仅效率低下,还容易出现操作遗漏。Escrcpy基于Electron框架,通过命令行接口和批处理功能,完美解决了这一痛点。

Escrcpy的多设备管理功能在README-CN.md中被明确列为核心特性,包括"多设备管理、独立配置、自定义备注、配置导入导出"。而CHANGELOG.md显示,从版本迭代中不断优化了批处理能力,如"支持批量启动镜像"、"优化批量操作交互"、"支持批量执行脚本功能"和"支持批量安装应用功能"等关键更新。

命令行批处理基础

核心命令接口

Escrcpy的命令行批处理功能主要通过electron/exposes/scrcpy/index.js实现,其中定义了mirror方法用于启动设备镜像:

async function mirror(
  serial,
  { title, args = '', exec = false, ...options } = {},
) {
  const currentShell = exec ? execShell : shell
  return currentShell(
    `--serial="${serial}" --window-title="${title}" ${args}`,
    options,
  )
}

该方法接受设备序列号(serial)、窗口标题(title)和额外参数(args),通过调用底层scrcpy命令实现设备连接。

多设备镜像启动

要同时控制多台设备,最基础的操作是批量启动镜像。在src/hooks/useMirrorAction/index.js中,invoke方法实现了多设备镜像的批量启动逻辑:

async function invoke(device, { ...options } = {}) {
  const devices = Array.isArray(device) ? device : [device]
  loading.value = true
  
  for (let index = 0; index < devices.length; index++) {
    const item = devices[index]
    const deviceId = item?.id || item
    
    const args = preferenceStore.scrcpyParameter(deviceId, {
      excludes: ['--otg', '--mouse=aoa', '--keyboard=aoa'],
    })
    
    const mirroring = window.scrcpy.mirror(deviceId, {
      title: deviceStore.getLabel(deviceId, 'mirror'),
      args,
      ...options,
    })
    
    await sleep(1 * 1000)
    
    try {
      await mirroring
    } catch (error) {
      console.error('mirror.args', args)
      console.error('mirror.error', error)
    }
  }
  
  loading.value = false
}

这段代码展示了Escrcpy如何循环处理设备列表,为每台设备生成独立配置参数,并添加1秒延迟以避免系统资源竞争。

实战:编写批处理脚本

基本批处理脚本

以下是一个简单的批处理脚本示例,用于同时启动多台设备的镜像:

# 启动设备序列号为123456和abcdef的两台设备镜像
escrcpy-cli mirror --serial=123456 --window-title="设备A" &
escrcpy-cli mirror --serial=abcdef --window-title="设备B" &

带自定义参数的批量启动

如果需要为不同设备设置不同参数(如分辨率、比特率),可以使用:

# 设备A使用720p分辨率和2Mbps比特率
escrcpy-cli mirror --serial=123456 --window-title="设备A" --max-size=1280 --bit-rate=2M &

# 设备B使用1080p分辨率和4Mbps比特率,并开启录制
escrcpy-cli mirror --serial=abcdef --window-title="设备B" --max-size=1920 --bit-rate=4M --record=/home/user/recordings/deviceB.mp4 &

高级批量操作脚本

结合docs/zhHans/guide/operation.md中提到的批量功能,我们可以编写更复杂的脚本,实现批量截图、安装应用等操作:

#!/bin/bash

# 设备列表
DEVICES=("123456" "abcdef" "7890ab")

# 批量截图
for serial in "${DEVICES[@]}"; do
  escrcpy-cli helper --serial=$serial --screenshot=/home/user/screenshots/$serial-$(date +%Y%m%d%H%M%S).png &
done

# 等待截图完成
sleep 5

# 批量安装应用
APK_PATH="/home/user/apps/new-app.apk"
for serial in "${DEVICES[@]}"; do
  escrcpy-cli helper --serial=$serial --install=$APK_PATH &
done

echo "批量操作完成!"

自动化任务设置

Escrcpy支持通过计划任务实现批处理的自动化执行。结合系统的定时任务工具(如Linux的cron、Windows的任务计划程序),可以实现定时批量操作。

Linux cron示例

# 每天早上9点批量启动所有设备镜像
0 9 * * * /home/user/scripts/start-all-mirrors.sh

# 每周五下午5点批量截图并发送报告
0 17 * * 5 /home/user/scripts/weekly-screenshot-report.sh

自动连接脚本

利用Escrcpy的"自动连接设备"特性,可以编写一个监控脚本,当设备连接时自动启动镜像:

#!/bin/bash

# 监控设备连接并自动启动镜像
while true; do
  # 获取已连接设备列表
  DEVICES=$(adb devices | grep -v "List" | grep "device" | cut -f1)
  
  # 对每个设备启动镜像(如果尚未启动)
  for serial in $DEVICES; do
    if ! pgrep -f "scrcpy.*--serial=$serial" > /dev/null; then
      echo "检测到新设备 $serial,启动镜像..."
      escrcpy-cli mirror --serial=$serial --window-title="自动连接-$serial" &
    fi
  done
  
  sleep 10
done

多设备窗口管理

Escrcpy不仅支持命令行批处理,还提供了窗口编排功能,让你可以直观地管理多个设备窗口。README-CN.md中提到的"窗口编排:可视化拖拽界面,精确控制多设备窗口布局,支持自定义位置和尺寸",可以与命令行批处理结合使用。

多设备窗口布局

通过命令行参数可以预设窗口位置和大小:

# 设置窗口位置和大小
escrcpy-cli mirror --serial=123456 --window-title="左侧设备" --window-x=0 --window-y=0 --window-width=800 --window-height=1200 &
escrcpy-cli mirror --serial=abcdef --window-title="右侧设备" --window-x=800 --window-y=0 --window-width=800 --window-height=1200 &

常见问题与解决方案

设备连接不稳定

如果在批处理过程中遇到设备连接不稳定的问题,可以尝试增加设备间的启动延迟:

// 在src/hooks/useMirrorAction/index.js中调整延迟时间
await sleep(2 * 1000) // 将1秒延迟增加到2秒

性能优化

同时控制多台设备时,可能会遇到性能问题。可以通过以下参数优化:

# 降低分辨率和比特率以提高性能
escrcpy-cli mirror --serial=123456 --max-size=800 --bit-rate=1M &

错误处理

在批处理脚本中添加错误处理机制,确保一台设备出错不会影响其他设备:

#!/bin/bash

DEVICES=("123456" "abcdef" "7890ab")
LOG_FILE="/home/user/escrcpy-batch-$(date +%Y%m%d).log"

for serial in "${DEVICES[@]}"; do
  echo "[$(date +%Y-%m-%d\ %H:%M:%S)] 处理设备 $serial" >> $LOG_FILE
  if escrcpy-cli mirror --serial=$serial --window-title="设备-$serial" ; then
    echo "[$(date +%Y-%m-%d\ %H:%M:%S)] 设备 $serial 操作成功" >> $LOG_FILE
  else
    echo "[$(date +%Y-%m-%d\ %H:%M:%S)] 设备 $serial 操作失败" >> $LOG_FILE
  fi
done

总结与进阶

通过Escrcpy的命令行批处理功能,我们可以轻松实现多台Android设备的同时控制。从简单的批量镜像启动,到复杂的定时任务和自动化工作流,Escrcpy提供了灵活而强大的工具集。

要进一步提升批处理能力,可以探索:

  1. 自定义脚本:利用"批量执行脚本功能"实现更复杂的业务逻辑
  2. 配置导入导出:保存和共享设备配置,实现环境一致性
  3. 反向供网:结合Gnirehtet实现多设备网络共享

无论你是移动应用开发者、测试工程师还是多设备管理员,Escrcpy的批处理功能都能显著提高你的工作效率,让多设备管理变得轻而易举。

如果你有更复杂的批处理需求,可以查阅开发文档,了解如何扩展Escrcpy的功能,或者参与项目贡献,分享你的批处理方案。

提示:所有命令行参数可以通过escrcpy-cli --help查看,更多高级用法请参考官方文档。

【免费下载链接】escrcpy 📱 Graphical Scrcpy to display and control Android, devices powered by Electron. | 使用图形化的 Scrcpy 显示和控制您的 Android 设备,由 Electron 驱动。 【免费下载链接】escrcpy 项目地址: https://gitcode.com/gh_mirrors/es/escrcpy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值