我有一个已经使用了Cocoapods的项目,但是我想要转换到SPM;不幸的是,我仍然有一些依赖项在SPM中没有。
现在我想尽可能多地将依赖项迁移到SPM,并在必要时将其他依赖项保留在Cocoapods中 - 这是否可行?同时拥有Cocoapods和SPM?
我有一个已经使用了Cocoapods的项目,但是我想要转换到SPM;不幸的是,我仍然有一些依赖项在SPM中没有。
现在我想尽可能多地将依赖项迁移到SPM,并在必要时将其他依赖项保留在Cocoapods中 - 这是否可行?同时拥有Cocoapods和SPM?
我刚刚在我的iOS项目中尝试了CocoaPods和SPM的结合,它可以正常工作。
我正在使用CocoaPods添加Firebase和其他Google库,剩下的则使用Swift Package Manager添加。
当添加SPM依赖时,请在您的项目上打勾,而不是在Pods项目上打勾。
Xcode 11.5,
CocoaPods 1.9.3。
pod install
添加了 CocoaPods,然后使用“文件”→“Swift Packages”→“添加包依赖项”,并选中我的项目(而不是 Pods 项目)来添加 SPM 依赖项。 - Pavel Alexeev点击文件
,然后在列表顶部点击添加包
一个窗口应该会打开,列出了您可以添加为依赖项的苹果包。右上角有一个搜索栏,您可以在其中粘贴您需要的依赖项的 Github 包 URL。这样做将从 Github 获取该包,并允许您在添加之前设置依赖项。
一旦获取了您需要的依赖项,请输入您想要的版本以及您希望 XCode 更新的程度(因为它会自动为您更新包)。通常情况下,选择最新主要版本
是可以的,因为它会将您输入版本为 1.1 的包一直更新到 1.99,而不会跳到可能引入破坏性变更的 2.0 版本。
最重要的部分是,在添加包之前,请确保使用添加到项目
下拉菜单选择您特定项目的名称,而不是使用 Cocoapods 在使用时为您创建的 Pods 项目。
一旦您确定设置正确,点击添加包
,您就可以完成设置了。
swiftpm
文件夹,更具体地说,Package.resolved
文件应该包含在您的源代码控制
/git
中。项目
并点击清理构建文件夹
。然后尝试重新构建您的应用程序。如果遇到任何其他构建问题,请在实际将import TheNewDependencyName
添加到您的项目或测试中时重复此过程。您还可以尝试在清理完成后关闭并重新打开XCode,这有时似乎有助于常常棘手的XCode。xcworkspace
文件打开项目。试用后,我发现你实际上可以让SPM和Cocoapods很好地配合使用。在.xcodeproj上安装SPM库,同时在.xcworkspace上进行开发。这一切都有效(至少对我来说是这样的lol)。
如果您正在使用CI,或者从xcodebuild命令手动启动一些调整,可以使用-clonedSourcePackagesDirPath
标志。
我一开始使用了Swift包管理器,并在我的项目中添加了4个软件包。当我不得不集成admob sdk时,我向我的项目中添加了CocoaPod。 但是,在打开.xcworkspace文件后,软件包的状态显示为“缺失”。我不得不逐个从SPM添加它们。在重新添加了所有4个软件包后,项目可以再次构建和执行。
考虑到所有的利弊,我认为使用CocoaPods是合适的选择,因为SPM仍处于非常初级的阶段,并且不是所有的库都支持它。 请查看Darshan Patel的博客https://blog.kiprosh.com/preferable-dependency-manager-swift-package-manager-spm-or-cocoapods/以了解更多详情。