Como crear una librería con CocoaPods

CocoaPods es el repositorio de librerías mas conocido en el mundo de iOS para manejar las dependencias de nuestros proyectos.

Ahora bien, si creaste tu propia librería y quieres compartirla ya sea pública o privada de seguro esta guía te será de mucha utilidad.

Para explicar como crear tu propia librería con CocoaPods usare un simple ejemplo de las funciones básicas para una calculadora.
Puedes descargar de GitHub el proyecto base que tendrá la clase que usaremos para nuestra librería.

Requisitos

Para crear una librería usando CocoaPod lo primero que debemos revisar es si tenemos instalado en nuestra maquina CocoaPods, para esto ejecuta en una termina el siguiente comando:

pod --version

si te aparece el número de versión de CocoaPods indica que lo tienes instalado, de lo contrario debes instalarlo y lo puedes hacer fácilmente con el siguiente comando:

sudo gem install cocoapods

una vez instalado iniciaremos el proceso de creación de nuestra librería.

Creando la libraría

En una terminal ejecutamos:

pod lib create <nombre-libreria>

Ejemplo:

pod lib create JKSimpleCalculator

iniciará el asistente de creación de CocoaPods y seleccionaremos los siguientes parámetros:

What language do you want to use?? [ Swift / ObjC ]  
> ObjC

Para este caso la librería que vamos a crear estará escrita en Objective-C, pero si tu librería es en Swift selecciona la opción correspondiente.

Would you like to include a demo application with your library? [ Yes / No ]  
> Yes

Esta opción generará un proyecto de ejemplo que publicaremos junto con la librería. Con esto facilitamos que la persona que quiera usar nuestra librería tenga un caso de ejemplo.

Which testing frameworks will you use? [ Specta / Kiwi / None ]  
> None

Para este ejemplo no vamos a realizar pruebas así es que omitimos este paso.

Would you like to do view based testing? [ Yes / No ]  
> No

Ya que nuestra librería no incluye parte gráfica, no necesitaremos incluir pruebas de interface de usuario.

What is your class prefix?  
> JK

Esta opción solo nos aparecerá cuando creamos una librería para Objective-C que es el acostumbrado prefijo usado en las clases. Así que solamente indicamos el que queramos y continuamos.

Luego de un par de segundos, en la terminal veremos algo como esto:

Running pod install on your new library.

Analyzing dependencies  
Fetching podspec for `JKSimpleCalculator` from `../`  
Downloading dependencies  
Installing JKSimpleCalculator (0.1.0)  
Generating Pods project  
Integrating client project

[!] Please close any current Xcode sessions and use `JKSimpleCalculator.xcworkspace` for this project from now on.
Sending stats  
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

 Ace! you're ready to go!
 We will start you off by opening your project in Xcode
  open 'JKSimpleCalculator/Example/JKSimpleCalculator.xcworkspace'

To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.  
To learn more about creating a new pod, see `http://guides.cocoapods.org/making/making-a-cocoapod`.  

Listo! con esta ultima configuración CocoaPods iniciará el proceso de generación de la librería y nos creará el proyecto para empezar a trabajar, de igual modo puedes darte cuenta que Xcode se abrirá y contendrá el cascaron del proyecto.

Si por alguna razón Xcode no abre el proyecto debes abrir el archivo JKSimpleCalculator.xcworkspace que se encuentra dentro del directorio Example del proyecto que creo CocoaPods.

Agregando nuestras clases

En este paso vamos a importar las clases que tienen la lógica de negocio de nuestra librería, para esto copiaremos los archivos SimpleCalculator.h y SimpleCalculator.m del proyecto SimpleCalculator dentro del proyecto de Pods en el directorio

Pods->Development Pods->JKSimpleCalculator->JKSimpleCalculator->Classes  

Es posible que exista un archivo llamado ReplaceMe.m este archivo solo es una guía que podemos eliminar sin ningún problema.

Configurando .podspec

Una vez abierto Xcode veremos un grupo llamado Podspec Metadata que contendrá 3 archivos:

Podspec Metadata  
- JKSimpleCalculator.podspec
- README.md
- LICENSE

Por el momento solo nos centraremos en el archivo JKSimpleCalculator.podspec, recuerda que en tu caso deberá llamarse <TuLibreria>.podspec según sea el nombre que le hayas dado.

Voy a explicarte los parámetros básicos que necesitaremos para publicar nuestra librería.

  • s.name: Corresponde al nombre que llevará nuestra libreria, por lo general siempre esta configurado correctamente por defecto con el nombre de nuestro proyecto.
s.name = 'JKSimpleCalculator'  
  • s.version: Indica la versión actual que tendrá nuestra librería al momento de publicarla, es importante que esta versión sea diferente cada vez que publiquemos una nueva versión de nuestra librería y que corresponda a un tag valido dentro del repositorio donde alojaremos el código fuente.
s.version = '0.1.0'  
  • s.summary: Descripción muy corta de nuestra librería.
s.summary = 'Ejemplo de libreria para una calculadora JKSimpleCalculator.'  
  • s.description: Acá pondremos la descripción más clara y detallada de lo que hace o para que sirve nuestra librería, esto servirá de ayuda en el buscador de CoocaPods. Te en cuenta que tu texto debe estar contenido dentro de los tags <<-DESC y DESC
s.description = <<-DESC  
Acá puedes poner toda la descripción de tu librería.  
                   DESC
  • s.homepage: Será la url donde estará la información de nuestra librería. Deberá estar contenida dentro de comillas sencillas.
s.homepage = 'https://github.com/kakashysen/JKSimpleCalculator'  
  • s.author: Lista de autores si hay mas de uno. Deberas indicarlos en formato de diccionario llave valor.
s.author = { 'Jose Aponte' => '[email protected]' }  
  • s.source: Deberas especificar el repositorio donde estará el código fuente. Deberas indicarlo en formato diccionario con los keys :git con la url del código fuente y :tag donde podrás usar la variable global s.version.to_s.
s.source = { :git => 'https://github.com/kakashysen/JKSimpleCalculator.git', :tag => s.version.to_s }  
  • s.ios.deployment_targe: Indicaras la versión de iOS que soportará la librería.
s.ios.deployment_target = '8.0'  
  • s.source_files: Podrás especificar la lista de clases o archivos que contendrán el código fuente ejecutable de la librería.
s.source_files = 'JKSimpleCalculator/Classes/**/*'  

Al finalizar deberas tener una configuración semejante a esta

Pod::Spec.new do |s|  
  s.name       = 'JKSimpleCalculator'
  s.version    = '0.1.0'
  s.summary    = 'Ejemplo de libreria para una calculadora JKSimpleCalculator.'

  s.description = <<-DESC
Acá puedes poner toda la descripción de tu librería. Asegurate de explicar lo mas que puedas la funcinalidad de tu libreria en esta parte ya que se usará para mostrarle un detalle mas util a las persona que quieran usarla.  
                     DESC

  s.homepage   = 'https://github.com/kakashysen/JKSimpleCalculator'
  s.license    = { :type => 'MIT', :file => 'LICENSE' }
  s.author     = { 'joseb[email protected]' => '[email protected]' }
  s.source     = { :git => 'https://github.com/kakashysen/JKSimpleCalculator.git', :tag => s.version.to_s }

  s.ios.deployment_target = '8.0'

  s.source_files = 'JKSimpleCalculator/Classes/**/*'

end

Editaremos el archivo JKSimpleCalculator-umbrella.h del proyecto Pods que lo podrás encontrar dentro de

Pods->Development Pods->JKSimpleCalculator->JKSimpleCalculator->Support Files  

recuerda que este archivo tendrá el nombre que le hayas dado a tu proyecto
importamos el archivo de encabezado SimpleCalculator.h, esto permitirá que la clase quede publica y pueda usarse desde fuera de la librería, el archivo deberá lucir como este

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#endif

#import "SimpleCalculator.h"

FOUNDATION_EXPORT double JKSimpleCalculatorVersionNumber;  
FOUNDATION_EXPORT const unsigned char JKSimpleCalculatorVersionString[];  

Probando nuestra librería

Vamos a una terminal, nos ubicaremos en el directorio JKSimpleCalculator/Example y ejecutamos el siguiente comando

pod install  

 Con esto instalaremos nuestra librería dentro del proyecto de ejemplo, al finalizar deberas ver algo como esto en la terminal

23:01 $ pod install  
Analyzing dependencies  
Fetching podspec for `JKSimpleCalculator` from `../`  
Downloading dependencies  
Installing JKSimpleCalculator 0.1.0 (was 0.1.0)  
Generating Pods project  
Integrating client project  
Sending stats  
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.  

Iremos nuevamente a Xcode y compilaremos el proyecto. Al finalizar y ver que no hayan errores, editaremos el archivo JKViewController.m dentro del proyecto JKSimpleCalculator.

Ahora podremos importar nuestra librería como un modulo usando @import JKSimpleCalculator, ya con esto tendremos acceso a la clase SimpleCalculator y todas sus funciones.

#import "JKViewController.h"
@import JKSimpleCalculator;

@implementation JKViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    SimpleCalculator *calculator = [SimpleCalculator new];
    int result = [calculator sumA:1 withB:2];
}

Ya con esto podemos usar nuestra librería sin ningún problema, así es que solo nos queda subirla a GitHub o el repositorio que uses.

En una terminal nos ubicaremos en el directorio raíz de nuestro proyecto y haremos el commit/push a GitHub en este caso.

Luego crearemos el tag 0.1.0 que corresponde a la versión que indicamos dentro de nuestro archivo .podspec
recuerda que cada modificación que hagas sobre la librería y que quieras publicar deberá tener una versión mayor a la anterior

Regístrate en CocoaPods

En una terminal ejecuta la siguiente linea, reemplazando la <[email protected]> por tu correo.

pod trunk register <[email protected]> 'Informacion de la session' --description='Maquina desde donde nos conectamos'  

Con la linea anterior nos registramos ante CocoaPods para poder subir nuestra librería, luego de eso nos llegará un correo con un link para activar nuestra cuenta.

Compilando nuestra librería

Nos ubicamos en el directorio de nuestra librería y ejecutamos en una terminal el siguiente comando:

pod lib lint JKSimpleCalculator.podspec

con esto validaremos que la configuración que realizamos dentro del archivo .podspec este correcta.

23:44 $ pod lib lint JKSimpleCalculator.podspec

 -> JKSimpleCalculator (0.1.0)

JKSimpleCalculator passed validation.  

Luego ejecutamos

pod spec lint

ahora validaremos que nuestra librería compile según la configuración y dependencias necesarias, esto se realiza frente al repositorio donde alojamos nuestro código fuente, en este caso GitHub.

23:48 $ pod spec lint

 -> JKSimpleCalculator (0.1.0)

Analyzed 1 podspec.

JKSimpleCalculator.podspec passed validation.  

Publicando la librería

Ya por ultimo publicaremos nuestra librería con el siguiente comando

pod trunk push JKSimpleCalculator.podspec

recuerda que antes de este paso debemos haber echo push de nuestra código fuente junto con el tag correspondiente a la versión que enviamos en CocoaPods.

Listo! al finalizar todo el proceso veras en tu terminal algo como esto:

23:51 $ pod trunk push  JKSimpleCalculator.podspec  
Updating spec repo `master`

CocoaPods 1.3.0.beta.1 is available.  
To update use: `gem install cocoapods --pre`  
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.3.0.beta.1

Validating podspec  
 -> JKSimpleCalculator (0.1.0)

Updating spec repo `master`

CocoaPods 1.3.0.beta.1 is available.  
To update use: `gem install cocoapods --pre`  
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.3.0.beta.1


--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  JKSimpleCalculator (0.1.0) successfully published
 📅  June 12th, 23:53
 🌎  https://cocoapods.org/pods/JKSimpleCalculator
 👍  Tell your friends!
--------------------------------------------------------------------------------

Ahora podrás usarla como cualquier otro pod simplemente debes agregarla en el archivo Podfile de tu proyecto.

pod "JKSimpleCalculator"  

Felicidades! ya tienes publicada tu propia librería para que la compartas con el mundo 😉. Espero haber podido ayudarte y que te hayas disfrutado esta guía .

Puedes descargar el proyecto final desde GitHub.

Jose Aponte

Desarrollador full-stack apasionado por las tecnologías de información y los lenguajes de programación. Me gustan divertirme con mi familia, mi lema es "Nunca paras de Aprender"

Bogota

Subscribe to Jappsku Engineering Blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!