将 Swift 包添加到自定义框架

Add Swift Package to a custom framework

对创建具有 SPM 依赖项的框架还很陌生。所以我创建了一个新的框架项目,添加了一些我的 classes/files 以及 SPM 依赖项(CocoaLumberjack 记录器)。框架编译正常。

当我查找计划嵌入到其他项目中的框架产品时,我发现它在我的 Products 文件夹中。除了它,我还看到了 CocoaLumberjack 模块。在我的框架内,除了 exec 文件之外没有太多内容。

当我尝试将我的框架嵌入到其他一些项目中时。没有编译,因为它说缺少 CocoaLumberjack 模块。

有谁知道如何解决这个问题?我是否错过了重要的一步或其他事情?

嗯,在导入框架本身的过程中,您可能会遇到很多问题。它还取决于您是将框架用作二进制文件还是源代码。我假设您使用的是源代码方法,因为您是框架的创建者。但是,您可以在此处检查所有方法:in this SO question。让我们看看您需要实施的所有步骤,以便在您的 swift 项目中成功使用具有 SPM 依赖项的框架。

  1. 正确创建 SPM 以及 link 所有额外的 SPM 依赖项 tutorial here。确保所有 类、结构等及其相应的初始值设定项具有正确的访问级别 属性。如果您打算在包外使用它们,请使用 public 初始化程序。 2) 一旦你创建了你的 SPM 包,link 它到框架。为了这个答案,我创建了 testFramework 并 linked 我的自定义 SPM 包之一 VodApiPackage 。这个包还包含对另一个 BaseTvApiServicePackage.
  2. 的依赖

我还添加了 TestPrinter 文件,其中包含用于创建在我的 SPM 包中声明的错误的简单函数。此功能服务器仅用于检查一切是否正常工作,稍后将供用户使用。它也声明为 public.

import Foundation
import VodApiPackage

public struct TestPrinter {
public init () {}

public func makeTest() {
    let x = VodApiError.customErr(msg: "testMsg")
    print(x.localizedDescription)
}

}

  1. 打开你的项目,把link做成framework,你也可以勾选这个nice tutorial。教程中最重要的一步是第 5 步和第 6 步。将 .xcproj 拖到项目和 link 库和框架中的位置

  2. 确保您的库和 SPM 依赖项在您的项目中正确 linked。检查下面的示例项目。

  1. 使用您的框架及其包构建和测试:

    import UIKit
    import testFramework
    
    class ViewController: UIViewController {
    
    
     override func viewDidLoad() {
      super.viewDidLoad()
      testmodel()
    
     TestPrinter().makeTest()
     }
    }