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