使用 Swift 和 Pod 的通用 SDK

Common SDK Using Swift and Pods

提问人:Vishal S 提问时间:11/23/2022 更新时间:5/11/2023 访问量:161

问:

嗨,我想为 3 个项目创建一个具有相同功能的通用 SDK,但要创建该 SDK,我们需要使用一些 pod 和桥接头文件 我们遇到了如何使用 pod 和桥接标头配置该 SDK 的问题,该标头用于所有 3 个应用程序

请帮助我,我们如何才能做到这一点。

我试图添加带有桥接标头的 pod,但有些 pod 和桥接标头不起作用

iOS Swift Objective-C iPhone Xcode

评论


答:

2赞 Jevin Patel 11/30/2022 #1

您可以使用 Pod 和第三方库创建框架项目。

注意:不能在框架中使用桥接标头。

有 2 种解决方案。1.伞头 2. 模块映射

解决方案 1(伞形标题):

  1. 若要包含所需的 Obj-C 标头,需要将其设置为“公共”:在项目资源管理器(左窗格)中选择它,并将属性“目标成员资格”(左侧 - 检查员窗格)从“项目”更改为“公共”。

[对象会员:公众]
https://i.stack.imgur.com/P26rx.png

  1. 打开 umbrella 标头 (.h) 并将所需的标头导入为:

[在伞形标题中导入标题]
https://i.stack.imgur.com/WEsLG.png
)

这有效地使此标头公开,并可供您自己的框架和使用它的任何人使用。

注意:如果将标头导入为本地文件,即用引号括起来,例如 #import“objc-header.h”,则可能会遇到编译器错误,提示您正在尝试包含非模块化标头。

解决方案 2(模块映射):

在项目的根目录中创建一个名为 module.modulemap 的文件,其中包含以下内容:

[模块.模块映射]

framework module FrameworkName {
   umbrella header "FrameworkName.h"

   header "objc-header.h"

   export *
   module * { export * }
}

如果你想让 objc-header.h 中的定义对框架的用户保持私有,你可以添加私有限定符,如下所示:

 // ...
private header "objc-header.h"
// ...

在“构建设置”中,将“模块映射文件”设置为“module.modulemap”

清理构建目录 (⇧⌘K) 并构建项目 (⌘B)