-
-
Notifications
You must be signed in to change notification settings - Fork 11.1k
FAQ.zh‐CN
只有原版的 FAQ.md是保证最新的。
本文根据 https://github.com/Genymobile/scrcpy/blob/master/FAQ.md 进行翻译。
以下是常见的报告问题及其状态。
如果遇到任何错误,第一步是升级到最新版本。
scrcpy
执行 adb
命令来初始化与设备的连接。如果
adb
失败,则 scrcpy 将无法工作。
这通常不是 scrcpy 中的错误,而是您环境中的问题。
您需要从您的 PATH
访问 adb
。
在 Windows 上,当前目录在您的 PATH
中,并且 adb.exe
包含在版本中,因此它应该可以开箱即用。
ERROR: Could not find any ADB device
检查您是否正确启用了 adb 调试。
您的设备必须通过 adb
检测:
adb devices
如果未检测到您的设备,您可能需要一些 [驱动程序](在 Windows 上)。有一个单独的 [Google 设备 USB 驱动程序][google-usb-driver]。
[enable-adb]:https://developer.android.com/studio/command-line/adb.html#Enabling [驱动程序]:https://developer.android.com/studio/run/oem-usb.html [google-usb-driver]:https://developer.android.com/studio/run/win-usb
ERROR: Device is unauthorized:
ERROR: --> (usb) 0123456789abcdef unauthorized
ERROR: A popup should open on the device to request authorization.
连接时,设备上应打开一个弹出窗口。您必须授权 USB 调试。
如果打不开,请检查[stackoverflow] device-unauthorized
如果已连接多台设备,您将遇到此错误:
ERROR: Multiple (2) ADB devices:
ERROR: --> (usb) 0123456789abcdef device Nexus_5
ERROR: --> (tcpip) 192.168.1.5:5555 device GM1913
ERROR: Select a device via -s (--serial), -d (--select-usb) or -e (--select-tcpip)
在这种情况下,您可以提供要镜像的设备的标识符:
scrcpy -s 0123456789abcdef
或者请求单个 USB(或TCP/IP) 设备:
scrcpy -d # USB 设备
scrcpy -e # TCP/IP 设备
请注意,如果您的设备通过 TCP/IP 连接,您可能会收到以下消息:
adb: error: more than one device/emulator
ERROR: "adb reverse" returned with value 1
WARN: 'adb reverse' failed, fallback to 'adb forward'
这是预期的(由于旧 Android 版本上的错误,请参阅 #5,但在这种情况下,scrcpy 会回退到另一种方法,这应该可以工作。
adb server version (41) doesn't match this client (39); killing...
当您同时使用多个 adb
版本时,会发生此错误。您必须使用不同的 adb
版本找到该程序,并在所有地方使用相同的 adb
版本。
您可以通过设置 ADB
环境变量覆盖其他程序中的 adb
二进制文件,或要求 scrcpy
使用特定的 adb
二进制文件:
# in bash
export ADB=/path/to/your/adb
scrcpy
:: in cmd
set ADB=C:\path\to\your\adb.exe
scrcpy
# in PowerShell
$env:ADB = 'C:\path\to\your\adb.exe'
scrcpy
如果 scrcpy 自行停止并显示“设备已断开连接”警告,则 adb
连接已关闭。
尝试使用另一根 USB 电缆或将其插入另一个 USB 端口。请参阅 #281 和 #283。
在 Windows 上,如果 scrcpy --otg
(或 --keyboard=aoa
/--mouse=aoa
)导致:
ERROR: Could not find any USB device
(或者如果只检测到不相关的 USB 设备),则可能存在驱动程序问题。
在某些设备上,您可能需要启用一个选项以允许 [模拟输入]。
在开发者选项中,启用:
USB 调试(安全设置) 允许授予权限并通过 USB 调试模拟输入
设置此选项后,可能需要重启设备。
[模拟输入]:https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323
默认的文本注入方法是 仅限于 ASCII 字符。
一个技巧允许注入一些 重音字符,
但仅此而已。请参阅 #37。
为了避免这个问题,更改键盘模式以模拟物理键盘。
默认情况下,SDL 在 Linux 上使用 x11。 [视频驱动程序] 可以通过
SDL_VIDEODRIVER
环境变量进行更改:
[视频驱动程序]:https://wiki.libsdl.org/FAQUsingSDL#how_do_i_choose_a_specific_video_driver
export SDL_VIDEODRIVER=wayland
scrcpy
在某些发行版(至少是 Fedora)上,必须手动安装包 libdecor
。
请参阅问题 [#2554] 和 [#2559]。
[#2554]:https://github.com/Genymobile/scrcpy/issues/2554 [#2559]:https://github.com/Genymobile/scrcpy/issues/2559
在 Plasma Desktop 上,scrcpy 运行时合成器被禁用。
解决方法是[禁用“块合成”][kwin]。
[kwin]:https://github.com/Genymobile/scrcpy/issues/114#issuecomment-378778613
如果您收到与 MediaCodec
相关的任何异常:
ERROR: Exception on thread Thread[main,5,main]
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
然后尝试使用另一个 编码器。
此常见问题解答的其他语言翻译可在 wiki 中找到。
[wiki]:https://github.com/Genymobile/scrcpy/wiki
只有此常见问题解答文件保证是最新的。