如何使用 SPM 托管在私有仓库中的 .zip 格式的二进制或 xcFramework

Posted

技术标签:

【中文标题】如何使用 SPM 托管在私有仓库中的 .zip 格式的二进制或 xcFramework【英文标题】:How to use binary or xcFramework in .zip format hosted in private repo using SPM 【发布时间】:2021-09-17 21:07:03 【问题描述】:

我想通过 SPM 使用 GoogleMaps SDK,所以我关注了这个 url https://github.com/YAtechnologies/GoogleMaps-SP。

以下是我做的步骤

第 1 步: 将所有 5 个 xcFrameworks 上传到 nexus。 例如:https://xxx/google/google-maps/5.0.0/google-map.zip

第 2 步: 使用上述所有 xcFramework zip url 创建一个 package.swift 文件并上传到 gitLab。 所以它与https://github.com/YAtechnologies/GoogleMaps-SP/blob/main/Package.swift 相同。只有 zip url 会被我们的 nexus url 替换。

第 3 步: 成功添加到 Xcode 中。文件 > Swift 包 > 添加包依赖

在  File > Swift Packages > Reset Packages Cache 之后成功运行。

问题:但问题是每当我运行 pod Install 或更改分支时,我都会遇到错误

二进制目标“GoogleMaps”的工件提取失败: 操作无法完成。 (TSCBasic.StringError 错误 1。)

二进制目标“GoogleMapsBase”的工件提取失败: 操作无法完成。 (TSCBasic.StringError 错误 1。)

二进制目标“GoogleMapsCore”的工件提取失败: 操作无法完成。 (TSCBasic.StringError 错误 1。)

二进制目标“GoogleMapsM4B”的工件提取失败: 操作无法完成。 (TSCBasic.StringError 错误 1。)

二进制目标“GooglePlaces”的工件提取失败: 操作无法完成。 (TSCBasic.StringError 错误 1。)

临时解决方案是在 xcode 中通过“File > Swift Packages > Reset Packages”来重置包内容。

那么,什么可以永久解决这个问题,因为如果我直接使用 public https://github.com/YAtechnologies/GoogleMaps-SP.git as 依赖项,那么我就不会面临一次又一次重置包内容的问题。可能是我正在使用私有 xcFramework zip url 或 repo,这就是我收到此错误的原因。所以任何人都有任何线索。可能是解决方案。

可能是 SPM 有问题 https://github.com/firebase/firebase-ios-sdk/issues/7363

【问题讨论】:

【参考方案1】:

这个问题在 Xcode 13 和 swift 5.0 或 >5.0 中得到解决。

【讨论】:

以上是关于如何使用 SPM 托管在私有仓库中的 .zip 格式的二进制或 xcFramework的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 setup.py 安装托管在私有 PyPI 中的包?

PyCharm 使用Github托管Django项目

私有仓库托管

如何在云服务器创建maven私有仓库

干货!Git 如何使用多个托管平台管理代码

Git- 连接远程仓库