Nie można znaleźć specyfikacji w CocoaPods

86

Nie mogę zrozumieć, dlaczego Cocoapod nie może znaleźć specyfikacji poda, którą utworzyłem podczas uruchamiania pod install. Czy ktoś mógłby mi pomóc rozwiązać ten problem?

Definiuję podgrupę w moim pliku podspec biblioteki w następujący sposób:

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

Ta zależność ABC jest wymieniona w bibliotece Podfile:

pod 'ABC', :git => '[email protected]:myrepo/Podspecs.git', :branch => 'xyz'

Plik Podspec ABC.podspecw gałęzi xyz myrepo / Podspecs wygląda następująco:

Pod::Spec.new do |s|
  s.name         = "ABC"
  s.version      = "1.0.0"
  s.source       = { :git => "[email protected]:myrepo/Podspecs.git", :branch => "xyz" }
end

Błąd jest [!] Unable to find a specification for ABC (= 1.0.0)

Rozwiązanie: zaimportuj pod specyfikację ABC przed zaimportowaniem podgrupy i dodaj tag do specyfikacji podrzędnej.

Gaius Augustus
źródło
Jaki błąd otrzymujesz? Skopiuj go i wklej do pytania.
Anthony
Błąd toUnable to find specification for 'ABC' (=1.0.0)
Gaius Augustus

Odpowiedzi:

21

Zamiast:

s.source       = { :git => "[email protected]:myrepo/Podspecs.git", :branch => "xyz" }

Napisz to: Nie zapomnij tagu ...

s.source       = { :git => "https://github.com/myrepo/Podspecs.git", :branch => "xyz",
                   :tag => s.version.to_s }
gran33
źródło
Musisz powiedzieć kapsułu, który tag ru mówi. To konieczność.
gran33
Po prostu dodaj tag do ostatniego zatwierdzenia
gran33
1
Spróbuję tego. Niestety nie ma go w dokumentacji Podspec.
Gaius Augustus
To nie rozwiązało problemu: [!] Unable to find a specification for ABC (= 1.0.0) `
Gaius Augustus
1
Rozwiązałem problem! Muszę zaimportować pod ABC przed zaimportowaniem podgrupy.
Gaius Augustus
185

Przypuszczam, że wystąpił problem z twoim repozytorium pod master. Usuń go i pobierz ponownie.

Możesz to zrobić:

pod repo remove master
pod setup
pod install

Lub:

sudo rm -fr ~/.cocoapods/repos/master
pod setup
pod install
Gastón Antonio Montes
źródło
50
Wystarczyło uruchomić pod setup.
Nagendra Rao
1
U mnie tylko uruchomienie linii usuwania rozwiązało problem! Jednak konfiguracja zajęła trochę czasu.
sinusoida440hz
2
Łał! To. Z jakiegoś powodu moje główne repozytorium Spec nie było poprawnie skonfigurowane i musiałem je usunąć w ten sposób, a następnie skonfigurowałem i zainstalowałem. Dzięki za to!
praneetloke
1
`` Konfiguracja pod '' zajęła trochę czasu, ale było wszystko, czego potrzebowałem (jak wspomniał Rao)
Chris Allinson,
3
Może warto spróbować pod repo update && pod setupnajpierw - jeśli w repozytorium brakuje tylko specyfikacji, może to naprawić i będzie szybsze niż ponowne klonowanie całego repozytorium od zera.
Eliot
35

Dla mnie był to problem ze znalezieniem specyfikacji, a nie samej specyfikacji. Musiałem dodać łącze źródłowe do pliku Podfile, zobacz dokumentację Podfile

Cocoapods niedawno dodała potrzebę linkowania do repozytorium, które przechowuje plik specyfikacji pod, którego szukasz, domyślnie:

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

Może być konieczne dodanie wielu linków źródłowych, jeśli używasz mniej znanych lub domowych strąków.

dloomb
źródło
1
Nie może to być wymóg (przynajmniej nie przy najnowszej wersji), ponieważ nie musiałem dodawać linków do źródeł i po zastosowaniu się do sugestii Gastóna wszystko działało dobrze.
sinusoida440hz
@ sinewave440hz, dodanie źródła jest najczęściej używane, gdy potrzebujesz dostępu do niestandardowego prywatnego .gitrepozytorium. Domyślnym źródłem jest publiczne.
ScottyBlades
Rozumiem, dzięki (nie pamiętam, żebym coś takiego pisał, ale na pewno komuś to pomoże: D)
sinusoida440hz
7

Rozwiązuję to po dodaniu

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

do Podfile. cóż. jako mojego repozytorium użyłem lokalnego repozytorium. Więc mogę użyć tego w innym pliku podspec

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

iOS_Networking_CPN znajduje się na ścieżce lokalnej.

zippo
źródło
source '/ Users / username / Documents / path / to / iOS_SpecsRepository' zadziałało, czy wiesz, dlaczego muszę używać lokalnej ścieżki źródłowej?
gabbler
moim zdaniem, bo każde urządzenie potrzebuje lokalnego repozytorium na podspec
zippo.
7

U mnie to zadziałało jak urok.

pod repo remove master
pod setup

Możesz jednak spróbować bezpośrednio, pod setupjak wskazywali niektórzy użytkownicy.

Hemang
źródło
6

Upewnij się, że dodałeś

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

na samym początku pliku Podfile

Ugo Marinelli
źródło
2
Jest to szczególnie istotne, jeśli chcesz dodać prywatny pod.
Stan
5

Zaktualizuj repozytorium główne dla cocoapods.

`pod repo update master`
Idan Magled
źródło
4

Otrzymałem podobny błąd dla MGBoxkit

[!] Nie można znaleźć specyfikacji dla MGBoxkit

Zastępując następujący wiersz

pod 'MGBoxkit'

z

pod 'MGBoxKit'

naprawiono problem.

zeeawan
źródło
jaka jest różnica?
Gargo
Typo as k zostało zastąpione przez K.
zeeawan
2

Najpierw musisz dodać swój Podspec do prywatnego repozytorium specyfikacji; pozwala to CocoaPods znaleźć kapsułę podczas próby jej zainstalowania.

Wprowadź następujące informacje w Terminalu, upewniając się, że nadal znajdujesz się w katalogu struktury, który próbujesz dodać:

pod repo add [your framework name] [Your framework Git URL]
pod repo push [your framework name] [your framework .podspec file name]
Jevon Charles
źródło
1

Brakowało mi dodania ,powodującego problemu.

Wymiana,

pod 'PodName' '~> 2.3'

Z,

pod 'PodName', '~> 2.3'

Wykonałem pracę.

Mohammad Zaid Pathan
źródło
1

Rozwiązałem swój problem za pomocą poniższego polecenia:

Aktualizacja strąków kakaowych

Aby zaktualizować, użyj tego polecenia

sudo gem zainstaluj cocoapods

jeśli powyższe polecenie daje błąd, użyj tego

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

i niż to zrobić

aktualizacja repozytorium pod

Seema Sharma
źródło
1

Dla mnie poniższe polecenia działały dobrze, ale najpierw spróbuj użyć bezpośredniego polecenia „pod setup”. Jeśli to nie zadziała, skorzystaj z poniższych poleceń, które z pewnością sprawią, że coś się wydarzy.

pod repo usuń master
pod setup
pod install

Sathish
źródło
Jak to się różni od @ Gastón-Antonio Montes odpowiedź ?
Leo
1

Wykonaj poniższe kroki:

Krok 0: pod repo update master

Krok 1: pod install

Gotowe!

Sunil Targe
źródło
0

miał ten sam problem.

to, co naprawdę zadziałało dla mnie, to gem uninstall cocoapods(jak wspomniano powyżej na https://stackoverflow.com/users/4264880/seema-sharma ), gdzie odkryłem, że mam zainstalowanych 11 (!) różnych wersji cocoapods.

Zdecydowałem się odinstalować wszystko, a następnie gem install cocoapods:1.4.0

Teraz wszystko w porządku.

Catarino
źródło
0

Żadna z odpowiedzi mi nie pomogła. Ostatecznie zorientowałem się, że w jednym z Podów popełniłem literówkę .

Np .: - Firebaseresulrereres/Analytics. To miało być, Firebase/Analyticsale bez mojej wiedzy nazwa kapsuły miała błędną pisownię Firebaseresulrereres/Analytics.

Poprawienie nazwy kapsuły załatwiło mi sprawę! . Jednak znalezienie tego kosztowało mnie 1 godzinę !. Rozwój może być czasami niejednoznaczny i frustrujący! :)

Pradeep Reddy Kypa
źródło
0

Pracowałem trzepocząc ze wszystkimi publicznymi repozytoriami. Otrzymałem podobny błąd:

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

Z jakiegoś powodu TOCropViewControllerspecyfikacja była niedostępna. Próbowałem następujących rzeczy:

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

Ale specyfikacja wtyczki była nadal niedostępna. Wreszcie rozwiązałem to, usuwając wzorzec repozytorium kapsuły.

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

Aby sprawdzić i potwierdzić, że wtyczka jest tutaj, spróbowałem w grepśrodku .cocoapods, używając:

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

Wewnątrz ~/.cocoapods/repos/trunk/Specs/3/7/4/TOCropViewController/2.5.2/TOCropViewController.podspec.json

Znalazłem repozytorium git wtyczki i poprawny numer wersji.

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

Po tym flutter cleani flutter runrozpoczął pracę.

jerrymouse
źródło