scrcpy 的安装与使用

1.scrcpy 简介

scacpy 是一个可以将 Android 设备投屏(电脑上可以操作)到电脑上的一个开源工具。

神器官方的项目地址为:https://github.com/Genymobile/scrcpy

无需 root 权限且支持多个平台,可以通过 USB 或者 WiFi 远程操作我们的 Adnroid 设备。

2.scrcpy 安装(mac)

1
brew install scrcpy

3. 手机开发者模式相关设置

(1)打开开发者模式

设置➡️关于手机➡️3 次或者多次点击版本号

(2)打开 USB调试

  • 设置➡️系统和更新➡️开发人员选项➡️ USB调试

  • 设置➡️系统和更新➡️开发人员选项➡️“仅充电”模式下允许 ADB 调试

3. 有线连接投屏

(1)数据线连接电脑

(2)终端输入 adb devices

1
2
3
adb devices
List of devices attached
XPLXC1XXXX0XXXXX device

(3)终端输入 scrcpy

1
scrcpy

可以愉快的通过电脑操作手机,或者操作手机投屏展示了

image-20241002214511072

4. 无线连接投屏

(1)查询手机 ADB 无线 IP

1
2
# 终端输入,暂时不要拔掉连接线
adb shell ip addr show wlan0
1
2
3
# ...
inet 192.168.1.155/24 brd 192.168.1.255 scope global wlan0
# ...

(2)将 USB 连接模式切换到 Wi-Fi 连接模式

1
2
# 通过TCP的方式无线连接,一般用 5555 端口,暂时不要拔掉连接线
adb tcpip 5555

(3)通过无线方式连接

1
adb connect 192.168.1.155:5555

连接成功后提示

1
connected to 192.168.1.155:5555

(4)终端输入 scrcpy

1
scrcpy

可以脱离数据线,愉快的通过电脑操作手机,或者操作手机投屏展示了

image-20241002222133687

(5)多台设备(有线连接)如何使用

①adb 命令查看设备序列号,没有 adb 也可在设置 -> 关于手机 -> 状态信息中查看

1
2
3
4
# adb 命令查看设备序列号,没有 adb 也可在设置->关于手机->状态信息中查看
➜ ~ adb devices
List of devices attached
XXXXXXXXXXX1 device

②使用命令 scrcpy -s 设备序列号

1
scrcpy -s XXXXXXXXXXX1

③重新打开一个终端,重复以上即可启动多台

5.macOS 下优雅的使用

  • 国光大佬的博客下面介绍了一种方法,可以更加优雅的使用 Scrcpy

(1)打开 macOS 的自动操作 app

image-20241002232743206

(2)选择应用程序

image-20241002232924410

(3)找到运行shell脚本

image-20241002235225714

(4)双击运行shell脚本,输入以下命令

1
2
3
4
# adb路径
export PATH="$PATH:/Users/user1/Library/Android/sdk/platform-tools/"
# scrcpy 安装位置,可以使用 brew list scrcpy 获取
/opt/homebrew/Cellar/scrcpy/2.7/bin/scrcpy

(5)点击运行,运行脚本

image-20241003005437856

成功运行

image-20241003001405757

(6)保存为应用程序

  • Ctrl+s 保存

image-20241003001849182

(7)替换应用程序 icons

应用程序中右键该 app

image-20241003003413316

②替换 icons

  • 找到 scrcpy 存放 icons 的位置
1
/opt/homebrew/Cellar/scrcpy/2.7/share/icons/hicolor/256x256/apps/
  • 将 icon 拖入显示简介中的 icon 位置即可替换(截图中已经替换)

image-20241003003945745

6. 批量将所有连接设备按照屏幕大小分开投屏

因为有多台测试机,一个一个启动太慢,所以就写了一个脚本,批量投屏,脚本如下(可以替换步骤 5 的脚本):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash

# adb路径
# export PATH="$PATH:/Users/user1/Library/Android/sdk/platform-tools/"
# scrcpy 安装位置,可以使用 brew list scrcpy 获取
export PATH="$PATH:/opt/homebrew/Cellar/scrcpy/2.7/bin/scrcpy"

# 设备序列号数组
serials=(
"XXXX1"
"XXXX2"
"XXXX3"
"XXXX4"
"XXXX5"
"XXXX6"
)

# 获取屏幕宽度和高度
# screen_info=$(/usr/sbin/system_profiler SPDisplaysDataType | awk -F': ' '/Resolution/ {print $2 "x" $4}')
# screen_width=$(echo $screen_info | cut -d 'x' -f 1)
# screen_height=$(echo $screen_info | cut -d 'x' -f 2)

# 手动设置屏幕宽度和高度
screen_width=1920
screen_height=1080

# 设备数量
device_count=${#serials[@]}

# 计算每个窗口的宽度
window_width=$(( screen_width / device_count ))

# 初始化窗口的X坐标
window_x=0

# 打印初始变量
echo "Screen Width: $screen_width"
echo "Screen Height: $screen_height"
echo "Device Count: $device_count"
echo "Window Width: $window_width"

# 循环创建窗口
for i in "${!serials[@]}"; do
# 构建窗口标题
window_title="测试机$((i + 7))"

# 打印窗口的X坐标和标题
echo "Window X: $window_x"
echo "Window Title: $window_title"

# 构建scrcpy命令 --turn-screen-off
cmd="scrcpy --window-x=$window_x --window-y=0 --window-width=320 --show-touches --window-title=\"$window_title\" -s \"${serials[i]}\""

# 打印即将执行的scrcpy命令
echo "Executing: $cmd"

# 执行scrcpy命令
eval $cmd &

# 窗口的X坐标增加窗口宽度
window_x=$(( window_x + window_width ))

# 暂停2秒
sleep 2
done

效果如下图:

image-20241202143200885

7. 相关参考

https://mobile.sqlsec.com/2/2/#

https://blog.csdn.net/2402_82616859/article/details/139116819