Swift 添加 watchkit 时出现 cocoapods 新错误的项目

Swift project with cocoapods new errors when watchkit added

我有一个使用 Objective C SDK 的 Swift IOS 项目。 SDK 代码使用 cocoapods 安装和更新。 Swift 项目中有一个桥接头文件。该项目已经编译运行多次,完全可以运行。当然,由于它已经构建并且 运行,工作区文件就是它打开的方式...

我给它添加了 watchkit 扩展。我 运行 pod 更新以创建新的锁定文件。我确认 watchkit 中的搜索路径包括 pods/recursive。我将头文件添加到 Watchkit Extension。

这三个步骤是我能够找到的关于使 cocoapods 托管代码与 Watchkit 一起工作的唯一建议。

我得到三个错误。他们是:

Undefined symbols for architecture x86_64:

  "_OBJC_CLASS_$_SparkCloud", referenced from:
      __TMaCSo10SparkCloud in InterfaceController.o

  "_OBJC_CLASS_$_SparkDevice", referenced from:
      __TMaCSo11SparkDevice in InterfaceController.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

是否有人对可能允许项目编译的进一步步骤有建议?

如问题中所述,此 Swift IOS 项目使用 cocoapods 来管理 objective C 提供对云 API 访问的 SDK。

将 WatchKit 扩展添加到 Xcode 项目后执行这些步骤。

在项目主文件夹(蓝色,顶部)Info 选项卡中,请注意在 Debug 部分中,WatchKit Extension 旁边有一个 None 条目。将其更改为 Pods.debug。单击它并选择 Pods.debug。

在发布部分下,将 WatchKit 扩展从 None 更改为 Pods.release

现在单击 WatchKit 扩展目标并选择常规选项卡。此处链接的框架和库将为空。单击加号并从列表 libPods.a 中选择并添加它,确保选择了必需选项(右侧)。

这应该完成让您的 cocoapods 库可访问 WatchKit 扩展下的 InterfaceController.swift 文件的工作,您可以在该文件中编写 "runs" 手表的代码。

您的项目中似乎缺少 SparkCloud.framework。您可以通过以下方式添加:

  • 单击左窗格左上角的项目(蓝色图标)。

  • 导航到 "Build phases."

  • 在 "Link Binary With Libraries" 下,单击加号按钮。

  • 从列表中找到 SparkCloud.framework 并点击添加。您可能还想添加 Spark SDK 所需的任何其他框架。

This will ensure that the Spark frameworks are found by the linker.

  • 点击构建,错误应该消失了。