tl; dr use:
pod update podName
Por quê? Leia abaixo.
pod update
NÃO respeitará o podfile.lock
. Ele irá substituí-lo.
pod install
respeitará o podfile.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 é suficiente
Alguns 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 pod A2
- declarado em A.podspec
como dependency '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:
- user1 pode acabar com o pod
A2
na versão 3.4
(porque isso foiA2
a versão mais recente da época)
- enquanto que o user2 é executado
pod install
ao ingressar no projeto posteriormente, eles podem obter o pod A2
na versão 3.5
(porque o mantenedor de A2
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 o Podfile.lock
e devidamente usar pod 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
faz
podfile.lock
é. Veja o link e o vídeo que ele faz referência.