如何对 swift 包进行版本控制

use*_*472 4 swift swift-package-manager

使用 Xcode 12.4 和 Swift 5.3,我使用清单文件定义了一个包Package.swift。将其包含在应用程序中后,我想更新包。为此,我更改了新版本的链接并更新了校验和;文件的相关部分如下所示:

let package = Package(
    name: "MyPackage",
    // omitted platforms and products
    targets: [ .binaryTarget( name: "MyPackage",
                              url: "https://artifactory/mypackage-v1.1.zip",
                              checksum: "..." ) ] )
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息artifact of binary target 'MyPackage' has changed checksum; this is a potential security risk so the new artifact won't be downloaded。通过删除整个DerivedData文件夹可以忽略此错误,但这显然不会更新版本号。这个答案中建议了另一个解决方案,但同样它不会影响版本控制。官方文档详细介绍了依赖包版本,但我找不到如何指定 CURRENT 包的版本。

如何合法地指定和更新版本号,以便将新工件识别为不同的新版本并正确下载?

gch*_*ita 8

当您想要使用xcframework文件分发(私下或公开)封闭源代码包时,您通常需要创建一个 git 存储库,该Package.swift存储库仅包含您在其中声明binaryTarget. (或 binaryTargets)无论谁有权访问此存储库,也都应该有权访问url您在 中声明的binaryTarget以便安装您的包。

正如 @Larme 和 @matt 在评论中正确提到的,要指定对应于每个版本的提交,您必须在 git 存储库中使用标签,就像在 cocoapod 存储库中一样,只有您会在仅包含文件Package.swift。有关更多详细信息,请参阅使用 Xcode 发布 Swift 包文档中的“标记您的最新提交”部分。

您可以使用 PSPDFKit 作为示例,它是一个已知且维护良好的封闭源代码包,可以使用github 存储库进行安装。