结合使用 ADB 与 Meta Quest
Android Debug Bridge (ADB) 是
Android SDK 随附的一个命令行工具,是开发过程所有阶段中与 Meta Quest 头戴设备进行通信的主要工具。ADB 是一个功能极为多样的工具,用于从计算机向头戴设备安装应用程序并发出其他重要命令。
要获取可用命令和选项的列表,请确保已安装 ADB 并输入:
通过操作系统 shell,可以直接通过 USB 或者通过 Wi-Fi 连接上的 TCP/IP 与 Android 设备进行连接和通信。
要通过 USB 连接设备,请使用兼容的 USB 线将设备连接到电脑。连接后,打开一个操作系统 shell 并输入:
如果设备连接正常,ADB 将显示设备编号清单,例如:
List of devices attached
ce0551e7 device
如果未检测到设备,表示无法使用 ADB。如果您的设备未列出,问题最有可能是您的 USB 驱动程序不正确(请参阅
Oculus ADB 驱动程序)。另请检查是否在 Meta Horizon 移动应用中为您的设备启用了开发者模式。尝试更换另一根 USB 线或另一个端口有时可以解决连接问题。
通过 USB 连接设备通常比使用 TCP/IP 连接更快,但有时 TCP/IP 连接必不可少。
要通过 TCP/IP 进行连接,首先确保设备已通过 USB 连接,然后使用以下命令来确定其 IP 地址:
输出结果应如以下所示:
10.0.30.0/19 dev wlan0 proto kernel scope link src 10.0.32.101
设备的 IP 地址使用 src 地址。使用此 IP 地址和端口(一般是 5555)发出以下命令:
adb tcpip <port>
adb connect <ipaddress>:<port>
例如:
> adb tcpip 5555
restarting in TCP mode port: 5555
> adb connect 10.0.32.101:5555
connected to 10.0.32.101:5555
此设备现在可以从 USB 端口断开连接。只要 adb devices 只显示一个设备,所有 ADB 命令都将通过 Wi-Fi 向此设备发出。
如要停止使用 Wi-Fi 连接,请从操作系统 shell 发出以下 ADB 命令:
运行以下命令,在头戴设备上安装 APK:
例如,在 Windows 上:
adb install C:\Dev\Android\MyProject\VrApp.apk
在 macOS 上:
adb install ~/Dev/Android/MyProject/VrApp.apk
使用 -r 选项来覆盖目标设备上已安装的同名 APK:
adb install -r <APK_PATH>
注意:使用 adb install 安装应用会绕过正常的 Quest 安装路径。云备份不会注册以这种方式安装的应用,也不会对其进行备份。
有关更多信息,请参阅 Android 发布的
Android Debug Bridge 指南的
安装应用程序章节。
以下部分提供了针对 ADB 常见连接问题的可能解决方案。
电脑无法检测到头戴设备的原因有很多。以下这些建议可供参考:
- 请确保您已在手机上的 Meta Quest 配套应用中开启了开发者模式。
- 检查问题是否是由 USB 线故障造成的。使用备用 USB 线连接设备。如果没有备用 USB 线,请连接任何其他 Android 设备以验证问题是否出在 USB 线上。
- 请确保您的电脑已获取访问头戴设备的所有必要权限。通常,当您使用 USB 线将设备与电脑连接时,会看到一个提示,允许您的电脑访问该设备。如果不小心拒绝了权限,请断开 USB 线,重启设备,然后再次连接 USB 线。提示权限时,选择允许。
- 在某些设备上,如果在 VR 应用运行时或 ADB 等待设备连接时连接设备,可能会导致设备无法被可靠检测。在这种情况下,尝试使用Ctrl-C 关闭应用并停止 ADB,然后重新连接设备。或者,可以使用以下命令停止 ADB 服务,之后在执行以下命令时,ADB 服务会自动重启:
- 首先验证
adb 是否正确安装。转到 /Android/SDK/platform-tools/ 文件夹,检查是否有 adb 工具。如果没有该工具,请下载独立式 Android SDK Platform-Tools 程序包。 - 检查是否正确设置了环境变量。
- 可以在
/Android/SDK/platform-tools/ 文件夹中通过给 adb 命令加上 ./ 前缀来运行 adb。例如,不使用 adb devices,而使用 ./adb devices。
可以同时附加多个设备,这通常对于调试客户端/服务器应用程序很有用。请注意,当同一设备通过 Wi-Fi 和 USB 同时连接时,ADB 会显示该设备为两台设备。当有多个设备列出时,必须使用 -s 开关告诉 ADB 要针对哪个设备。例如,如果 adb devices 显示以下内容:
List of devices attached
ce0551e7 device
10.0.32.101:5555 device
列出的设备可能是两个独立的设备,也可能是同一个既通过 Wi-Fi 连接又插入了 USB(可能是为了充电)的设备。在这种情况下,所有 ADB 命令都必须采用以下形式,其中 <device id> 是 adb devices 报告的标识符:
adb -s <device id> <command>
例如,要向通过 TCP/IP 连接的设备发出 logcat 命令:
adb -s 10.0.32.101:55555 logcat -c
要向通过 USB 连接的设备发出相同的命令:
要了解更多关于开发者工具的信息,请参阅以下资源: