Не вдається знайти специфікацію в CocoaPods


85

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

Я визначаю підспект у своєму файлі підспецу бібліотеки таким чином:

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)
Гай Август

Відповіді:


20

Замість:

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 стручка перед тим, як імпортувати підспецифіку.
Гай Август

184

Припускаю, що є проблема з вашим майстер-репо. Видаліть його та завантажте ще раз.

Ви можете зробити:

pod repo remove master
pod setup
pod install

Або:

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

50
Просто біг pod setupзробив роботу.
Нагендра Рао

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'

до Podfile. ну. Я використовував локальне сховище як своє Repo. Тож я можу використати це в іншому файлі podspec

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

iOS_Networking_CPN знаходиться на місцевому шляху.


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

на мій погляд, тому що кожному пристрою потрібен локальний сховище для підспекту
zippo

7

У мене це спрацювало як шарм.

pod repo remove master
pod setup

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


6

Переконайтеся, що ви додали

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

на самому початку вашого Podfile


2
Це особливо актуально, якщо ви хочете додати приватний стручок.
Стен


4

Я отримував подібну помилку для MGBoxkit

[!] Не вдається знайти специфікацію для MGBoxkit

Замінивши наступний рядок

pod 'MGBoxkit'

з

pod 'MGBoxKit'

вирішено проблему.


яка різниця?
Гарго

Друкарську
помилку

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

і чим це зробити

pod repo оновлення


1

Для мене наведене нижче спрацювало добре, але спочатку спробуйте, можливо, пряму команду "налаштування стручка". Якщо це не спрацює, перейдіть до наведених нижче команд, безумовно, змусить речі відбутися.

POD репо видалити майстер
установки стручок
PoD установки


Як це відрізняється від @ Гастон-Антоніо Монтес ігрового відповіді ?
Лев


0

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

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

Я вирішив видалити все, а потім 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 repo плагіна та правильний номер версії.

  "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.