CocoaPods更新正在降级已安装的pod

Jor*_*ndo 5 objective-c ios cocoapods

当我运行时pod update,MMDrawerController正在从当前安装的版本(0.5.7)降级到较旧的版本(0.4.0).

这是我的Podfile的内容:

source 'https://github.com/CocoaPods/Specs.git'

link_with 'OpenEye-Mobile', 'SecurityStar Tests'

platform :ios, '7.0'

pod 'AFNetworking', '~> 2.5.0'
pod 'MBProgressHUD', '~> 0.9'
pod 'MMDrawerController'
pod 'MMDrawerController+Storyboard', '~> 0.0.1'
pod 'UIAlertView+Blocks', '~> 0.8.1'

target :"SecurityStar Tests" do
  pod 'OCMock', '~> 3.1.1'
end
Run Code Online (Sandbox Code Playgroud)

我刚刚将cocoapods宝石从v.3.44更新到0.35.0.我对Podfile的唯一更改是AFNetworking从2.3.1 更新到2.5.0.如果我尝试明确指定MMDrawerController为v.5.5.7,则会出现依赖性错误:

- `MMDrawerController (= 0.5.7)` required by `Podfile`
- `MMDrawerController (~> 0.4.0)` required by `MMDrawerController+Storyboard (0.0.1)`
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?为什么这是一个突然出现的问题?cocoapods 0.35有什么变化吗?有没有办法可以强迫MMDrawerController+Storyboard你做好MMDrawerController (= 0.5.7)

小智 5

解决方案 1指定与 MMDrawerController+Storyboard 中相同的范围

pod 'MMDrawerController', '~> 0.4.0'
Run Code Online (Sandbox Code Playgroud)

解决方案 2是更新 MMDrawerController+Storyboard podspec 以便它使用最新版本。

解释 问题正如它所说:依赖错误。

podfile 中的这一行表示采用最新的(04.02 为 0.5.7):

pod 'MMDrawerController'
Run Code Online (Sandbox Code Playgroud)

虽然这个要求 'MMDrawerController+Storyboard' :

pod 'MMDrawerController+Storyboard', '~> 0.0.1'
Run Code Online (Sandbox Code Playgroud)

反过来,它在它的 podspec 中指定为依赖项:

s.dependency 'MMDrawerController', '~> 0.4.0'
Run Code Online (Sandbox Code Playgroud)

'~> 0.4.0' 表示它可以使用 0.4.0 - 0.4.9 版本,并且 0.5.7 与 0.4.0 - 0.4.9 没有交集。

  • 我想让我感到困惑的是,`MMDrawerController` 已经在 0.5.7 上安装了,`MMDrawerController+Storyboard` 已经安装在 0.0.1 上。podspec 是否可能更改为“MMDrawerController+Storyboard”,因此现在尝试更新它会导致依赖项错误,而之前没有?听起来我最好的选择是继续更新 podspec,因为我不想降级`MMDrawerController`。 (2认同)