如何在一个项目中同时使用 Swift Package Manager (SPM) 和 cocoapods?

问题描述 投票:0回答:5

我有一个使用 Cocoapods 的现有项目,但我想切换到 SPM;不幸的是,我仍然有 SPM 中不可用的依赖项。

现在我想将尽可能多的依赖项移至 SPM,并根据需要将其他依赖项保留在 Cocoapods 中 - 这可能吗? Cocoapods 和 SPM 都拥有吗?

cocoapods swift-package-manager
5个回答
31
投票

我刚刚在我的 iOS 项目上尝试了使用 SPM 的 CocoaPods,效果很好。
我使用 CocoaPods 添加 Firebase 和其他 Google 库,并使用 Swift Package Manager 添加其余库。

添加 SPM 依赖项时,请在您的项目上打勾,而不是在 Pods 项目上打勾。

Xcode 11.5,
CocoaPods 1.9.3.


1
投票

尝试之后,我发现实际上可以用 SPM + Cocoapods 来玩得很好。您可以在 .xcodeproj 上安装 SPM 库,同时在 .xcworkspace 上进行开发。这一切都有效(至少到目前为止对我来说是这样,哈哈)。

如果您使用 CI,或者从 xcodebuild 命令手动启动,请使用

-clonedSourcePackagesDirPath
标志进行一些调整


0
投票

我一开始就使用了 swift 包管理器,并在我的项目中添加了 4 个包。当我必须集成admob sdk时。我将 cocoapod 添加到我的项目中。 但打开 .xcworkspace 文件后。包裹状态显示为“缺失”。我必须从SPM一一添加它们。再次添加所有 4 个包后。该项目可以再次构建并执行。


0
投票

从 XCode 14.2 和 CocoaPods 1.13 开始,您绝对仍然可以将 Swift Package Manager 与 Cocoapods 一起使用,这对于缓慢迁移依赖项非常有帮助。

自 2020 年以来,该流程仅发生了一点变化,因此这是更新版本

  1. 转到

    File
    ,然后在列表顶部单击
    Add Packages

  2. 应打开一个窗口,其中列出了您可以添加为依赖项的 Apple 软件包。右上角有一个搜索栏,您可以在其中粘贴所需依赖项的 Github 包 URL。这样做将从 Github 获取该包,并允许您在添加之前设置依赖项。

  3. 获取您需要的依赖项后,输入您想要的版本,以及您希望 XCode 更新它的程度(因为它会自动为您更新包)。通常

    Up to Next Major Version
    没问题,因为它会采用一个包,您可以在其中输入 1.1 版本一直到 1.99,而不会跳转到可能发生重大更改的 2.0。

  4. 最重要的部分是确保在添加包之前,使用

    Add to Project
    下拉列表选择您的特定项目名称,而不是 Cocoapods 在使用时为您创建的 Pods 项目。

  5. 一旦确定设置正确,请点击

    Add Package
    ,一切就都准备好了。

除了这些步骤之外,值得注意的是,您应该提交将要构建的

swiftpm
文件夹,更具体地说,
Package.resolved
文件应包含在您的
source control
/
git
中。

此外,如果您的项目在添加 SPM 依赖项后无法正确构建,请转到

Project
并单击
Clean Build Folder
。然后,尝试重建您的应用程序。如果您遇到任何其他构建问题,请在项目或测试中实际添加
import TheNewDependencyName
时重复此过程。您也可以尝试这个过程,在清理完成后关闭并重新打开 XCode,这有时似乎对经常挑剔的 XCode 有帮助。

与往常一样,如果使用 Cocoapods,您必须继续使用在项目根文件夹中创建的

xcworkspace
文件打开项目。


-8
投票

考虑到所有的优点和缺点,我发现使用 CocoaPods 是合适的,因为 SPM 仍处于非常初级的阶段,并不是所有的库都支持它。 请浏览 Darshan Patel 撰写的博客 https://blog.kiprosh.com/preferable-dependency-manager-swift-package-manager-spm-or-cocoapods/ 了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.