我很高兴地宣布,我们现在正在发布适用于 Firefox OS 的 WiFi 调试功能!它可以在 Firefox OS 3.0 / master 中使用,并在桌面上的 Firefox Nightly 中使用。
WiFi 调试允许 WebIDE 通过您的本地 WiFi 网络连接到您的 Firefox OS 设备,而不是通过 USB 线缆。
与 USB 连接相比,连接体验通常更简单直接(特别是在首次连接到设备之后),并且由于不再受线缆束缚,使用起来也更加方便。
背景
在 Firefox OS 开发的早期阶段,您就可以通过 USB 线缆调试设备。但是,这存在一些缺点。
- 在需要调试时,您必须连接线缆。
- 某些操作系统需要驱动程序,这会造成很多混淆。
- 线缆要求使得在用户测试期间调试手机变得更加困难。
移动设备在用线缆束缚时,通常感觉不像它自己。
DevTools 团队在一段时间内一直在考虑添加某种形式的 WiFi 访问功能。我们的主要目标是:
- 易用性
- 安全连接
虽然我们当然希望使此功能可用,但我们希望确保它能比 USB 方法更出色,同时也能保持安全性。这在共享网络(如 WiFi)上很重要,因为调试过程本身会暴露您活动的大量细节,包括可能私人的请求数据。如果您在咖啡店工作,您不希望其他人能够访问这些数据。
简单性
在通过 WiFi 连接时,同一个网络上可能存在许多可供选择的设备。为了避免这个问题,我们使用了一种发现机制,类似于 Bonjour 或 mDNS。当您想要连接时,您的计算机会发送一个多播 ping 来查找附近的设备。如果有任何设备,它们会回复其名称以及它们支持的服务。这使我们能够呈现一个简单的设备名称列表,而不是处理 IP 地址。
设置过程也比 USB 方法更简洁,USB 方法依赖于 Android 项目中的 ADB。在使用 WiFi 调试时,不需要在 Windows 上安装驱动程序或在 Linux 上配置 udev 规则。
安全性
该项目的大部分工作都致力于使调试连接安全,以便您可以在共享网络(例如办公室或咖啡店)中安全地使用它。
我们使用 TLS 进行加密和身份验证。计算机和设备都创建自签名证书。当您连接时,会扫描一个 QR 码以验证证书是否可信。在连接过程中,您可以选择记住此信息,并在将来需要时立即连接。
如何使用
您需要准备以下内容:
- Firefox 39(2015 年 3 月 27 日或之后)
- Firefox OS 3.0(2015 年 4 月 16 日或之后)
Firefox OS 3.0 仍在积极开发中,因此尚未在商店的设备上提供。如果您有 Flame 设备,您可以 将您的 Flame 更新 到 3.0 / master,使用夜间构建版本。对于其他设备,您可能需要从源代码 为您的设备构建 以对其进行更新。
在 Firefox OS 上,启用 WiFi 调试
- 转到设备上的开发者设置(设置 -> 开发者)
- 通过 Wi-Fi 启用 DevTools
- 根据需要编辑设备名称
要从 Firefox 桌面连接
- 在 Firefox Nightly 中打开 WebIDE(工具 -> Web 开发者 -> WebIDE)
- 单击“选择运行时”以打开运行时面板
- 您的 Firefox OS 设备应该显示在“WiFi 设备”部分中
- 设备上会出现一个连接提示,选择“扫描”或“扫描并记住”
- 扫描 WebIDE 中显示的 QR 码
扫描完 QR 码后,QR 显示应该消失,WebIDE 中的“设备”图标将变为蓝色,表示“已连接”。
然后,您可以访问所有远程应用程序和浏览器选项卡,就像您今天通过 USB 访问它们一样。所有 Firefox DevTools 都可以通过 WiFi 访问,以便检查、调试和探索。这仅仅是 DevTools 数据包交换方式的改变,因此对您可以使用的工具没有任何限制。
支持的设备
此功能应该在任何 Firefox OS 设备上都受支持。到目前为止,我已经在 Flame 和 Nexus 4 上测试过它。
已知问题
QR 码扫描器目前可能有点令人沮丧,因为实际设备似乎捕获的图片分辨率很低。 Bug 1145772 旨在尽快改进这一点。您应该能够通过尝试不同的方向来使用 Flame 进行扫描。我建议使用“扫描并记住”,这样扫描只需要在第一次连接时进行。
如果您在测试过程中发现其他问题,请 提交 bug 或在 IRC 上联系我。
致谢
这是一个相当复杂的项目,除了 DevTools 之外,许多来自网络和安全等团队的人员在开发此功能时提供了建议和审查,其中包括:
- Brian Warner
- Trevor Perrin
- David Keeler
- Honza Bambas
- Patrick McManus
- Jason Duell
- Panos Astithas
- Jan Keromnes
- Alexandre Poirot
- Paul Rouget
- Paul Theriault
我可能还遗漏了其他人,如果您被遗漏了,我表示歉意。
下一步
我想要为 Firefox for Android 添加此功能。值得庆幸的是,这里完成的大部分工作都可以重复利用。此外,我们应该更新其他工具,例如 node-firefox,以使用 WiFi 连接到设备。我们还可以利用这些工作来提高 浏览器工具箱 在 Firefox 桌面上的安全性。
如果您想看到添加的功能,请 提交 bug 或通过 各种渠道 联系团队。
关于 J. Ryan Stinnett
Mozilla 的 Firefox DevTools 员工工程师。