Executando pod install
será instalada a versão atual do RestKit, fazendo com que seja gerado um Podfile.lock
que indica a versão exata instalada (por exemplo, RestKit 0.10.3
). Graças ao Podfile.lock
, a execução de pod install
neste hipotético projeto em um momento posterior em uma máquina diferente ainda irá instalar o RestKit 0.10.3, mesmo que uma versão mais recente esteja disponível. CocoaPods irá honrar a versão em POD em Podfile.lock
a menos que a dependência seja atualizada no Podfile ou pod update
seja chamada (o que fará com que um novo Podfile.lock
seja gerado). Desta forma CocoaPods evita dores de cabeça causadas por alterações inesperadas nas dependências.
Existe um ótimo vídeo do Google sobre como isto funciona: “CocoaPods e Lockfiles (Rota 85)”.
<O que está a acontecer nos bastidores?
Em Xcode, com referências directamente da fonte rubi, it:
- Cria ou actualiza um espaço de trabalho.
- Adiciona o seu projeto ao espaço de trabalho se necessário.
- Adiciona o projeto da biblioteca estática CocoaPods ao espaço de trabalho se necessário.
- Adiciona libPods.a to: targets =>Fases de construção =>Ligação com bibliotecas.
- Adiciona o arquivo de configuração do CocoaPods Xcode ao projeto do seu aplicativo.
- Altera as configurações de alvos do seu aplicativo para serem baseadas no CocoaPods.
- Adiciona uma fase de compilação para copiar recursos de quaisquer pods que você tenha instalado para o seu pacote de aplicativos, ou seja, uma ‘fase de compilação de scripts’ após todas as outras fases de compilação com o seguinte:
- Shell:
/bin/sh
- Shell:
${SRCROOT}/Pods/PodsResources.sh
- Shell:
Nota que os passos 3 em diante são ignorados se a biblioteca estática CocoaPods já estiver no seu projeto. Isto é em grande parte baseado no trabalho de Jonah Williams nas bibliotecas estáticas.
<CoaPods e Submódulos
CocoaPods e submódulos de git tentam resolver problemas muito semelhantes. Ambos se esforçam para simplificar o processo de inclusão de código de terceiros no seu projeto. Os submódulos se ligam a um commit específico desse projeto, enquanto um CocoaPod está ligado a uma versão de desenvolvimento.
<Comutação de submódulos para CocoaPods
Antes de decidir fazer a transição completa para CocoaPods, certifique-se de que as bibliotecas que você está usando atualmente estejam todas disponíveis. Também é uma boa idéia gravar as versões das bibliotecas que você está usando atualmente, para que você possa configurar o CocoaPods para usar as mesmas. Também é uma boa idéia fazer isso de forma incremental, passando dependência por dependência ao invés de uma grande jogada.