Невозможно найти спецификацию в CocoaPods


86

Я не могу понять, почему Cocoapod не может найти созданную мной спецификацию модуля при запуске pod install. Может ли кто-нибудь помочь мне решить эту проблему?

Я определяю подспецификацию в файле podspec моей библиотеки следующим образом:

s.subspec 'mysubspec' do |c|
  c.dependency 'ABC','1.0.0'
end 

Эта зависимость ABC указана в библиотеке Podfile:

pod 'ABC', :git => 'git@github.com:myrepo/Podspecs.git', :branch => 'xyz'

Файл Podspec ABC.podspecв ветке xyz myrepo / Podspecs выглядит так:

Pod::Spec.new do |s|
  s.name         = "ABC"
  s.version      = "1.0.0"
  s.source       = { :git => "git@github.com:myrepo/Podspecs.git", :branch => "xyz" }
end

Ошибка [!] Unable to find a specification for ABC (= 1.0.0)

Решение: импортируйте модуль ABC перед импортом подспецификации и добавьте тег в спецификацию модуля.


Какую ошибку вы получаете? Скопируйте и вставьте его в свой вопрос.
Энтони

ОшибкаUnable to find specification for 'ABC' (=1.0.0)
Гай Август

Ответы:


21

Вместо того:

s.source       = { :git => "git@github.com:myrepo/Podspecs.git", :branch => "xyz" }

Напишите это: Не забудьте тег ...

s.source       = { :git => "https://github.com/myrepo/Podspecs.git", :branch => "xyz",
                   :tag => s.version.to_s }

Вы должны сообщить модулю, какой тег ru говорит. Это обязательно.
gran33

Просто добавьте тег к своему последнему
коммиту

1
Я попробую. К сожалению, этого нет в документации Podspec.
Гай Август

Это не решило проблему: [!] Unable to find a specification for ABC (= 1.0.0) `
Гай Август

1
Решил проблему! Я должен импортировать модуль ABC перед импортом подспецификации.
Гай Август

185

Я полагаю, что есть проблема с вашим репозиторием pod master. Удалите его и загрузите снова.

Ты можешь сделать:

pod repo remove master
pod setup
pod install

Или:

sudo rm -fr ~/.cocoapods/repos/master
pod setup
pod install

50
Просто бег pod setupсделал свое дело.
Nagendra Rao

1
Для меня проблема была решена только после запуска строки удаления! Однако на настройку потребовалось время.
sinewave440hz

2
Вот это да! Этот. По какой-то причине мое основное репозиторий Spec настроено неправильно, и мне пришлось удалить его таким образом, а затем выполнить настройку и установку. Спасибо за это!
praneetloke

1
«установка модуля» заняла довольно много времени, но это было все, что мне было нужно (как упомянул Рао)
Крис Аллинсон,

3
pod repo update && pod setupВозможно, сначала захотите попробовать - если в вашем репо просто отсутствуют спецификации, это может исправить это и будет быстрее, чем повторное клонирование всего репо с нуля.
Элиот

35

Для меня это была проблема с поиском спецификации, а не самой спецификации. Мне нужно было добавить ссылку на источник в Podfile, см. Документацию Podfile

Cocoapods недавно добавили необходимость ссылки на репо, в котором хранится файл спецификации пода, который вы ищете, по умолчанию:

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

Возможно, вам придется добавить несколько ссылок на источники, если вы используете более непонятные или самодельные модули.


1
Это не может быть обязательным требованием (по крайней мере, в последней версии), потому что мне не нужно было добавлять ссылки на источники, и после того, как я следовал предложению Гастона, все работало нормально.
sinewave440hz

@ sinewave440hz, добавление источника чаще всего используется, когда вам нужно получить доступ к нестандартному частному .gitрепо. Источник по умолчанию - общедоступный.
ScottyBlades

Понятно, спасибо (не то чтобы я что-то писал об этом, но уверен, что это где-то поможет: D)
sinewave440hz

7

Я разрешаю это после добавления

source '/Users/username/Documents/path/to/iOS_SpecsRepository'
source 'https://github.com/CocoaPods/Specs.git'

в подфайл. ну. Я использовал локальный репозиторий в качестве своего репо. Так что я могу использовать это в другом файле podspec

s.dependency 'iOS_Networking_CPN', '~> 0.1.1'

iOS_Networking_CPN находится на локальном пути.


source '/ Users / username / Documents / path / to / iOS_SpecsRepository' работал, вы знаете, почему я должен использовать локальный исходный путь?
gabbler

на мой взгляд, потому что каждому устройству нужен локальный репозиторий для podspec
zippo

7

Со мной это сработало как шарм.

pod repo remove master
pod setup

Однако вы можете попробовать напрямую, pod setupкак указали некоторые пользователи.


6

Убедитесь, что вы добавили

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

в самом начале вашего подфайла


2
Это особенно актуально, если вы хотите добавить личный модуль.
Стэн


4

Я получал аналогичную ошибку для MGBoxkit

[!] Не удалось найти спецификацию для MGBoxkit

Заменив следующую строку

pod 'MGBoxkit'

с участием

pod 'MGBoxKit'

исправил проблему.


в чем разница?
Gargo

Typo as k был заменен на K.
zeeawan

2

Сначала вам нужно добавить свой Podspec в частный репозиторий спецификаций; это позволяет CocoaPods находить модуль при попытке его установки.

Введите в Терминал следующее, убедившись, что вы все еще находитесь в каталоге фреймворка, который пытаетесь добавить:

pod repo add [your framework name] [Your framework Git URL]
pod repo push [your framework name] [your framework .podspec file name]


1

Я решил свою проблему с помощью следующей команды:

обновление стручка какао

Для обновления используйте эту команду

sudo gem установить cocoapods

если приведенная выше команда дает ошибку, чем используйте эту

sudo gem install -n / usr / local / bin cocoapods

и чем это сделать

пакет обновления репо


1

Для меня приведенное ниже сработало хорошо, но сначала попробуйте использовать прямую команду «pod setup». Если это не сработает, то используйте приведенные ниже команды, чтобы все произошло.

pod repo удалить master
pod setup
pod install


Как это отличается от @ Гастон-Антонио Монтес игрового ответа ?
Лев,


0

была такая же проблема.

что действительно сработало для меня gem uninstall cocoapods(как упоминалось выше https://stackoverflow.com/users/4264880/seema-sharma ), где я обнаружил, что у меня установлено 11 (!) различных версий cocoapods.

Я решил удалить все, а затем gem install cocoapods:1.4.0

Теперь все хорошо.



0

Ни один из ответов мне не помог. В конце концов я выяснил, что у меня была опечатка для одного из модулей .

Пример: - Firebaseresulrereres/Analytics. Это должно было быть, Firebase/Analyticsно без моего ведома имя модуля имело неправильное написание Firebaseresulrereres/Analytics.

Исправление имени модуля помогло мне! . Однако на то, чтобы найти это, мне потребовался 1 час !. Иногда разработка может быть неоднозначной и разочаровывающей! :)


0

Я работал в трепете со всеми публичными репозиториями. У меня была аналогичная ошибка:

Unable to find a specification for `TOCropViewController (~> 2.5.2)` depended upon by `image_cropper`

По какой-то причине TOCropViewControllerспецификации не было. Я пробовал следующее:

flutter clean
rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
rm ios/Podfile
flutter run

Но спецификация плагина по-прежнему недоступна. Наконец, я решил это, удалив мастер репозитория модуля.

pod repo remove master
sudo rm -rf ~/.cocoapods/repos
pod setup
pod install

Чтобы проверить и подтвердить, что плагин здесь, я попробовал grepвнутри .cocoapods, используя:

 grep -r "TOCropViewController" -n ~/.cocoapods

Внутри ~/.cocoapods/repos/trunk/Specs/3/7/4/TOCropViewController/2.5.2/TOCropViewController.podspec.json

Я нашел git-репозиторий плагина и правильный номер версии.

  "source": {
    "git": "https://github.com/TimOliver/TOCropViewController.git",
    "tag": "2.5.2"
  },

После этого flutter cleanи flutter runприступил к работе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.