将 Swift 框架嵌入到另一个框架 Xcode

Posted

技术标签:

【中文标题】将 Swift 框架嵌入到另一个框架 Xcode【英文标题】:Embedding a Swift Framework into another Framework Xcode 【发布时间】:2021-01-12 16:19:13 【问题描述】:

我基本上有两个在 Xcode 上运行的框架。 “ResearchKit”和“AppMethods”。虽然一切正常,但“AppMethods”框架使用“ResearchKit”中的代码。事实上,它可以将更多方法抽象到框架中。各种超类。

在代码中使用它们时,我必须导入两个框架

import ResearchKit
import AppMethods

有没有办法在 AppMethods 中嵌入 ResearchKit,这样我只需要导入 AppMethods。没有ResearchKitAppMethods 将不存在。

【问题讨论】:

【参考方案1】:

这实际上取决于您在应用程序中实现和使用这些框架的方式。 一般来说,ios 不支持嵌套框架 - 请阅读follwoing。 但是可以在每个框架内完成导入 - 即您可以直接从 AppMethods 导入 ResearchKit 并且只需“告诉”Xcode 代码将在编译时存在,您必须在 App 级别链接框架。我发现了另一个有用的guide

使用CoacoaPods 和SPM 很容易实现

【讨论】:

【参考方案2】:

你的“堆栈”是这样的:

App
|
AppMethods (AM for short)
|
ResearchKit (RK for short).

在应用程序的类中,您无需显式调用 RK API(类或方法),您不必导入 RK。否则,你必须导入 RK。

请注意,您可以将一个库嵌入到另一个库中(在这种情况下,RK 位于 AM 中),并且可能确保 AM 之外的任何人都不了解 RK。但是一旦你开始在你的应用程序中显式调用 RK api,除了在 AM 中显式导入 RK 之外别无他法。

【讨论】:

以上是关于将 Swift 框架嵌入到另一个框架 Xcode的主要内容,如果未能解决你的问题,请参考以下文章

Xcode:“没有这样的模块”嵌入式框架

将框架嵌入到另一个框架中

无法调试嵌入在 Objective-C 应用程序中的 Swift 模块/框架

将框架从 SwiftPM 嵌入到 Cocoa 应用程序 (XCODE)

Xcode 11.3.1 没有将二进制第三方框架嵌入到包(IPA)中[重复]

无法在Xcode 10上进行存档