20

我一直在摆弄 Xcode 7,我知道它只支持 Swift 2,并且在 Xcode 7 中无法支持 Swift 1.0 或 1.2。这很好。

现在来到 WatchOS,我可以在 Xcode 7 中分别有两个目标,一个用于 WatchOS1,一个用于 WatchOS2,以便我可以同时支持这两个目标吗?

我正在查看监视目标和 iOS 应用程序目标的构建设置中的部署目标设置,但我只能在列表中看到 WatchOS2,所以

  1. 我可以在 Xcode 7 中分别支持 WatchOS1 和 WatchOS2 的两个目标吗?如果是这样,我应该在某个地方安装 WatchOS1 SDK 吗?或者这完全不可能,如果不是为什么?

  2. 如果可以支持两个目标,我如何防止两个目标的源重复,因为两个操作系统在体系结构方面存在显着差异。

  3. 另外自从引入WatchConnectivity 框架后,iOS 对应的app 也会有一些变化,这两个目标如何维护呢?

我很困惑,我需要迅速做出决定,感谢任何帮助。

4

2 回答 2

26

您可以在 Xcode 7 中支持 watchOS 1 应用程序。您还可以在 Xcode 7 中支持 watchOS 2 应用程序。

如果您想同时支持 watchOS 1 和 watchOS 2,那么您需要为每个操作系统设置单独的目标(由于架构的差异)

对于 watchOS 1 应用程序,添加一个新目标并从左侧选择Apple Watch部分,然后从列表中单击适用于 watchOS 1 的 WatchKit 应用程序

watchOS 1 应用程序

对于 watchOS 2 应用程序,添加新目标并选择watchOS >应用程序部分,然后单击列表中的WatchKit 应用程序选项。

watchOS 2 应用程序

关于在 Xcode 7(beta 1)中制作 watchOS 1 应用程序需要注意的几件事......

因为我在运行 iOS 8.3 的 iPhone 6 和运行 watchOS 1.0.1 的手表上进行了测试,所以我需要将部署目标更改为 iOS 8.3,但请注意,您希望在项目级别而不是目标级别执行此操作(所以扩展程序也设置为 8.3 而不仅仅是主应用程序)否则它不会让您部署到真实设备上。

由于 Xcode 7 beta 1 中的一个已知问题,如果您配对的手机是 64 位,则 watchOS 1 应用程序将无法在真实手表上安装并出现以下错误:

Jun 20 17:25:08 Liams-iPhone companionappd[271] <Notice>: (Error) WatchKit: validateWatchKitApplicationInfoDictionary, invalid Info.plist key 'UIRequiredDeviceCapabilities'

这是因为 Xcode 7UIRequiredDeviceCapabilities在构建时将 arm64 添加到 info.plist 键中,甚至在不应该添加到 watchOS 1 扩展时也是如此。

您可以通过将Build Active Architecture Only设置NO为 DEBUG 模式来临时解决此问题。

Xcode 7 已知问题

希望有帮助

于 2015-06-22T10:35:38.670 回答
4

您可以同时拥有适用于 iOS 9 iPhone 的 watchOS 2 应用程序和适用于 iOS 8 设备的 watchKit Extension。

我想说的是,如果您还没有制作 WatchKit 应用程序(如在 watchOS 1 中),那么制作 watchOS 2 应用程序并尝试创建和维护 watchOS 1 应用程序是非常低效的……只需加入watchOS 2 出于理智目的!

于 2015-06-22T10:45:15.067 回答