CocoaPods para Xcode

CocoaPods para proyecto XCode: Vídeo Tutorial

Introducción

Cuando nos ponemos a trabajar en nuevo proyecto, es difícil, por lo menos en mi caso, creer que no vamos a utilizar ninguna librería externa.

Los frameworks (por simplificar, cualquier código, utilidad, librería ajena a nosotros), sobre todo los que tienen detrás a grandes equipos de desarrollo, a la comunidad o a “Chuck Norris” del código, nos ayudan a agilizar el proceso de desarrollo de nuestras apps, nos garantizan (en muchos casos) la creación de un código optimizado y nos evitan estar pendientes de cómo cambios en otras piezas que conforman nuestro proyecto puede afectar al correcto funcionamiento de éste.

Para gestionar estas librerías de terceros existen los gestores de dependencias, herramientas encargadas de descargar, añadir y gestionar frameworks que muy amablemente otras personas han desarrollado para nuestro disfrute.

Existen diferentes “dependency managers” para Xcode:

  • CocoaPods: El primer gestor en aparecer para proyectos en Cocoa (Objective-C y Swift). Muy simple y con gran cantidad de librerías disponibles (casi 50.000).
  • Carthage: Gestor para proyectos en escrito completamente en Swift que nos propone gestión más actual y “limpia” de nuestras dependencias.
  • Swift Package Manager: El gestor “official” de Apple disponible desde Swift 3.0 (más vale tarde que nunca…)

Nos es fácil decantarse por uno de ellos, aunque es posible que la el futuro sea Swift Package Manager, por tratarse de la opción respaldada por Apple, la realidad es que la lucha actual se libra entre Carthage y CocoaPods, con gran aceptación por la comunidad y miles de librerías y equipos dispuestos a compartir su trabajo en sus repos.

Por hacer un resumen rapidísimo de las diferencias entre los dos gestores más usados, diremos que el uso de CocoaPods es muy simple pero “modifica” nuestro proyecto base para hacer su magia, en cambio, Carthage evita ese tipo de cambios a costa de un manejo que puede resultar más complejo.

La mejor opción es conocer cada una de las opciones y decidir nosotros mismos el que mejor se adapta a nuestra filosofía de trabajo, en este artículo nos centraremos en el más veterano, CocoaPods para Xcode y Swift.

Instalación

CocoaPods se instala mediante una gema de Ruby, bastará con abrir nuestro terminal y escribir

CocoaPods

De esta forma ya tendremos disponible y preparada para usar en Xcode la última versión de CocaPods.

Versión

Si queremos conocer en un futuro la versión que tenemos instalada e nuestro equipo, simplemente ejecutaremos en el terminal

Cocoa_pods

Instalar CocoaPods en nuestro proyecto de Xcode

Para dotar a nuestro proyecto con los “superpoderes” de CocoaPods, nos situaremos con el terminal en la raíz del mismo y ejecutaremos

creando de esta manera el archivo Podfile, encargado de gestionar versiones de frameworks que deseamos añadir y parte de la configuración de CocoaPods a utilizar por nuestro proyecto en Xcode.

En el momento que ya tenemos nuestro Podfile, podremos ejecutar

instrucción encargada de instalar CocoaPods en nuestro proyecto y generar toda la estructura necesaria para, ahora sí, aprovecharnos de nuestro nuevo gestor de dependencias.

Finalizado este proceso, veremos que nuestro proyecto, a parte de nuestro Podfile, ha añadido los siguientes ficheros:

  • Pods: directorio que contendrá principalmente los frameworks que deseemos descargar y utilizar en nuestro proyecto.
  • lock: a modo de fichero de integridad de dependencias gestionadas.
  • [nuestro_proyecto].xcworkspace: nuevo ejecutable de proyecto que fusiona nuestro proyecto de Xcode y CocoaPods. Desde este momento, abriremos únicamente este ejecutable (de color blanco) en Xcode y olvidándonos del creado por defecto [nuestro_proyecto].xcodeproj (de color azul).

Gestión de dependencias

Si abrimos nuestro .xcworkspace en Xcode veremos que a parte del target de nuestro proyecto, tendremos uno más llamado “Pods”.

En este nuevo target podremos encontrar nuestro Podfile y las dependencias gestionadas por CocoaPods (al margen de los ficheros internos necesarios para el correcto funcionamiento de nuestro gestor de dependencias).

Por supuesto, también podremos visualizar nuestro Podfile con cualquier editor de texto.

Nuestro Podfile consta de 3 partes esenciales:

  • El target (scope) de nuestras dependencias: define el entorno al que afectarán las dependencias gestionadas. Representado por “target ‘[nuestro_target]’ do … end”. Como contenido del target, añadiremos las dependencias (pods) que deseemos descargar.
  • platform: para definir plataforma y versión global de nuestro proyecto de Xcode junto con CocoaPods. De esta manera, limitaremos los frameworks no soportados.
  • use_frameworks!: utilizado en proyectos con Swift que quieran hacer uso de frameworks dinámicos (nuestro caso).

CocoaPods

Para añadir una nueva dependencia a nuestro proyecto, simplemente añadiremos dentro de nuestro target una nueva línea que contenga

En nuestro caso utilizaremos para el ejemplo “SVProgressHUD”, una librería que nos proporciona un HUD (componente visual para mostrar un “cargando”).

CocoaPods

Una vez añadimos al Podfile nuestro nuevo pod y guardamos su contenido, podremos ejecutar en el terminal de nuevo

para instalar las nuevas dependencias.

Cocoapods

Hecho esto, la nueva librería aparecerá en el target Pods de nuestro proyecto.

A continuación procederemos a realizar un “build” de nuestra app de Xcode para comenzar a utilizar la nueva dependencia dentro de nuestro código.

Uso de dependencias

Algo común al uso de dependencias gestionadas por CocoaPods, es que tendremos que importarlas en donde queramos utilizarlas.

Cada framework funcionará de una forma diferente, para ello tendremos que revisar la documentación proporcionada por el equipo de desarrollo.

CocoaPods

Gestión de versiones

En el momento que añadimos un pod a nuestro Podfile y lo instalamos, se descargará la última versión disponible en el repo. Esto puede no ser siempre el comportamiento deseado, ya que por requisitos del proyecto (versionado, funcionalidades, compatibilidad…) podemos llegar a necesitar una versión o versiones concretas de nuestra librería de terceros.

Para ello, CocoaPods posee una gran cantidad de operadores para gestionar versiones de Pods, simplemente tendremos que añadir nuestra dependencia siguiendo el formato

Aquí podéis ver el listado completo

Actualización de pods

Siempre que modifiquemos un pod ya existente (como ha sido el caso anterior en el que hemos modificado la versión) deberemos actualizarlo. Para ello podremos actualizar un pod concreto o forzar a actualizar todos los definidos en nuestro Podfile.

Únicamente tendremos que ejecutar en nuestro terminal

Destacar que ejecutar un “pod install” no actualiza los pods ya descargados.

Extras

Descargar versiones fuera del repositorio de CocoaPods

Podremos mapear una url que apunte a un pod alojado en un repositorio externo al de CocoaPods. Para esto, nuestro pod deberá definirse de la siguiente manera dentro del Podfile

La ¡Ayuda!

Básico para cualquier herramienta. Basta con ejecutar en el terminal

Desinstalar CocoaPods de un proyecto Xcode

Realizaremos 2 pasos. El primero situándonos en la raíz de nuestro proyecto y ejecutando en el terminal

Esto eliminará los pods del proyecto.

Restará borrar “a mano” los siguientes archivos:

  • [nuestro_proyecto].xcworkspace
  • Podfile
  • lock

De esta manera, nuestro proyecto quedará “libre” de CocoaPods.

Hay que tener en cuenta que este proceso no elimina el uso en nuestro propio código de los frameworks que anteriormente gestionaba CocoaPods.

Por último, hablar de que disponemos de muchas más posibilidades para trabajar con CocoaPods. Este artículo solo refleja las que, a mi parecer, son los usos más comunes de las características de este gran gestor de dependencias.

Si echáis un ojo a la web oficial de CocoaPods podréis encontrar en detalle toda la potencia de esta herramienta.

Por otra parte, si queréis ver en vídeo todo este tutorial, podéis hacerlo en mi canal de YouTube. Dejarme por comentarios cualquier duda o apreciación y, si os gusta el contenido, compartir, suscribiros y enseñarme levantado ese dedo de “darle al espacio”.

Muchas gracias por vuestro tiempo.

¡Hasta otra Hackermen!

Por: Brais Moure

Brais Moure

Mouredev Founder & Pilbeo Co-Founder | iOS Developer Mr. Jeff App| Freelance Software Developer | Android Developer | Emprendedor | Geek & Friki en general.
Estudiante del Bootcamp de desarrollo Mobile de KeepCoding
¿Quieres saber más sobre el autor? Conócelo a fondo en esta divertida entrevista en Code One
Entrevista Brais Moure
Si tienes algo que deseas compartir o quieres formar parte de JustCodeIt, escríbenos a [email protected]



Share this:

Leave a comment