参考:https://zhuanlan.zhihu.com/p/366378837
sudo apt install -y scrcpy
手机端设置
手机端无需安装任何软件,只需开启【开发者选项】-【USB调试】及相关选项,比如我开启了【USB调试、USB调试(安全设置)、无线调试、USB安装】
开启【USB调试】相关选项后,用USB数据线连接电脑与手机,设置连接模式为【传输照片(PTP)】
电脑端启动投屏程序投屏
$ scrcpy
这样就可以在电脑上看到手机屏幕了
adb shell xxx #--- 相当于在手机上运行shell命令【xxx】
adb shell ls /data #--- 查看手机中的root根目录,如果手机未root,则无权限打开
adb shell ls /storage/emulated/0 #--- 查看手机中的文件管理器根目录
adb shell ip route | awk '{print $9}' #--- 查看手机ip
adb shell ss -tnl #--- 查看手机监听端口
adb tcpip 6666 #--- 修改手机监听端口为【6666】
adb connect 192.168.2.16:6666 #--- 通过网络连接到手机
adb devices #--- 查看设备列表
# adb 命令很强大,请自行百度
scrcky #--- 将手机屏幕投屏到电脑屏幕
^_^ kevin@TM1701-b38cbc23:~$ adb shell ls /data #--- 未root,则无权限
ls: /data: Permission denied
^_^ kevin@TM1701-b38cbc23:~$ adb shell ls /storage/emulated/0
好多文件
^_^ kevin@TM1701-b38cbc23:~$ adb shell ip route | awk '{print $9}'
10.23.13.111
192.168.2.16
^_^ kevin@TM1701-b38cbc23:~$ adb devices
List of devices attached
90e714b7 device
192.168.2.16:6666 device
准备工作:
确保可以通过USB投屏后,将手机与电脑连接到同一个局域网的wifi,并设置手机开启【开发者选项】-【无线调试】,将【开发者选项】-【默认USB配置】改为【传输照片(PTP)】,改为【传输文件(MTP)】方式也行。
192.168.2.16 是我手机连接到WiFi时的IP地址
下面的步骤更多是让你知道原理
^_^ kevin@TM1701-b38cbc23:~$ adb shell ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Permission denied
LISTEN 0 0 0.0.0.0:18154 0.0.0.0:*
LISTEN 0 0 0.0.0.0:15552 0.0.0.0:*
LISTEN 0 0 *:61593 *:*
LISTEN 0 0 *:42917 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:38781 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:37479 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:40457 *:*
^_^ kevin@TM1701-b38cbc23:~$ adb tcpip 6666 #--- 修改手机监听端口为【6666】
restarting in TCP mode port: 6666
^_^ kevin@TM1701-b38cbc23:~$ adb shell ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Permission denied
LISTEN 0 0 0.0.0.0:18154 0.0.0.0:*
LISTEN 0 0 0.0.0.0:15552 0.0.0.0:*
LISTEN 0 0 *:61593 *:*
LISTEN 0 0 *:6666 *:*
LISTEN 0 0 *:37583 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:38781 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:37479 *:*
LISTEN 0 0 [::ffff:127.0.0.1]:40457 *:*
# 这里可以看到监听端口已经改(增加)为【6666】
# 【37583】这个可以从开发者选项-无线调试那里看到,干啥用的? 和【6666】啥关系
^_^ kevin@TM1701-b38cbc23:~$ adb connect 192.168.2.16:6666
already connected to 192.168.2.16:6666
# 或者:
^_^ kevin@TM1701-b38cbc23:~$ adb connect 192.168.2.16:37583
already connected to 192.168.2.16:37583
# 可以看到【37583】和【6666】这两个都可以连接,【37583】这个端口是随机,每次启动端口都不一样;【6666】这个增加的,一次修改,永久有效
拔掉SUB数据线,电脑端运行投屏程序即可:
^_^ kevin@TM1701-b38cbc23:~$ scrcpy
每次投屏前,先运行adb connect 192.168.2.16:6666
,然后启动scrcpy
即可。
如果需要重新使用USB数据线连接,需要先断开adb
连接,方法是:
O_O kevin@TM1701-b38cbc23:~$ adb disconnect
disconnected everything`
上个图:
如果【开发者选项】-【默认USB配置】不是【传输照片(PTP)】或【传输文件(MTP)】传输方式,启动scrcpy会出现以下错误:
^_^ kevin@TM1701-b38cbc23:~$ scrcpy
INFO: scrcpy 1.12.1 <https://github.com/Genymobile/scrcpy>
adb: error: failed to get feature set: no devices/emulators found
ERROR: "adb push" returned with value 1
^_^ kevin@TM1701-b38cbc23:~$ scrcpy
INFO: scrcpy 1.12.1 <https://github.com/Genymobile/scrcpy>
adb: error: failed to get feature set: more than one device/emulator
ERROR: "adb push" returned with value 1
你可能有多个多个设备供选择,查看可供选择的设备列表:
^_^ kevin@TM1701-b38cbc23:~$ adb devices
List of devices attached
90e714b7 device
192.168.2.16:6666 device
断开USB数据线,或运行adb disconnect
断开网络连接,就可以了
unable to connect to 192.168.2.16:6666: Connection refused
可能:
A、手机的IP变了,修正IP即可;
B、你的手机重启启动了,他会自动关闭【开发者选项】-【无线调试】。重新开启后,还需重新设置监听端口【6666】
爱你!