如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章