如何在 Xcode 9 和 iOS 11、Apple TV 4K 等设备中进行无线调试?

How do you perform wireless debugging in Xcode 9 with iOS 11, Apple TV 4K, etc?

无线调试最近作为一项功能添加到 Xcode 9、iOS 11 和 tvOS 11 中。Apple TV 4K 没有 USB 端口,因此需要无线调试。 Xcode如何进行无线调试?

您可以打开 Xcode 帮助 -> 运行 和调试 -> 网络调试以获得更多信息。希望对你有帮助。

Set up a device for network debugging

来自help.apple.com

通过 Wi-Fi 或其他网络连接在 iOS 或 tvOS 设备上调试您的应用 运行。

设置 iPhone、iPad 或 iPod touch

的步骤
  1. 检查您的设备是否有密码和add one if it doesn't。您的设备必须有密码才能启用远程调试

  2. Mac和iPhone/iPad需要在同一网络才能使用无线调试

接下来,在Xcode

  1. 选择Window > 设备和模拟器,然后在出现的window中,点击设备.
  2. 使用 Lightning 数据线将您的设备连接到 Mac。
  3. 在左栏中,select 设备,在详细信息区域中,select 通过网络连接

Xcode 与您的设备配对。如果 Xcode 可以使用网络连接设备,则网络图标会出现在左栏中的设备旁边。

  1. 断开您的设备。

现在您可以通过网络进行调试了。

有时它不起作用。您可能需要重新启动设备或网络连接

注意: 网络调试需要 Xcode 9.0 或更高版本 运行 on macOS 10.12.4 或更高版本,在设备上,需要 iOS 11.0 或更高版本,或 tvOS 11.0 或稍后。


设置 Apple TV 的步骤:

  1. 确保您的 Mac 和 Apple TV 在同一网络上。

  2. 选择Window > 设备和模拟器,然后在window出现时,单击 设备

  3. 在您的 Apple TV 上,打开“设置”应用并选择远程和设备 > 远程应用和设备

  4. Apple TV 搜索可能的设备,包括 Mac。 (如果您有任何防火墙或 Internet 安全,disable/turn 将其关闭以允许搜索。)

  5. 在 Mac 上,select Apple TV 的 设备 窗格中。显示 Apple TV 的窗格并显示连接请求的当前状态。

  6. 将 AppleTV 上显示的验证码输入设备的设备 window 窗格,然后单击连接.

Xcode 设置 Apple TV 进行无线调试并与设备配对。

在新的Xcode9-beta中,我们可以使用无线调试 as said by Apple:

Cut the Cord
Choose any of your iOS or tvOS devices on the local network to install, run, and debug your apps – without a USB cord plugged into your Mac. Simply click the ‘Connect via Network’ checkbox the first time you use a new iOS device, and that device will be available over the network from that point forward. Wireless development also works in other apps, including Instruments, Accessibility Inspector, Quicktime Player, and Console.

试试这个!

如果面临断开连接问题,试试这个:

Workaround: Enable airplane mode on your device for 10 seconds and then disable airplane mode to re-establish your connection

Network debugging requires Xcode 9.0 or later running on macOS 10.12.4 or later, and on the device, requires iOS 11.0 or later, or tvOS 11.0 or later.

iPhone

iOS 11 不适用于 32 位设备,即 iPhone 5 和 iPhone 5c 及以下。第一个64bitiPhone是5s.

iPad

iPad mini 2 将是最老的 iPad,支持 iOS 11。

iPod

iPod 需要是 iPod 6 才能 运行 iOS。

如果您的设备不仅用于开发,还用于生产,请注意 Beta OS 不适合胆小的人;-)

先决条件

  • 您的 Mac Machine 应该至少 Mac OSX 10.12.4 或更高版本
  • 您的 iOS 设备至少应具有 iOS 11.0 或更高版本
  • 两个设备应该在同一个网络上。

激活步骤

  • 通过电缆将 iOS 设备连接到 Mac 机器。

  • 打开 Xcode 然后从顶部菜单 Window -> 设备和模拟器

  • 选择设备 段并从左侧设备列表中选择所需的设备。

  • 在右侧您可以看到打开 通过网络连接,启用此选项,如附图所示。

  • 几秒钟后,您可以在设备前面看到网络标志。

  • 拔掉你的设备,像你正常使用的那样使用调试。

谢谢

我刚刚在 WWDC 上与一些 Xcode 工程师交谈,iDevices 的自动发现仍然存在一些问题。有时您的 phone 也没有正确广播。打开和关闭设备会有帮助。

有几个workarounds/fallbacks:

您可以检查您的 phone 是否正在使用 Bonjour 浏览器 (www.tildesoft.com) 进行广播。查看您的 wifi 地址是否列在名为“_apple-mobdev2._tcp”的服务下。 - 215'(您可以在此处找到您的 wifi 地址:设置 > 通用 > 关于 > wifi 地址。

作为备用,您可以通过手动输入 IP 地址连接到您的设备(在设备 window 中右键单击您的设备)。 但是,此 IP 地址将被保留,因此如果您更改网络,则需要重新设置。该选项在 Xcode 中尚不可用,但您可以使用以下命令通过终端执行此操作:

defaults read com.apple.dt.Xcode | grep IDEIDS

这将打印一个您需要在下一个命令中使用的标识符:

defaults delete com.apple.dt.Xcode <identifier>

现在IP地址被清除,您可以输入一个新的。

最后一个选项是创建一个计算机到计算机的网络。这工作正常,但从逻辑上讲,您那时将无法访问互联网。

如果按照 后仍然无法连接,请尝试关闭计算机的 Wi-Fi,然后重新打开。这对我有用。

此外,请务必信任 iOS 设备上的开发者证书(设置 - 通用 - 配置文件和设备管理 - 开发者应用)。

如果您已完成所有步骤 但仍未获得网络连接图标,请按照以下步骤操作:

  1. 使用右键单击 已连接 部分的设备取消配对。

  2. 重新连接设备。

  3. 单击弹出窗口左侧末尾的 “+” 按钮。

  1. Select 设备并点击 下一步 按钮

  1. 点击设备上的信任密码(如果可用)

  1. 点击完成按钮。

  1. 现在,单击通过网络连接

现在您可以在设备名称后看到网络连接图标。享受吧!

我遵循了所有建议的步骤,特别是 ios_dev 提供的步骤,但是 Xcode 无法识别我的 iPhone,而且我无法通过 WiFi 进行调试。在 "Devices and Simulators" window 中右键单击我的 iDevice 左侧面板,然后 "Connect via IP Address...",插入 iPhone IP,现在它可以正常工作

我尝试使用 Xcode 设备 window 的“通过网络连接”选项。但是我看不到设备名称旁边的 "Connected over the network" 图标。同样,一旦移除 USB,"Connect via network" 选项就会消失。此外,设备名称出现在断开连接的设备列表下。

但是使用 "Connect via IP Address..." 选项,我可以连接。

  1. 右键单击设备名称(在断开连接列表下)并选择 "Connect via IP Address...." 选项。

  1. 键入设备的 IP 地址并选择“连接”。 (您可以通过移动设备设置 > Wi-Fi > 选择 wifi 名称找到)

Xcode 9 - 有关详细信息,请转到 帮助 -> 将无线设备与 Xcode(iOS、tvOS)[= 配对10=]

我的问题是关于网络 SSID 广播。

我已经尝试了上述所有解决方案,但仍然无法连接我的设备,我的设备根本没有 'globe' 图标。然后我发现由于某种原因我的网络关闭了它的 SSID 广播(虽然我仍然可以通过手动输入 SSID 来连接网络)。打开 SSID 广播后,我可以通过 'Connect via IP Address...'.

连接我的设备

我尝试了所有答案,但没有一个对我有用。我最终连接到不同的 WiFi 网络,然后我能够进行无线调试。

我不知道为什么旧网络不能用

对于无线调试,Mac系统和iPhone/Device应该在同一网络上。 要在同一网络上制作,您可以这样做 - 您可以在 Mac 上启动热点并在 iPhone/Device 上连接,反之亦然。

On Mac

On iPhone-

Xcode ► Window ► Devices and Simulators ► select devices Tab ► click connect via network

https://help.apple.com/xcode/mac/9.0/index.html?localePath=en.lproj#/devbc48d1bad

如果我的 Mac 和我的 iPhone 在 不同的 网络上,我让它工作的唯一方法。我有一个主 DSL 调制解调器,称之为 network1,第二个 network2 为我们设置了一个接入点。它们具有 SSID network1 和 network2。如果 phone 在 network1 上并且 mac 在 network2 上它会工作,反之亦然。但是如果两者都在 network1 上或都在 network2 上,它将 NOT 工作。

使用 USB 端口启用 Internet 共享:

唯一对我有用的是使用蓝牙将我的 phone 连接到我的 MacBook。 (我首先将我的 phone 与 Xcode 配对,同时根据上面 ios_dev 的回答通过电缆连接。)

在我的 phone 上,我转到“设置”>“蓝牙”并在 "MY DEVICES" 下点击我的 MacBook 名称进行连接。

然后我转到 Xcode > 设备和模拟器,选择我的 phone 并选中 "Connect via network"。几秒钟后,地球图标出现在我的 phone 旁边,我可以 运行 并在我的 phone.

上调试我的应用程序

即使我的 MacBook 连接到 WiFi 网络并且我的 phone 使用 LTE,这仍然有效。唯一的缺点是将应用程序安装到 phone.

的速度非常慢

试试这个:

  1. 使用避雷线将 iOS 设备插入 Mac。您可能需要在您的设备上select信任此计算机

  2. 打开 Xcode 并转到 Window > 设备和模拟器

  3. Select 您的设备,然后 select 通过网络连接 复选框来配对您的设备。

  4. 运行 移除 Lighting 电缆后的项目。

大声笑,我在这里完成了所有步骤 - 我最终完成了 "given by Surjeet" 答案中的 unpairing/repairing 步骤。它没有用,然后我注意到当我点击 "connect via network" 按钮时,会弹出与修复时弹出的相同的黄色框,上面写着 "busy" - 我很沮丧,只是开始锤击"connect via network" 按钮,快速点击它大约 15 - 20 次点击 - 它开始闪闪发光,但最终能够连接到网络。在此之前,我还关闭了我的 wifi 并再次打开它,正如这些答案之一所建议的那样,但是点击 "connect via network" 按钮真的很快就成功了......大声笑

此外,在我按下按钮之前,我链接了设备支持文件夹,尽管我不确定它是否做了任何事情:

打开终端

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

ln -s 13.3 13.4

ls -l 13.4

restart Xcode and retry run on device

说到这里做 - https://forums.developer.apple.com/thread/126940 - 我在评论中编辑了文件夹版本以适应最新版本 iOS 13.4.

编辑 我相信我知道我的问题是什么,我不得不停止我的 Little Snitch 网络过滤器。此外,在我能够通过锤击按钮连接后,当您在 xcode 中的设备管理器中右键单击设备时, "connect via IP address" 选项出现在下拉列表中,在我之前它不存在能够在第一时间连接 ultra-hacky 风格。如果我连接,然后打开我的网络过滤器,它会断开我的 phone.

第 1 步:第一次使用电缆 phone 连接

第 2 步:转到管理器和设备

第 3 步:勾选作为网络连接

现在每次都有效的简单技巧。

第 4 步:在 iphone

上开启热点

第 5 步:将您的 mac 连接到该热点。

第 6 步:现在 运行 代码。

这将始终有效。