Xcode 7支持手表OS1和OS2

我已经有一段时间摆弄Xcode 7,我知道它只支持Swift 2,并且没有办法在Xcode 7中支持Swift 1.0或1.2。这很好。

现在来看看WatchOS,我可以在Xcode 7中分别为WatchOS1和WatchOS2两个目标,这样我就可以同时支持这两个目标了。

我正在调查watch目标和iOS应用目标的构build设置中的部署目标设置,但是我只能在列表中看到WatchOS2

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

  2. 如果两个目标都可以得到支持,那么我怎样才能防止两个目标的源重复,因为两个操作系统在架构方面都有显着差异。

  3. 另外自从引入WatchConnectivity框架之后,iOS对手的应用程序也会有一些变化,如何保持这两个目标呢?

我很困惑,我需要迅速作出决定,任何帮助表示赞赏。

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

如果你想支持watchOS 1和watchOS 2,那么你将需要为每个操作系统有不同的目标(由于架构的不同)

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

watchOS 1 App

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

watchOS 2应用程序

Xcode 7(testing版1)中制作watchOS 1应用程序的注意事项…

因为我在运行iOS 8.3的iPhone 6上执行testing,而运行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 7在构build时将arm64添加到UIRequiredDeviceCapabilities info.plist项,即使不适用于您的watchOS 1扩展。

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

Xcode 7已知问题

希望有所帮助

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

我会说,如果你还没有制作一个WatchKit应用程序(如在watchOS 1),那么制作一个watchOS 2应用程序并尝试创build和维护一个watchOS 1应用程序是非常没有生产力的…只是跳上去watchOS 2为了理智的目的!