将 Swift Package 添加到自定义框架

Eug*_*din 6 swift swift-package-manager

创建具有 SPM 依赖项的框架相当新鲜。因此,我创建了一个新的框架项目,添加了一些类/文件以及 SPM 依赖项(CocoaLumberjack 记录器)。框架编译良好。

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

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

有谁知道如何解决这一问题?我是否错过了重要的一步或什么?

Mr.*_*Oak 4

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

  1. 正确创建 SPM,并在此处链接所有其他 SPM 依赖项教程。确保所有类、结构等及其相应的初始值设定项具有正确的访问级别属性。如果您计划在包外使用它们,请使用公共初始值设定项。 2) 创建 SPM 包后,将其链接到框架。为了得到这个答案,我创建testFramework并链接了一个名为 的自定义 SPM 包VodApiPackage。该包还包含对另一个BaseTvApiServicePackage.

截图1

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

import Foundation
import VodApiPackage

public struct TestPrinter {
public init () {}

public func makeTest() {
    let x = VodApiError.customErr(msg: "testMsg")
    print(x.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)

}

  1. 打开您的项目并链接到框架,您还可以查看这个不错的教程。教程中最重要的步骤是步骤 5 和 6。拖入.xcproj项目并链接库和框架的位置

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

截图1

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

    import UIKit
    import testFramework
    
    class ViewController: UIViewController {
    
    
     override func viewDidLoad() {
      super.viewDidLoad()
      testmodel()
    
     TestPrinter().makeTest()
     }
    }
    
    Run Code Online (Sandbox Code Playgroud)