iOS: Como criar bibliotecas privadas gerenciadas pelo CocoaPods

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.

CTA-ebook-transformação-digital

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.

1
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:

1
2
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.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>