CocoaPods para proyecto XCode: Vídeo Tutorial

| Última modificación: 27 de junio de 2024 | Tiempo de Lectura: 5 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este post vamos a explorar el concepto de CocoaPods para un proyecto XCode.

¿Usamos CocoaPods para un proyecto XCode?

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, como CocoaPods para un proyecto XCode, 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 para un proyecto XCode, 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 de CocoaPods

CocoaPods se instala mediante una gema de Ruby, bastará con abrir nuestro terminal y escribir. De esta manera, vamos a instalar CocoaPods en Mac.

sudo gem install cocoapods

CocoaPods

De esta forma ya tendremos disponible y preparada para usar en Xcode la última versión de CocaPods, ya que hemos podido instalar CocoaPods en Mac.

Versión

Si queremos conocer en un futuro la versión que tenemos hemos de instalar CocoaPods en Mac en nuestro equipo, simplemente ejecutaremos en el terminal.

pod --version

Cocoa_pods

Instalar CocoaPods en nuestro proyecto de Xcode

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

pod init

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 e install CocoaPods, podremos ejecutar:

pod install

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

pod '[nombre_del_pod]'

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

pod install

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.

import [nombre_framework]

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

pod '[nombre_del_pod]', '[modificador][versión]'

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

pod update # Para actualizar todos los pods

pod update [nombre_del_pod] # Para actualizar un único pod en concreto

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

pod '[nombre_del_pod]', :git => 'url_del_pod'

La ¡Ayuda!

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

pod --help

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

pod deintegrate

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.
 
 
¿Quieres saber más sobre el autor? Conócelo a fondo en esta divertida entrevista en Code One.
Entrevista Brais Moure
Fernando Rodríguez

iOS Developer & Co-Fundador de KeepCoding

Posts más leídos