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


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

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

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.


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.


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.


6

Certifique-se de adicionar

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

no início do seu Podfile


2
Isso é especialmente relevante se você deseja adicionar um pod privado.
Stan

5

Atualize o repositório mestre para cocoapods.

`pod repo update master`

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.


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]

1

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

Substituindo,

pod 'PodName' '~> 2.3'

Com,

pod 'PodName', '~> 2.3'

Fiz o trabalho.


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


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


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!


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.



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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.