Добавьте зависимость Pod с источником в .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'
 #    
 #  -------------------------------------------

Я успешно использовал его в качестве Pod в одном из моих проектов iOS. Но теперь, когда я сам создаю модуль, я изо всех сил пытаюсь понять, что я должен сделать, чтобы он работал.

Заранее спасибо!


person EBDOKUM    schedule 18.04.2019    source источник
comment
Все еще не понимаю вашей проблемы. Вы получаете какую-либо ошибку или совершенно не знаете, как чего-то достичь? Пожалуйста, объясни.   -  person Anand    schedule 18.04.2019
comment
@ Ананд, прости, мой плохой. Я расширил свой вопрос, пожалуйста, посмотрите.   -  person EBDOKUM    schedule 18.04.2019


Ответы (4)


Решено!

Оказывается, главную роль во всем этом играет документ 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), и на этот раз это удалось.


ВНИМАНИЕ:

  • Мне нужны были как Apollo, так и Apollo/WebSocket зависимости.
  • Я еще не запушил свой Pod и не могу гарантировать, что все это на 100% правильно.
  • Я новичок в CocoaPods, поэтому это может быть не самое оптимальное решение проблемы.
person EBDOKUM    schedule 18.04.2019

Похоже, что в PodSpec нельзя определять зависимость таким образом. См. руководство CocoaPod по адресу Зависимость.

Кажется, он должен содержать только информацию о версии, как указано ниже. Другие форматы не допускаются.

введите описание изображения здесь

person Anand    schedule 18.04.2019
comment
Да, только в подфайле можно указать расположение других подспецификаций. - person Paul Beusterien; 18.04.2019
comment
Могу ли я что-нибудь сделать? - person EBDOKUM; 19.04.2019

Согласно этому CocoaPods/issues/2485, CocoaPods/issues/922, podspecs теперь не может указывать источник зависимостей.

Альтернатива:

Для публичного репозитория:

Просто используйте s.dependency 'Apollo/WebSocket', '~> 0.0.1' напрямую.

Если вы указываете частное репо

Следуйте шагу в блоге. создать(pod repo push) частную библиотеку. Затем вы сможете указать свой частный проект, используя s.dependency 'YourPrivateProjectName', '~> 0.0.1'

person boog    schedule 13.06.2019

При выполнении проверки вам необходимо ввести команду со ссылкой на репозитории, в которых размещены ваши подспеки. Что-то вроде этого pod lib lint [email protected]:CocoaPods/Specs.git,[email protected]:otherRepos

person Prashuk Jain    schedule 09.05.2021