Xcode 7支持watch OS1和OS2。

20

我一直在摸索Xcode 7,发现它只支持Swift 2,不支持Swift 1.0或1.2。这还好。

现在来谈WatchOS,在Xcode 7中,我可以分别为WatchOS1和WatchOS2设置两个目标吗?这样我就可以同时支持两者了吗?

我查看了构建设置中的部署目标设置,但我只能在列表中看到WatchOS2而没有WatchOS1。

  1. 我是否可以在Xcode 7中为WatchOS1和WatchOS2设置两个目标?如果可以,我需要在某个地方安装WatchOS1 SDK吗?或者完全不可能,如果不是为什么?

  2. 如果两个目标都可以支持,我如何避免重复使用源代码,因为两个操作系统在架构方面有很大的区别。

  3. 还有自从引入WatchConnectivity框架以来,iOS相应的配套应用程序也会有一些更改,如何为两个目标维护该框架?

我很困惑,我需要快速做出决定,任何帮助都将不胜感激。


@Droppy 但是在 iOS 目标中,我能够在列表中看到较低版本的 iOS。为什么会这样? - Satheesh
@Droppy 是的,我也这么认为,但如果我需要同时支持两者呢,希望一切顺利! - Satheesh
2个回答

26

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

如果要同时支持watchOS 1和watchOS 2,则需要为每个操作系统单独创建目标(由于体系结构的差异)

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

watchOS 1 App

对于watchOS 2应用程序,请添加新目标,选择watchOS > Application部分,然后在列表中选择WatchKit App 选项。

watchOS 2 App

关于在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 7在构建时向UIRequiredDeviceCapabilities info.plist键添加arm64,即使对于不应该添加的watchOS 1扩展程序也是如此。

您可以通过将仅构建活动体系结构设置为NO来暂时解决此问题。

Xcode 7已知问题

希望这可以帮到您


感谢Liam提供详细的答案,但我有几个问题,请查看我的更新问题。 - Satheesh
你如何测试WatchOS1应用程序?我没有看到下载WatchOS1模拟器的选项。 - Jatin
我不确定模拟器是否可行,但我知道你可以在运行watchOS 2.x的物理设备上运行它。 - liamnichols

4
你可以同时拥有适用于iOS 9 iPhone的watchOS 2应用和适用于iOS 8设备的watchKit扩展。
我认为,如果您还没有制作过WatchKit应用程序(比如watchOS 1),那么制作watchOS 2应用程序并尝试创建和维护watchOS 1应用程序是非常低效的...只需为了理智起见,跳上watchOS 2列车!

不,@Daniel,我已经有一个WatchKit 1应用程序了,我想要采取立场来发布日期。 - Satheesh
2
所以,在 WWDC 上,手表工程师建议我不要将我的 watchOS 1 应用程序“迁移”到2,而是只需为 watchOS 2 应用程序创建一个新的目标,并使它们共存。 - Daniel
好的,这很有道理,但是你有没有想过如何为这两个目标平衡编码? - Satheesh
您可以将接口控制器中针对os1特定API的使用移动到一个分类或独立类中,然后在两个目标中均使用该精简的接口控制器类。我的应用程序可能会完全重写,所以我没有这个问题,但这可能是我会这样做的方式。 - Daniel
Xcode 7:有没有人发现,仅针对Watch Kit 1.0应用程序和扩展的部署目标下拉菜单中,只有Watch Kit 2.0可用?尝试了现有项目和新项目,WK1.0目标的结果相同。我已将关联的iOS应用程序设置为8.3目标,但仍然没有运气。我必须从早期版本的Xcode中提取1.0 WK SDK吗?想知道是否有人这样做过。 - rholmes
@rholmes,你最终是否成功在Xcode7下构建了你的watchos1应用程序?我有类似的问题。 - gsempe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接