English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Um, arquivo Podfile.lock
Como mencionado anteriormente, ao começar a usar o CocoaPods e executar o comando pod install, será gerado um arquivo Podfile.lock. Este arquivo parece não ter relação com a gente, na verdade, absolutamente não deve ser ignorado.
Este arquivo é usado para salvar as versões das bibliotecas de dependência instaladas pelos Pods, após a instalação dos três Pods dependência SBJson, AFNetworking e Reachability através do CocoaPods, o conteúdo do arquivo Podfile.lock correspondente é:
PODS: - AFNetworking (2.1.0): - AFNetworking/NSURLConnection - AFNetworking/NSURLSession - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/UIKit - AFNetworking/NSURLConnection (2.1.0): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - AFNetworking/NSURLSession (2.1.0): - AFNetworking/NSURLConnection - AFNetworking/Reachability (2.1.0) - AFNetworking/Security (2.1.0) - AFNetworking/Serialization (2.1.0) - AFNetworking/UIKit (2.1.0): - AFNetworking/NSURLConnection - Reachability (3.0.0) - SBJson (4.0.0) DEPENDENCIES: - AFNetworking (~> 2.0) - Reachability (~> 3.0.0) - SBJson (~> 4.0.0) SPEC CHECKSUMS: AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd Reachability: 500bd76bf6cd8ff2c6fb715fc5f44ef6e4c024f2 SBJson: f3c686806e8e36ab89e020189ac582ba26ec4220 COCOAPODS: 0.29.0
O maior uso do arquivo Podfile.lock é em desenvolvimento em equipe. Para o estilo de escrita que não especifica a versão da biblioteca de dependência Pods no Podfile, é assim:
pod 'SBJson'
Esta frase é usada para obter a versão mais recente da biblioteca de dependência Pods SBJson.
Quando alguém na equipe executa o comando pod install, o arquivo Podfile.lock gerado registra a versão mais recente da biblioteca de dependência Pods no momento. Quando outros membros da equipe baixam este projeto que contém o arquivo Podfile.lock e executam o comando pod install, a versão da biblioteca de dependência Pods baixada será a mesma que a do usuário inicial. Sem o arquivo Podfile.lock, todos os usuários que executarem o comando pod install obterão a versão mais recente da SBJson, o que pode levar a diferentes versões de bibliotecas de dependência usadas pela mesma equipe, o que é absolutamente um desastre para a colaboração!
Neste caso, se a equipe desejar usar a versão mais recente da biblioteca de dependência SBJson, há duas opções:
Altere o Podfile para apontar para a biblioteca de dependência SBJson da versão mais recente;
Execute o comando pod update;
Dado que o arquivo Podfile.lock é tão importante para a colaboração em equipe, precisamos adicioná-lo ao controle de versão.
Dois, arquivo Podfile
Para usuários comuns, o arquivo Podfile é o que mais lidamos com o CocoaPods. CocoaPods é implementado em ruby, então a sintaxe do arquivo Podfile é a sintaxe do ruby. Vamos introduzir o Podfile a partir dos seguintes aspectos:
1、Localização do arquivo Podfile
Este é um problema留下的上篇文章。通常情况下我们都推荐Podfile文件都放在工程根目录,如下图所示:
Na verdade, o arquivo Podfile pode ser colocado em qualquer diretório, o que precisa ser feito é especificar o caminho do projeto no Podfile. Em comparação com o anterior, o arquivo Podfile foi adicionado uma linha no início, o conteúdo específico é o seguinte:
xcodeproj "/Users/wangzz/Desktop/CocoaPodsTest/CocoaPodsTest.xcodeproj platform :ios pod 'Reachability', '~>' 3.0.0' pod 'SBJson', '~>' 4.0.0' platform :ios, ''7.0' pod 'AFNetworking', '~>' 2.0'
A especificação de caminho usa a palavra-chave xcodeproj.
Depois disso, entre na pasta do arquivo Podfile e execute o comando pod install, que será como antes para baixar essas bibliotecas de dependência de Pods, e os arquivos relacionados serão colocados na pasta onde o Podfile está, como na figura a seguir:
Como antes, precisamos usar o arquivo workspace gerado aqui para abrir o projeto.
2、Podfile e target
O Podfile é essencialmente usado para descrever os targets do projeto Xcode. Se não especificarmos explicitamente o target correspondente ao Podfile, o CocoaPods criará um target implícito chamado default, que corresponderá ao primeiro target do nosso projeto. Em outras palavras, se não especificarmos o target no Podfile, apenas o primeiro target do projeto pode usar as bibliotecas de dependência de Pods descritas no Podfile.
Se quiser descrever vários targets no Podfile ao mesmo tempo, dependendo das necessidades, podem haver diferentes maneiras de implementação. Para ilustrar o problema, crie um target chamado Second no projeto original. Agora, os targets contidos no projeto são:
① Uso de bibliotecas de dependência de Pods iguais em vários targets
Por exemplo, se os targets CocoaPodsTest e Second precisarem usar as bibliotecas de dependência de Pods Reachability, SBJson e AFNetworking, pode-se usar a palavra-chave link_with para implementar, escrevendo o Podfile da seguinte maneira:
link_with 'CocoaPodsTest', 'Second' platform :ios pod 'Reachability', '~>' 3.0.0' pod 'SBJson', '~>' 4.0.0' platform :ios, ''7.0' pod 'AFNetworking', '~>' 2.0'
Esta escrita realiza que os dois targets CocoaPodsTest e Second compartilhem a mesma biblioteca de dependência de Pods.
② Os diferentes targets usam bibliotecas de dependência de Pods completamente diferentes
Este target CocoaPodsTest usa as bibliotecas de dependência Reachability, SBJson e AFNetworking, mas o target Second precisa usar apenas a biblioteca de dependência OpenUDID. Neste caso, pode-se usar a palavra-chave target, e a descrição do Podfile é como segue:
target :'CocoaPodsTest' do platform :ios pod 'Reachability', '~>' 3.0.0' pod 'SBJson', '~>' 4.0.0' platform :ios, ''7.0' pod 'AFNetworking', '~>' 2.0' end target :'Second' do pod 'OpenUDID', '~> 1.0.0' end
Dentre eles, do/end como marcador de início e fim.
3、usar Podfile para gerenciar a versão das bibliotecas dependentes Pods
ao introduzir novamente a biblioteca dependente, é necessário especificar explicitamente ou implicitamente a versão da biblioteca dependente referenciada, conforme detalhado a seguir:
pod 'AFNetworking' //não especificar explicitamente a versão da biblioteca dependente, significa que sempre será obtida a versão mais recente pod 'AFNetworking', ''2.0' //usar apenas2versão .0 pod 'AFNetworking', '>' 2.0' //usar acima de2.0 da versão pod 'AFNetworking', '>=' 2.0' //usar maior ou igual a2.0 da versão pod 'AFNetworking', '<' 2.0' //usar menor que2.0 da versão pod 'AFNetworking', '<=' 2.0' //usar menor ou igual a2.0 da versão pod 'AFNetworking', '~> 0.'1.2' //usar maior ou igual a 0.1.2mas menor que 0.2da versão pod 'AFNetworking', '~>0.'1' //usar maior ou igual a 0.1mas menor que1.0 da versão pod 'AFNetworking', '~>0' //Versões acima de 0, escrever esta restrição ou não escrever nada tem o mesmo efeito, ambos significam usar a versão mais recente
Terceiro, comandos comuns do CocoaPods
1、pod install
Instale as bibliotecas dependentes com base no conteúdo especificado no arquivo Podfile. Se houver arquivo Podfile.lock e o arquivo Podfile correspondente não tiver sido modificado, ele instalará conforme a versão especificada no arquivo Podfile.lock.
Cada vez que o arquivo Podfile for atualizado, é necessário executar este comando novamente para reinstalar as bibliotecas dependentes Pods.
2、pod update
Se a versão da biblioteca dependente especificada no Podfile não estiver fixa, sempre que a biblioteca dependente tiver uma atualização, seja ou não houver arquivo Podfile.lock, ele buscará a versão mais recente da biblioteca dependente permitida descrita no arquivo Podfile.
3、pod search
O formato do comando é:
$ pod search OpenUDID
O OpenUDID seguinte é o parâmetro.
Pelo nome do comando, é fácil perceber que este comando é usado para procurar bibliotecas de dependências de Pods disponíveis, e o resultado é o seguinte:
-> OpenUDID (1.0.0) Iniciativa de código aberto para uma solução UDID universal e persistente para iOS. pod 'OpenUDID', '~> 1.0.0' - Página inicial: http://OpenUDID.org - Fonte: https://github.com/ylechelle/OpenUDID.git - Versões: 1.0.0 [master repo]
Aqui encontramos um dado disponível que descreve brevemente a biblioteca OpenUDID. Na verdade, o que realmente precisamos é da terceira linha do resultado acima:
pod 'OpenUDID', '~> 1.0.0'
Não é difícil perceber que precisamos adicioná-lo ao arquivo Podfile.
Com este comando, é possível encontrar rapidamente e convenientemente as bibliotecas de dependências de Pods necessárias.
4、pod setup
O formato do comando é:
$ pod setup
Após a execução, será impresso:
Configurando repositório mestre do CocoaPods Atualizando 7cd4668..f3d3ced Rápido-forward
A seguir, muitos outros dados de atualização serão impressos.
Este comando é usado para atualizar a árvore de dependências de Pods armazenados localmente no computador. Devido ao fato de que muitos usuários criam ou atualizam bibliotecas de dependências de Pods todos os dias, a execução deste comando pode ser relativamente lenta, por favor, seja paciente. Precisamos executar este comando regularmente, senão, quando houver novas bibliotecas de dependências de Pods, o comando pod search não será capaz de encontrar.
Quarto, documentos de referência