如何知道你的 cocoapod 安装指向哪个 pod 规范文件

Posted

技术标签:

【中文标题】如何知道你的 cocoapod 安装指向哪个 pod 规范文件【英文标题】:how to know which pod spec file your cocoapod install is pointing to 【发布时间】:2014-04-25 06:53:16 【问题描述】:

我正在尝试通过 cocoapods 安装 sharekit。如果我在 cocoapod 网站上搜索 sharekit.. 我被指示将其放入 podfile 中:

pod 'ShareKit', '~> 2.5'

网站上的sharekit pod链接到this podspec文件,标记为2.5.6。

到目前为止一切顺利。

但是当我运行pod install 命令时(我还添加了platform :ios, '6.0' b/c 不这样做会引发兼容性错误)我收到此错误:

[!] 无法满足以下要求: - SSKeychain (~> 0.2.1) 需要 ShareKit/Core (2.5.6)- SSKeychain (~> 1.2.2) 需要 Evernote-SDK-iOS (1.3.1)

我的问题是:为什么它说明 evernote 1.3.1 需要什么? b/c 2.5.6 podspec 里面有这个:

s.subspec 'Evernote' do |evernote|
   evernote.source_files = 'Classes/ShareKit/Sharers/Services/Evernote/**/*.h,m'
   evernote.dependency 'Evernote-SDK-iOS', '~> 1.3.0'
   evernote.dependency 'ShareKit/Core'
   evernote.libraries = 'xml2'
   evernote.xcconfig =  'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' 
 end

所以它显然链接到 evernote 1.3.0

sharekit master repo 上的podspec 确实将 evernote 1.3.1 列为依赖项。但是这与我的 pod 安装请求有什么关系?

让事情变得更奇怪..不管我输入pod 'ShareKit', '~> 2.5.6' 还是pod 'ShareKit', '~> 2.5.3'.. 我在谈论sharekit 2.5.6 时仍然会出错.. 为什么会这样?

【问题讨论】:

【参考方案1】:

下面解释了如何将 pod 版本链接到您的项目中(它与 Semantic Versioning 密切相关。

除了没有版本或特定版本之外,还可以使用逻辑运算符:

'> 0.1' 任何高于 0.1 的版本

'>= 0.1' 0.1 及更高版本

'

'

除了逻辑运算符之外,CocoaPods 还有一个 optimisic 运算符~>:

'~> 0.1.2' 0.1.2版本及0.2以下版本,不包括0.2及更高版本

'~> 0.1' 0.1及1.0以下的版本,不包括1.0及更高的版本

'~> 0' 0版本及更高版本,这个和没有基本一样。

来源:http://guides.cocoapods.org/using/the-podfile.html

如果您想明确链接到特定版本,请将您的 podfile 更改为以下内容:

pod 'ShareKit', '2.5'

【讨论】:

【参考方案2】:

我认为这将暂时解决问题:

# Install 1.3.0 fix pod install error
pod 'Evernote-SDK-iOS', '1.3.0'
pod 'ShareKit', '~> 2.5'

【讨论】:

以上是关于如何知道你的 cocoapod 安装指向哪个 pod 规范文件的主要内容,如果未能解决你的问题,请参考以下文章

如何快速让你的代码支持Cocoapods!

从零开始,让你的框架支持CocoaPods

Cocoapods:确定 pod 版本

如何使用 ruby​​ 和命令行工具在 Mavericks 中正确安装 cocoapod?

cocoapods安装的库怎么引入

CocoaPods:指向 pod 规范中的一个分支