Não foi possível encontrar uma especificação no CocoaPods

86

Não consigo entender por que o Cocoapod não consegue encontrar a especificação do pod que criei ao executar pod install. Alguém poderia me ajudar a resolver esse problema?

Estou definindo uma subespecificação em meu arquivo de podspec de biblioteca como este:

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

Esta dependência ABC está listada na biblioteca Podfile:

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

O arquivo Podspec ABC.podspecno branch xyz de myrepo / Podspecs parece assim:

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

O erro é [!] Unable to find a specification for ABC (= 1.0.0)

Solução: importe o pod ABC antes de importar a subspec e adicione a tag ao podspec.

Gaius Augustus
fonte
Qual é o erro que você recebeu? Copie e cole em sua pergunta.
Anthony
O erro éUnable to find specification for 'ABC' (=1.0.0)
Gaius Augustus

Respostas:

21

Ao invés de:

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

Escreva isto: Não se esqueça da tag ...

s.source       = { :git => "https://github.com/myrepo/Podspecs.git", :branch => "xyz",
                   :tag => s.version.to_s }
gran33
fonte
Você tem que dizer ao pod qual tag você está falando. É uma obrigação.
gran33 de
Simplesmente, adicione a tag ao seu último commit
gran33 de
1
Vou tentar Infelizmente, não está na documentação do Podspec.
Gaius Augustus
Não resolveu o problema: [!] Unable to find a specification for ABC (= 1.0.0) `
Gaius Augustus
1
Resolvi o problema! Tenho que importar o pod ABC antes de importar a subespecificação.
Gaius Augustus
185

Suponho que haja um problema com seu repositório mestre de pod. Exclua-o e baixe-o novamente.

Você pode fazer:

pod repo remove master
pod setup
pod install

Ou:

sudo rm -fr ~/.cocoapods/repos/master
pod setup
pod install
Gastón Antonio Montes
fonte
50
Apenas correr pod setupfez o trabalho.
Nagendra Rao
1
Para mim, apenas executar a linha remove primeiro resolveu o problema! Demorou um pouco para configurar.
sinewave440hz
2
Uau! Isto. Por algum motivo, meu repositório master Spec não foi configurado corretamente e eu tive que removê-lo dessa forma e, em seguida, configurei e instalei. Obrigado por isso!
praneetloke
1
A 'configuração do pod' demorou um pouco, mas era tudo que eu precisava (como Rao mencionou)
Chris Allinson
3
Pode ser que você queira tentar pod repo update && pod setupprimeiro - se seu repo está apenas perdendo as especificações, isso pode consertar e será mais rápido do que clonar todo o repo do zero.
Eliot de
35

Para mim, foi um problema encontrar a especificação, não a especificação em si. Eu precisava adicionar um link de origem ao Podfile, consulte a documentação do Podfile

Cocoapods adicionou recentemente a necessidade de link para o repo que contém o arquivo de especificação de pod que você está procurando, o padrão é:

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

Você pode precisar adicionar vários links de fontes se estiver usando pods mais obscuros ou caseiros.

dloomb
fonte
1
Isso não pode ser um requisito (pelo menos não com a versão mais recente), porque eu não precisei adicionar links de fontes e depois de seguir a sugestão de Gastón tudo funcionou bem.
sinewave440hz
@ sinewave440hz, adicionar a fonte é mais frequentemente usado quando você precisa acessar um repositório privado não padrão .git. A fonte padrão é pública.
ScottyBlades
Entendo, obrigado (não que eu me lembre de ter escrito nada disso, mas tenho certeza que vai ajudar alguém em algum lugar: D)
sinewave440hz
7

Eu resolvo isso depois de adicionar

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

para o Podfile. bem. Eu usei um repositório local como meu Repo. Posso usar isso em outro arquivo podspec

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

iOS_Networking_CPN está no caminho local.

zippo
fonte
source '/ Users / username / Documents / path / to / iOS_SpecsRepository' funcionou, você sabe por que eu tenho que usar um caminho de origem local?
gabbler
na minha opinião, porque cada dispositivo precisa de um repositório local para um podspec
zippo
7

Comigo, isso funcionou como um encanto.

pod repo remove master
pod setup

No entanto, você pode tentar diretamente, pod setupcomo alguns usuários apontaram.

Hemang
fonte
6

Certifique-se de adicionar

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

no início do seu Podfile

Ugo Marinelli
fonte
2
Isso é especialmente relevante se você deseja adicionar um pod privado.
Stan
5

Atualize o repositório mestre para cocoapods.

`pod repo update master`
Idan Magled
fonte
4

Eu estava recebendo um erro semelhante para MGBoxkit

[!] Não foi possível encontrar uma especificação para MGBoxkit

Substituindo a seguinte linha

pod 'MGBoxkit'

com

pod 'MGBoxKit'

corrigiu o problema.

Zeeawan
fonte
Qual é a diferença?
Gargo
Typo as k foi substituído por K.
zeeawan
2

Primeiro, você precisa adicionar seu Podspec a um repositório de especificações privado; isso permite que o CocoaPods encontre o pod quando você tentar instalá-lo.

Digite o seguinte no Terminal, certificando-se de que ainda está no diretório da estrutura que está tentando adicionar:

pod repo add [your framework name] [Your framework Git URL]
pod repo push [your framework name] [your framework .podspec file name]
Jevon Charles
fonte
1

Eu perdi a adição de ,causar problema.

Substituindo,

pod 'PodName' '~> 2.3'

Com,

pod 'PodName', '~> 2.3'

Fiz o trabalho.

Mohammad Zaid Pathan
fonte
1

Resolvi meu problema com o comando abaixo:

atualização de cacau

Para atualizar use este comando

sudo gem install cocoapods

se o comando acima der um erro então use este

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

e do que fazer isso

atualização de pod repo

Seema Sharma
fonte
1

Para mim, o procedimento abaixo funcionou bem, mas a primeira tentativa pode ser o comando direto "pod setup". Se isso não funcionar, vá para os comandos abaixo que definitivamente farão as coisas acontecerem.

pod repo remover
instalação do pod master
pod instalar

Sathish
fonte
Como isso difere de @ de Gaston-antonio-montes resposta ?
Leo
1

Siga as etapas abaixo:

Etapa 0: pod repo update master

Passo 1: pod install

E você está pronto!

Sunil Targe
fonte
0

teve o mesmo problema.

o que realmente funcionou para mim foi gem uninstall cocoapods(conforme mencionado acima em https://stackoverflow.com/users/4264880/seema-sharma ) onde descobri que tinha 11 (!) versões diferentes de cocoapods instaladas.

Eu escolhi desinstalar tudo e então gem install cocoapods:1.4.0

Tudo bem agora.

Catarino
fonte
0

Nenhuma das respostas me ajudou. Por fim, descobri que cometi um erro de digitação ortográfica em um dos pods .

Ex: - Firebaseresulrereres/Analytics. Era para ser, Firebase/Analyticsmas sem meu conhecimento, o nome do pod tinha uma grafia errada como Firebaseresulrereres/Analytics.

A correção do nome do pod funcionou para mim! . Mas me custou 1 hora para encontrar isso !. O desenvolvimento pode ser ambíguo e frustrante às vezes! :)

Pradeep Reddy Kypa
fonte
0

Eu estava trabalhando em flutter com todos os repositórios públicos. Eu estava recebendo um erro semelhante:

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

Por algum motivo, a TOCropViewControllerespecificação não estava disponível. Tentei o seguinte:

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

Mas a especificação do plugin ainda não estava disponível. Finalmente, resolvi isso removendo o repo master do pod.

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

Para validar e confirmar que o plugin está aqui, tentei grepdentro .cocoapods, usando:

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

Dentro ~/.cocoapods/repos/trunk/Specs/3/7/4/TOCropViewController/2.5.2/TOCropViewController.podspec.json

Encontrei o repositório git do plug-in e o número de versão correto.

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

Depois disso flutter cleane flutter runcomecei a trabalhar.

Jerrymouse
fonte