Crear y Distribuir Bibliotecas Privadas con Cocoapods

CocoaPods es un gestor de dependencias para proyectos Swift y Objective-C. Esta herramienta no solo nos permite integrar fácilmente esas dependencias, sino que también nos permite crear nuestras propias bibliotecas. En esta publicación voy a guiarte sobre cómo crear una biblioteca privada y distribuirla a tu equipo privado sin publicar la biblioteca.
Inicializar repositorios
Ve a Github o Bitbutket, luego crea dos repositorios. Uno para nuestro código fuente que se comparte entre nuestro equipo, el otro para Podspec, que define toda la información sobre ese Pod.


Siguiendo las instrucciones en la página de Github, te guía sobre cómo agregar tu proyecto a estos repositorios.
1 | $ echo "# MyAwesomeKit-Spec" >> README.md |
Crear nuestra propia biblioteca
Abre XCode y crea un nuevo Cocoa Touch Framework llamado MyAwesomeKit. Después de eso, crea una clase simple llamada HaHaHaManager, esta clase define nuestros métodos públicos para los clientes. Para hacerlo más fácil, defino un método simple, que toma 2 números como argumentos y luego retorna su suma:
1 | public class HaHaHaManager { |
Nota: Dado que estamos creando un Framework público, tenemos que sobrescribir el constructor por defecto de la clase HaHaHaManager, haciéndolo público. De lo contrario, nuestros clientes que usen este Framework no podrán crear una instancia de esta clase porque el alcance por defecto de las clases en Swift es internal.
Después, envía nuestro código al repositorio que creamos en el primer paso. Asegúrate de agregar un tag como versión para este commit.
1 | $ git add . |
Agregar tu Repositorio Privado a tu Instalación de CocoaPods
Usa el siguiente comando para crear tu nuevo repositorio privado en tu CocoaPods
1 | $ pod repo add REPO_NAME SOURCE_URL |
1 | $ pod repo add MyAwesomeKit https://github.com/uynguyen/MyAwesomeKit |
Asegúrate de tener los derechos de acceso correctos al repositorio. Puedes configurar ssh para acceder al repositorio a través de clave ssh. Ver también: Generating a new SSH key and adding it to the ssh-agent
Para verificar si tu instalación fue exitosa, usa los siguientes comandos:
1 | $ cd ~/.cocoapods/repos/MyAwesomeKit |
Este comando se usa para validar especificaciones. El flag --allow-warnings indica que omitimos todas las advertencias al validar el archivo Pod. (Faltan algunas opciones como licencia, autor o descripción).
Generar nuestro archivo Podspec
Escribe el comando para generar nuestro archivo Podspec. Este archivo contiene toda la información sobre nuestro código, incluyendo el repositorio git, la versión de la biblioteca, dependencias, etc.
1 | $ pod spec create MyAwesomeKit |
Verás algo como esto
1 | Pod::Spec.new do |s| |
Esto es lo que está pasando:
- 1: Las dependencias de tus otros Podspecs. Para más de una dependencia, agrega una nueva línea para definirla.
- 2: Los archivos fuente que se incluirán. (Reemplázalo por .m, .mm, .c o .cpp si lo necesitas)
- 3: Los frameworks que están vinculados con tu biblioteca.
Para otras opciones, por favor consulta Podspec Syntax Reference
Enviar al Repositorio Spec
1 | $ pod repo push MyAwesomeKit MyAwesomeKit.podspec --allow-warnings |
La estructura de tu carpeta será así
1 | . |
Cada vez que actualices la biblioteca, tienes que ejecutar el comando de actualización para actualizar tus repositorios Pod
1 | $ pod repo update |
Usar nuestro increíble Kit
Es hora de usar nuestro poderoso Kit. Abre XCode y crea un nuevo proyecto llamado MyAwesomeApp. Después de eso, escribe el siguiente comando para inicializar el archivo Pod
1 | $ Pod init |
Abre el archivo Pod, agrega el siguiente código para instalar nuestra biblioteca.
1 | # Uncomment the next line to define a global platform for your project |
Veamos nuestros resultados (Recemos y esperemos que funcione bien)
Conclusión
Acabamos de publicar nuestro primer Pod privado para nuestro equipo. Desde ahora, nuestro equipo puede usar esta biblioteca de forma privada. Además, es fácil actualizar y distribuir la biblioteca cuando se actualiza. ¡Gracias a CocoaPod!
Si tienes alguna pregunta o comentario sobre la publicación, no dudes en enviarme un correo electrónico.
Referencias
[1] Private Pods
