Muitos desenvolvedores iOS já conhecem o CocoaPods, um gerenciador de dependências para projetos Cocoa, pois se utilizam de diversas bibliotecas open source em seus projetos.
Basicamente o CocoaPods mantém um repositório central com diversas bibliotecas públicas que podem ser incluídas no projeto através de um arquivo Podfile.
Apesar de interessante a idéia de criar e compartilhar suas bibliotecas com a comunidade em determinado momento você terá a necessidade de criar uma biblioteca para reaproveitar um código de seu cliente que não poderá ser público, porém com seria interessante manter as mesmas facilidades que um gerenciador como o Cocoapods pode nos oferecer, e para esses casos podemos criar um repositório privado para manter nossas bibliotecas organizadas e gerenciadas pelo CocoaPods.
Como o CocoaPods funciona através de uma arquitetura utilizando o git é necessário criar os repositórios privados em alguma ferramenta como o Github ou Bitbucket.
Vamos começar nosso tutorial instalando o Cocoapods, para isso basta inserir, no terminal, o commando:
$ sudo gem install cocoapods
Agora que já temos o Cocoapods instalado vamos criar um novo repositório privado no Github com o nome my-private-specs para servir como nosso repositório central de specs.
Após criado o repositório central devemos configurar o CocoaPods para utilizar o novo repositório do Github como um repositório de specs onde serão publicadas nossas bibliotecas, podemos fazer isso através do comando:
$ pod repo add my-private-specs https://github.com/<user>/my-private-specs.git
Ao inserir o comando o CocoaPods irá solicitar os dados, login e senha, de acesso ao seu repositório central que ficará armazenado para utilização de suas bibliotecas.
Obs: Todos os desenvolvedores que tiverem acesso a esse repositório no Github poderá utilizar as bibliotecas sem problemas
Após configurado o repositório podemos validar se esta tudo certo através dos comandos:
$ cd ~/.cocoapods/repos/my-private-specs
$ pod repo lint .
Agora que nosso repositório já esta configurado vamos criar nossa primeira biblioteca, para isso vamos criar um novo repositório no github com o nome de my-lib para guardar nossa biblioteca e podemos utilizar de um comando do próprio CocoaPods que irá criar um projeto com as configurações básicas:
$ pod lib create my-lib
O sistema irá te fazer algumas perguntas, antes de criar a biblioteca, afim de criar o projeto já configurado como: Linguagem de desenvolvimento (Swift ou ObjC), se precisa de um projeto de exemplo para teste da aplicação, qual framework de teste será inserido entre outras.
Após responder a todas as perguntas o sistema criará o projeto com base em sua informações e abrirá o projeto no xCode automaticamente.
Agora que seu projeto já esta devidamente criado precisamos configurar nossa biblioteca para publicação em nosso repositório, para isso abra o arquivo podspec na pasta metadata que deverá ficar parecido com o modelo a seguir.
Pod::Spec.new do |spec|
#
# https://guides.cocoapods.org/syntax/podspec.html#specification
#
### Root specification
spec.name = “my-lib”
spec.version = “1.0.0”
spec.summary = “Pequeno sumário”
spec.homepage = “https://github.com/;/my-lib.git”
spec.author = { “Marcus Costa” => “marcus.costa@redspark.io” }
spec.license = { :type => ‘MIT’ }
spec.description = < “https://github.com//my-lib.git”, :tag => ‘v’+String(spec.version) }
### Platform
spec.platform = :ios, ‘8.0’
### Build settings
spec.requires_arc = true
spec.frameworks = ‘UIKit’
spec.module_name = ‘MyLib’
### File patterns
spec.source_files = ‘Pod/Classes/**/*’
spec.resource_bundles = {
‘my-lib’ => [‘Pod/Assets/*.png’]
}
end
Lembrando que as configurações do arquivo podspec pode variar de acordo com cada projeto.
A partir desse momento nosso projeto está configurado e podemos criar o código de nossa biblioteca normalmente, sendo que nosso código deverá ficar dentro da pasta Classes, conforme especificado em nosso arquivo podspec na tag spec.source_files = ‘Pod/Classes/**/*’
Agora vamos para a etapa de publicação de nossa biblioteca, para isso vamos dar um commit e push de nosso código para o github para que tenhamos a versão atualizada. Com o código atualizado devemos criar uma tag para a versão especificada em nosso podspec (spec.version = “1.0.0”), pois é através dessa tag que o CocoaPods irá controlar qual a versão que você irá utilizar em seu projeto. Para isso podemos utilizar os comandos:
$ git tag -a v1.0.0 -m “v1.0.0”
$ git push origin –tag
Sendo que nesse caso nossa tag será v1.0.0 pois em nosso podspec ficou definido essa estrutura em na chave source:
spec.source = { :git => “https://github.com/<user>/my-lib.git”, :tag => ‘v’+String(spec.version) }
Após inserir a tag e publicar a mesmo no git do repositório podemos validar no spec através do comando:
$ pod spec lint –private my-lib.podspec –verbose
E enfim submeter nossa nova biblioteca para o repositório privado que criamos no início do tutorial através do comando:
$ pod repo push my-private-specs my-lib.podspec –verbose
Pronto! Publicamos nossa primeira biblioteca privada utilizando pods.
Agora basta configurar seus projetos adicionando o repositório e a nova biblioteca no arquivo Podfile, conforme exemplo:
source 'https://github.com//my-private-specs.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, ‘8.0’
use_frameworks!
inhibit_all_warnings!
target ‘app’ do
# Internal libs
pod ‘my-lib’
end
Assim, a partir de agora, ficará mais fácil manter atualizado e organizado todas as suas bibliotecas, garantindo uma melhor reusabilidade de seu código.