常见问题
以下是常见报告的问题及其状态。
如果您遇到任何错误,第一步是升级到最新版本。
adb
和 USB 问题
scrcpy
通过执行 adb
命令来初始化与设备的连接。如果 adb
失败,则 scrcpy
将无法工作。
这通常不是 scrcpy 的bug,而是您环境中的问题。
adb
未找到
您需要从 PATH
中访问 adb
。
在 Windows 上,当前目录位于您的 PATH
中,且 adb.exe
包含在版本中,因此应该可以即插即用。
设备未检测到
错误:找不到任何 ADB 设备
请检查您是否正确启用了 adb 调试。
您的设备必须能够被 adb
检测到:
adb devices
如果您的设备未检测到,请您可能需要一些 [驱动程序](在 Windows 上)。有一个单独的 Google 设备的 USB 驱动程序。
设备未授权
错误:设备未授权: 错误: --> (usb) 0123456789abcdef 未授权 错误:A 弹出窗口应在设备上请求授权。
连接时,设备上应打开一个弹出窗口。您必须授权 USB 调试。
如果没有打开,请检查 stackoverflow。
连接了多个设备
如果连接了多个设备,您将遇到此错误:
错误:多个 (2) ADB 设备: 错误: --> (usb) 0123456789abcdef 设备 Nexus_5 错误: --> (tcpip) 192.168.1.5:5555 设备 GM1913 错误:通过 -s (--serial),-d (--select-usb) 或 -e (--select-tcpip) 选择设备
在这种情况下,您可以提供您想要镜像的设备标识符:
scrcpy -s 0123456789abcdef
或者请求单个 USB(或 TCP/IP)设备:
scrcpy -d # USB 设备
scrcpy -e # TCP/IP 设备
请注意,如果您的设备通过 TCP/IP 连接,您可能会收到此消息:
adb: 错误:多个设备/模拟器 错误:"adb reverse" 返回值为 1 警告:'adb reverse' 失败,回退到 'adb forward'
这是预期的(由于旧版 Android 的 bug,请参见 #5),但在这种情况下,scrcpy
回退到另一种方法,应该可以正常工作。
adb
版本冲突
adb 服务器版本 (41) 与这个客户端 (39) 不匹配;杀死...
当您同时使用几个 adb
版本时,会出现此错误。您必须找到使用不同 adb
版本的程序,并且在每个地方都使用相同的 adb
版本。
您可以在其他程序中覆盖 adb
二进制文件,或者通过设置 ADB
环境变量让 scrcpy 使用特定的 adb
二进制文件:
# 在 bash 中
export ADB=/path/to/your/adb
scrcpy
:: 在 cmd 中
set ADB=C:\path\to\your\adb.exe
scrcpy
# 在 PowerShell 中
$env:ADB = 'C:\path\to\your\adb.exe'
scrcpy
设备断开
如果 scrcpy 以“设备已断开”的警告停止运行,则 adb
连接已关闭。
尝试使用另一条 USB 线或将其插入另一个 USB 端口。请参见 #281 和 #283。
Windows 上的 OTG 问题
在 Windows 上,如果 scrcpy --otg
(或 --keyboard=aoa
/--mouse=aoa
)导致:
错误:找不到任何 USB 设备
(或者只有无关的 USB 设备被检测到),可能是驱动程序问题。
控制问题
鼠标和键盘不起作用
在某些设备上,您可能需要启用一项选项以允许 [模拟输入]。在开发者选项中,启用:
USB 调试(安全设置)
允许授予权限并通过 USB 调试模拟输入
设置此选项后,重启设备是必要的。
特殊字符无法输入
默认的文本注入方法是 仅限于 ASCII 字符。一个技巧允许您注入一些 带重音的字符,但仅此而已。请参见 #37。
为避免此问题,将键盘模式更改为模拟物理键盘。
客户端问题
与 Wayland 的问题
默认情况下,SDL 在 Linux 上使用 x11。可以通过 SDL_VIDEODRIVER
环境变量更改 视频驱动程序:
export SDL_VIDEODRIVER=wayland
scrcpy
在某些发行版中(至少在 Fedora 上),必须手动安装 libdecor
包。
KWin 组件崩溃
在 Plasma Desktop 中,当 scrcpy 正在运行时,组件会被禁用。
作为临时解决方案,禁用“阻止合成”。
报告崩溃
异常
如果您在处理与MediaCodec
相关的异常时遇到问题,请参考以下解决方法:
ERROR: Exception on thread Thread[main,5,main]
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
请尝试使用其他编码器。
翻译
其他语言的FAQ翻译可在仓库中找到。
只有这个FAQ文件可以保证是最新的。