Eu entendo que o comando a seguir irá atualizar um único pod: pod update <podname>
. No entanto, isso também atualiza as dependências de outros pods (pods que não foram incluídos no comando update) que você instalou anteriormente. Existe uma maneira de atualizar um único pod e deixar todas as outras dependências em paz?
202
podfile.lock
é. Veja o link e o vídeo que ele faz referência.Respostas:
Verifique se você tem a versão mais recente do CocoaPods instalada.
$ pod update POD
foi introduzido recentemente.Consulte este tópico de problema para obter mais informações :
fonte
$ pod update SomePodName
. No entanto, há alguns casos em que o CocoaPods também tenta atualizar as dependências de outros pods. Para encurtar a história, SomePodName não é o único pod que será atualizado em alguns casos.pod install
ela volta à sua versão original. Mas eu não quero perder minhas alteraçõespod update
toca tudo. Não faz o que diz na lata, e é muito frustrante. Aleatoriamente remove cabeçalhos de outros pods você não contei a ele para tocar, etc.Para instalar um único pod sem atualizar os existentes-> Adicione esse pod ao seu Podfile e use:
Para remover / atualizar um pod específico, use:
Testado!
fonte
É 2015
Então porque
pod update SomePod
toca em tudo nas versões mais recentes dos cocoapods, encontrei uma solução alternativa.Siga os próximos passos:
Retire
SomePod
doPodfile
Corre
pod install
os pods agora serão removidos
SomePod
do nosso projeto e doPodfile.lock
arquivo.Coloque de volta
SomePod
noPodfile
Corra
pod install
novamenteDesta vez, a versão mais recente do nosso pod será instalada e salva no
Podfile.lock
.fonte
pod update somepod anotherpod thirdpod
para atualizar vários pods de uma só vez :)SomePod
é atualizado para suas dependências mais recentes, não atualizaria uma dependência compartilhadaanotherPod
para a mais recente? Isso não vai acontecer, independentemente do conteúdo do podlock? Caso contrário, não será capaz de satisfazer os requisitos deSomePod
apenas dizendo:
pod install
- para instalar novos pods,pod update
- para atualizar os pods existentes,pod update podName
- para atualizar apenas pod específico sem tocar em outros pods,pod update podName versionNum
- para atualizar / fazer downgrade de um pod específico sem tocar em outros podsfonte
pod
vez degit
?Apenas um pequeno aviso.
funcionará apenas se esse pod já estiver instalado. Caso contrário, você terá que atualizar todos eles com
comando
fonte
pod install
primeiro, o que instalará apenas os que estão faltando, sem tocar nos outros. Embora não exista nenhum caso de uso para atualizar um pod que você não instalou, existe?tl; dr use:
Por quê? Leia abaixo.
pod update
NÃO respeitará opodfile.lock
. Ele irá substituí-lo.pod install
respeitará opodfile.lock
Este diagrama ajuda a entender melhor as diferenças:
O principal problema vem do
~>
operador otimista, também conhecido como .Usar versões exatas no arquivo
Podfile
não é suficienteAlguns podem pensar que, especificando versões exatas de seus pods em seus
Podfile
, comopod 'A', '1.0.0'
, é suficiente para garantir que cada usuário tenha a mesma versão das outras pessoas da equipe.Eles podem até usar
pod update
, mesmo quando apenas adicionam um novo pod, pensando que nunca arriscaria atualizar outros pods porque eles estão fixos a uma versão específica noPodfile
.Mas, na verdade, isso não é suficiente para garantir que o usuário1 e o usuário2 em nosso cenário acima sempre obtenham exatamente a mesma versão de todos os seus pods.
Um exemplo típico é se o pod
A
tem uma dependência do podA2
- declarado emA.podspec
comodependency 'A2', '~> 3.0'
. Nesse caso, o uso do pod'A', '1.0.0'
no seu Podfile forçará o usuário1 e o usuário2 a sempre usar a versão 1.0.0 do pod A, mas:A2
na versão3.4
(porque isso foiA2
a versão mais recente da época)pod install
ao ingressar no projeto posteriormente, eles podem obter o podA2
na versão3.5
(porque o mantenedor deA2
pode ter lançado uma nova versão nesse meio tempo). É por isso que a única maneira de garantir que cada trabalho membro da equipe com as mesmas versões de todo o pod em cada computador é usar oPodfile.lock
e devidamente usarpod install
vs.pod update
.O trecho acima foi todo derivado de instalação pod vs. da atualização do pod
Eu também recomendo assistir o que
podfile.lock
fazfonte
Estou usando
cocoapods version 1.0.1
e usandopod update name-of-pod
funciona perfeitamente. Nenhum outro pod é atualizado, apenas o específico que você digita.fonte
Isso é um pouco estranho e provavelmente não é com isso que o OP estava lidando, mas
pod update <podname>
não funcionará em todos os casos se você estiver usando um pod local no seu computador.Nessa situação, a única coisa que acionará o
pod update
trabalho é se houver uma alteração no arquivo podspec. Entretanto, fazer uma alteração também permitirápod install
trabalhar também.Nessa situação, você pode modificar apenas algo menor, como a descrição ou o resumo, por uma letra e, em seguida, executar o comando de instalação ou atualização com êxito.
fonte