繁体   English   中英

使用 Swift 3 在 Xcode 8 中为 WatchOS 和 iOS 构建嵌入式框架

[英]Building an embedded framework for WatchOS and iOS in Xcode 8 with Swift 3

我正在将最初用 Swift 1 编写的所有 iOS + WatchOS 1 应用程序移植到最新的 Xcode 8、WatchOS 3、Swift 3。

我的应用程序有一个嵌入式框架,其中包含一些常用功能,用于为 watchkit 扩展目标和 ios 应用程序目标编译和运行文件。

使用 Xcode 8,我似乎无法再使用它。 当我尝试在 watchkit 扩展代码中import框架时,出现module not found错误。

是否仍然可以在目标 iOS 和 WatchKit 扩展目标上编译和使用一个单一的嵌入式框架包? 在我的框架中,我将目标平台设置为watchos, watchsimulator, iphoneos, iphonesimulator

我的直觉说这不可能了。 最初所有代码都在手机本身上运行,而不是在实际手表和手机上运行,​​您需要专门为每个代码编译一个嵌入式框架。

简短版本:你不能。 创建一个重复的目标并将其设置为使用手表 SDK。

来自 Apple 文档的更长版本: https : //developer.apple.com/library/content/documentation/General/Conceptual/WatchKitProgrammingGuide/iOSSupport.html#//apple_ref/doc/uid/TP40014969-CH21-SW1

包括:

注意

在为 WatchKit 扩展创建单独的框架目标后,您必须分别为 iOS 和 watchOS 管理该框架的内容。 如果将文件添加到 iOS 版本的框架中,请记住将它们添加到 watchOS 版本。

从 Xcode 11 开始,您可以使用 Swift Package Manager 来执行此操作,而无需重复目标。 至少在 Xcode 12 beta6 中进行了测试,这是另一种选择,当问题被问到或我最初回答时不存在(并且它不满足问题的详细要求,因为它需要更新的 Xcode)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM