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.