将带有源的 Pod 依赖项添加到 .podspec

Add Pod dependency with source to .podspec

我正在尝试将以下依赖项添加到我的 Podspec

s.dependency 'Apollo/WebSocket', :git => 'https://github.com/apollographql/apollo-ios'

这是我每次尝试 运行 pod lib lint MyPodName.podspec:

时在终端中得到的结果
- ERROR | spec: The specification defined in `MyPodName.podspec` could not be loaded.


[!] Invalid `MyPodName.podspec` file: [!] Unsupported version requirements.

 #  from <PathToMyPodspec>/MyPodName.podspec:36
 #  -------------------------------------------
 #    
 >    s.dependency 'Apollo/WebSocket', :git => 'https://github.com/apollographql/apollo-ios'
 #    
 #  -------------------------------------------

我已经在我的一个 iOS 项目中成功地将它用作 Pod。但是现在我自己创建了一个 pod,我很难理解我应该怎么做才能让它发挥作用。

提前致谢!

看来不允许在PodSpec中这样定义依赖。请参考 Dependency

上的 CocoaPod 指南文档

它似乎应该只包含如下所述的版本信息。不允许使用其他格式。

已解决!

事实证明,项目的 Podfile 文件在这一切中起着主要作用。我在所述项目的 /Example 文件夹中找到了它。我所做的是:

use_frameworks!
source = 'https://github.com/apollographql/apollo-ios'
source = 'https://github.com/apollographql/apollo-ios'

target 'MyPodName_Example' do

  pod 'Apollo'
  pod 'Apollo/WebSocket'
  pod 'MyPodName', :path => '../'

  target 'MyPodName_Tests' do
    inherit! :search_paths


  end
end

(我不太确定我是否需要这两行 source 但它确实是这样工作的)

然后我运行pod install/Example目录下

之后我返回到我的 MyPodName.podspec 文件并将依赖项编辑为如下所示:

  s.dependency 'Apollo'
  s.dependency 'Apollo/WebSocket'

然后我 运行 pod lib lint MyPodName.podspec 在根目录(我的 .podspec 文件所在的位置),这次成功了。


注意:

  • 我需要 ApolloApollo/WebSocket 依赖项。
  • 我还没有推送我的 Pod,无法保证运行所有这些都是 100% 正确的
  • 我是 CocoaPods 的新手,所以这可能不是问题的最佳解决方案。

据此CocoaPods/issues/2485, CocoaPods/issues/922, podspecs 现在无法指定依赖源。

选择:

对于 public 回购

直接用s.dependency 'Apollo/WebSocket', '~> 0.0.1'就可以了

如果您要指定私有存储库

随意按照此blog's步骤创建(pod repo push)私人图书馆。然后你应该可以使用 s.dependency 'YourPrivateProjectName', '~> 0.0.1'

来指定你的私人项目

执行验证时,您需要在托管 podspec 的存储库中输入带有 link 的命令。像这样的东西 pod lib lint --sources=git@github.com:CocoaPods/Specs.git,git@github.com:otherRepos