[Diving into WWDC 2017] Debugging with Xcode 9

使用 Xcode 9 调试

Xcode 9 隆重推出了针对 iOS / tvOS 的无线开发功能,对部分特殊场景的 App 开发者来说方便了很多。另外,在断点调试和界面调试方面也新增了一些实用的特性,尤其是给 SpriteKit 和 SceneKit 也增加了 View Debugging 支持。

一、无线开发(Wireless Development)

无线开发(Wireless Development)是 Xcode 9 新增的亮点功能之一,使得 iOS / tvOS 设备不再需要用线缆跟 Mac 电脑连接,就可以完成程序的部署和调试过程。

无线开发功能的使用很简单,首先需要将设备和 Mac 电脑进程配对。配对完成建立连接之后,就跟之前插线时的开发过程一样了。

设备配对过程也非常简单,对于 iOS 设备来说,与 Mac 通过线缆连接后,只需要在 Xcode -> Device & Simulators 窗口中,选择要连接的设备,勾选下图红框中的 “connect via network” 选项即可。

对于 Apple TV 这种不方便连线的设备来说,还支持无线配对模式,只需要在 Apple TV 中开启相应界面 (Remote App and Devices) 进行操作。

此外,对于一些复杂的网络环境,Xcode 还支持通过 IP 直连设备。

无线开发适用的典型场景有以下几种:

  • AR、VR 以及拍照摄像类 App
  • 运动感知、健身类 App
  • 某些附件设备

使用无线开发功能需要移动设备和 Mac 电脑都升级到最新的系统:

  • iOS 设备系统在 iOS 11 以上
  • Apple TV 在 tvOS 11 以上
  • macOS 在 10.12.4 以上

目前,以下工具都已经支持 iOS/tvOS 的无线开发:

  • Xcode
  • Instruments
  • Accessibility Inspector
  • Console(需要 macOS 10.13 以上)
  • Configurator

而以下工具只支持 tvOS 上的无线开发:

  • 针对 TVMLKit 的 Safari Web 调试器
  • QuickTime 录屏(需要 macOS 10.13 以上)

另外,Xcode 9 还有一点改进是在联机调试过程中,可以无缝切换到 Instrument 并查看相关性能测量数据,而不必像以前一样需要重新启动 App,导致现场丢失,难以追踪某些不易复现的问题。同时,Instrument 的交互和可视化效果也得到了一些改进。

二、断点相关

Xcode 9 的断点功能增加了一些改进,以方便开发者提高调试效率。

  • 断点编辑弹窗的输入框内支持代码补全,方便填写断点触发条件、调试输出内容等。

  • 被编辑过的断点符号上增加了白色三角标识,方便开发人员区分哪些断点被编辑过。

  • 断点导航窗口 (Breakpoint Navigator) 内的搜索框支持对断点编辑内容的检索,方便开发人员更快地查找。

三、View Controller / SpriteKit / SceneKit 调试

Xcode 9 在调试工具 View Debugging 的视图层次 (View Hierarchy) 中加入了 View Controller 的信息,包括 View Controller 所包含的 Views,View Controller 之间的包含关系等等,对于视图结构复杂的 App 来说,调试效率可以提高不少。

此外,对于 SpriteKit 和 SceneKit 这两个框架,也增加了类似 View Hierarchy 的界面调试功能。 其中 SpriteKit 的界面调试效果与 UIKit 类似,也是将 2D 场景在 Xcode 内以 3D 形式铺开,可以清晰的看到 SKView / SKNode 之间的层次关系,以及每个 SKView / SKNode 的详细信息。

而对于 SceneKit,由于其本身就对应了 3D 场景,苹果专门为 SceneKit 开发了一套类似 3D 引擎编辑器的工具,并将它内嵌在 Xcode 中。通过这个工具,开发者可以选择、编辑 3D 场景中的各个对象,切换场景视角等等。

总结

整体来说,无论是新推出的无线开发,还是增强的断点功能和更强大的界面调试工具,其目的都在为了降低开发者的调试成本,提高开发效率,使开发者能够做出更具创意和功能的 App。由此我们也可以看出苹果在技术上为其生态进化做出的努力。

感兴趣的同学可以继续了解相关的 Session 内容。