Como criar um CocoaPod

Bruno Pastre
Apple Developer Academy PUCPR
5 min readSep 16, 2019

Nas últimas semanas na Apple Developer Academy, tivemos nosso Mini-Challenge, e, nele desenvolvemos um aplicativo que mostra, de formas diferentes — AR, 2D, VR, o mesmo arrangement de informações. Nesse projeto, portanto, era crucial a segregação entre o modelo e o que está sendo visto na tela e, dessa segregação, saiu a inspiração para desenvolver esse Pod, e assim, finalmente contribuir com a comunidade que a tanto tempo me alimenta.

Dado o contexto, vamos ao que interessa:

1. Criando o projeto

Começamos nossa jornada ao abrir o Xcode, onde devemos clicar em criar um novo projeto e, então, selecionar Cocoa Touch Framework e clicar em Next

Na próxima tela, devemos dar o nome ao nosso projeto na caixa Product Name, selecionar Swift como linguagem, e desmarcar a caixa Include Unit Tests. Feito isso, podemos clicar em Next

Pronto! Temos um projeto no Xcode para armazenar nosso Pod

2. Adicionar código ao nosso projeto

Bom, agora é a hora de codificar o Pod. Para isso basta adicionar um arquivo .swift, e implementar as classes e funções que o Pod deve oferecer. É importante ressaltar que devemos nos manter atentos ao controle de acesso (https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html) das classes e métodos que criamos, tendo em vista que o controle de acesso padrão é o internal, o que impede que classes de outros módulos acessem esses métodos. Para resolver esse problema, devemos marcar todas as classes e funções que o usuário poderia acessar com o access modifier public — ou open.

3. pod init

Pois bem, se queremos publicar um pod, devemos ter o CocoaPods instalado no nosso repositório. Para isso, fechamos o Xcode, abrimos o terminal e navegamos até a pasta do projeto, onde digitamos o seguinte comando

pod init

Pronto! O CocoaPod foi inicializado no repositório! Mas ainda não feche o terminal, ele será necessário na próxima etapa.

4. Github

Para publicar um Pod, é necessário que ele esteja no Github — ou outro git remoto — , pois o trunk — sistema que a comunidade CocoaPods criou para desenvolvedores gerenciarem seus pods, que será discutido logo mais — usa das tags do git para o controle de versão do Pod.

Vamos começar com o Github. Caso você ainda não tenha uma conta, será necessário criar, e fazer login. Estando logado, criaremos um novo repositório ao clicar no +, localizado no canto superior direito e, então, em New Repository

Isso nos trará a uma nova janela, onde devemos colocar um nome para o nosso repositório, e clicar em Create Repository

Uhul! Conseguimos! Temos um repositório! Agora, devemos voltar para o terminal e subir nosso código nele.

Bom, se o terminal foi fechado, devemos abri-lo e navegar ate a pasta do projeto. Lá, daremos o primeiro comando do git:

git init

Caso já tenha um repositório do git nesse caminho, nenhuma mudança foi feita, e, agora, com certeza inicializamos um repositório git no projeto. Depois disso, vamos adicionar um remote no git, isso quer dizer: vamos dizer ao git onde ele deve manter o código remoto. Para isso, devemos rodar o seguinte comando

git remote add origin https://github.com/SEU_NOME_DE_USUARIO/NOME_DO_SEU_REPOSITORIO

Para o meu caso, o comando ficou assim

git remote add origin https://github.com/pastre/MyPodName

Agora que o git sabe onde subir os arquivos, devemos dizer a ele quais são os arquivos que ele deve subir, isto é, todos os arquivos da pasta. Para isso, basta digitar o seguinte comando

git add ./

Agora que o git sabe quais arquivos ele deve manter, basta commitar as mudanças, usando o comando

git commit -am “First commit”

Adicionar uma tag de versão. Lembre dessa tag, ela será importante logo mais

git tag 0.1

E, finalmente, publicar as alterações

git push -u origin master --tags

Agora, se voltarmos a pagina do projeto no Github, devemos ter nossos arquivos lá.

5. Podspec

Estamos bem encaminhados. Temos um lugar donde o CocoaPods pode se referenciar para baixar nosso pod, e um projeto no Xcode para manter o pod. Agora, tudo o que falta, na verdade, é publicar nosso projeto como um pod no CocoaPods. A primeira coisa que devemos fazer é criar um arquivo chamado NOME_DO_POD.podspec, que é responsável por especificar ao CocoaPods metadados sobre o pod. Para isso, basta rodar o comando

pod spec create NOME_DO_POD

Isso criará um arquivo NOME_DO_POD.podspec, já contendo um template de como o seu arquivo deve se parecer, mas, como muitas das especificações padrão não serão usadas nesse projeto, segue um template simplificado

Basta substituir o conteúdo do seu podspec por esse e trocar os campos pelos seus dados. Feito isso, o seu podspec está quase pronto para ser utilizado, falta apenas uma coisa: a licença. Nesse projeto, será utilizada a licença do MIT, e, para adicioná-la ao projeto, basta criar um arquivo com o nome LICENSE, colar nele o seguinte conteúdo, e substituir os campos pelos seus dados

é importante não esquecer de adicionar o arquivo da licença ao git, commitar e publicá-lo na nuvem.

6. Pod trunk

Agora, finalmente, podemos publicar o nosso pod! Para isso, devemos autenticar com o CocoaPods, usando o seguinte comando

pod trunk register EMAIL [YOUR_NAME]

Ao rodar esse comando, o CocoaPods deve enviar a esse email um link que, ao ser clicado, autentica essa sessão. Tendo autenticado, podemos publicar nosso pod, usando o comando

pod trunk push

Pronto! Subimos o nosso pod! Basta visitar https://cocoapods.org/pods/NOME_DO_POD para ver sua criação!

7. Notas

a. README

A região, em verde, a baixo, é carregada a partir do README do seu repositório, e é praticamente a primeira coisa que um usuário vê ao cair de paraquedas no seu pod

É interessante colocar no seu README uma breve documentação do seu pod, como um screenshot, uma descrição breve , um exemplo, ou como o pod pode ser usado.

b. Controle de versão com tags

No podspec, existe um campo reservado para a versão, e é usando esse campo que o pod trunk vai buscar qual versão baixar do repositório. Por isso, é importante que, a cada alteração de feature, ou bugfix, seja feita uma nova tag no git e a versão da tag seja atualizada.

--

--