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 => 'git@github.com: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 => "git@github.com: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.


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 => "git@github.com: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 }

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

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.


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.


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.


6

Upewnij się, że dodałeś

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

na samym początku pliku Podfile


2
Jest to szczególnie istotne, jeśli chcesz dodać prywatny pod.
Stan


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.


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]

1

Brakowało mi dodania ,powodującego problemu.

Wymiana,

pod 'PodName' '~> 2.3'

Z,

pod 'PodName', '~> 2.3'

Wykonałem pracę.


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


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


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!


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.



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! :)


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.