fbpx
 

Tutorial Paso a Paso de Carthage

Tutorial Paso a Paso de Carthage

1. Introducción

 

Carthage. Si tienes experiencia en Desarrollo iOS, has tenido que oír hablar de esta herramienta.

Carthage es un Gestor de Dependencias para Proyectos iOS y Mac.

Cuando hablamos de gestores de dependencias en iOS, además de Carthage, es inevitable mencionar Cocoapods.

Hace un par de meses publiqué un Tutorial sobre Cocoapods, en el que vimos los pasos que hay que seguir si quieres utilizar esta herramienta en tus proyectos.

Si estás interesado, puedes acceder a este tutorial desde aquí.

El post de esta semana estará centrado en Carthage.

De esta forma, habiendo revisado estos dos tutoriales, sabrás todo lo necesario para utilizar los 2 gestores de dependencias más importantes y mas utilizados en Desarrollo iOS.

Se tratan de dos herramientas fundamentales que te harán la vida más fácil a la hora de trabajar con librerías externas en tus proyectos con Swift y Objective-C.

Ya no tendrás excusa para no trabajar con librerías de terceros de forma profesional y como se suele hacer en cualquier empresa seria.

 

2. ¿Qué vamos a ver en este Tutorial?

 

Estos son los puntos más importantes en los que nos centraremos:

  • ¿Qué es un Gestor de Dependencias?
  • ¿Qué es Carthage?
  • ¿Cómo instalar Carthage?
  • Trabajando con Carthage
  • Entendiendo el Cartfile
  • Entendiendo los cambios producidos en nuestro proyecto
  • ¿Cómo añadir una librería como Alamofire?
  • Consejos Finales

 

Alamofire es junto con AFNetworking la librería de comunicaciones más importante y utilizada en Desarrollo iOS. Vamos a usarla como ejemplo en el Tutorial sobre Carthage

 

Puedes acceder a toda la información que necesitas conocer sobre Alamofire desde aquí.

¡Comenzamos!

 

3. ¿Qué es un Gestor de Dependencias?

 

Empecemos por lo básico. Puede que ya domines este concepto o puede que no sepas a que nos estamos refiriendo cuando hablamos de gestores de dependencias.

En caso de que ya estés familiarizado con este término, puedes pasar al siguiente apartado.

Al hablar de Dependencias, nos referimos a Librerías Externas que queremos integrar en nuestros proyectos.

Si nunca has trabajado con librerías externas en tus proyectos iOS, te recomiendo que eches un vistazo a este tutorial, donde revisamos paso a paso el proceso:

Integrando Librerías Externas en tus proyectos

Ahora que ya sabes a que nos referimos cuando hablamos de dependencias, podríamos decir que un gestor de dependencias como Carthage nos permite automatizar parte del proceso de integración y mantenimiento de cualquier librería externa en tus proyectos.

Sin embargo, si ya has trabado antes con librerías externas, sabrás que se pueden integrar de forma manual en cualquier proyecto. ¿Por qué utilizar entonces un gestor de dependencias como Carthage?

Deberías usarlo por 3 motivos:

  • Te permite, como ya hemos comentado, simplificar y estandarizar el proceso de adición de librerías de terceros a tus proyectos.
  • Te evita, tener que descargar cada nueva versión de las librerías de forma manual, facilitándote la actualización de dichas librerías en el futuro.
  • Facilitan el mantenimiento de librerías que a su vez dependen de otras librerías.

 

Como conclusión, podríamos decir, que el trabajo que realiza un gestor de dependencias como Carthage se puede realizar de forma manual. Sin embargo, sino quieres acabar tan mal como el amigo Nicolas, deberías utilizarlos en tus proyectos.

 

carthage crazy man

Nicolas Cage gestionando sus proyectos iOS sin gestor de dependencias

 

4. ¿Qué es Carthage?

 

Una vez que tenemos claro, para que sirve un gestor de dependencias y cuales son sus ventajas, vamos a centrarnos en Carthage.

Carthage es un gestor de dependencias creado por un grupo de desarrolladores de Github. Fue escrito íntegramente en Swift con el objetivo de utilizarse en proyectos desarrollados en este lenguaje.

Puedes acceder al repositorio oficial de Carthage desde aquí.

Su filosofía principal es la de ser muy simple y a la vez modificar lo menos posible nuestros proyectos.

Es muy fácil de entender, de utilizar y de mantener.

Otra de sus ventajas es te permite controlar en todo momento el proceso. No existe ningún tipo de “magia oculta” en segundo plano. Tu siempre tienes el control.

Además Carthage no modifica tu proyecto en Xcode obligándote a utilizar un workspace (Algo que personalmente odio).

Puede que ahora mismo estés pensando:

“Más sencillo que Cocoapods, te permite un mayor control y además no modifica tu proyecto. Alguna pega tiene que tener ¿no?”

Pues si. Como cualquier herramienta, Carthage no es perfecto.

Para funcionar, este gestor utiliza frameworks dinámicos en lugar de librerías estáticas, por lo que tu proyecto deberá ser desarrollado para iOS 8 o versiones superiores.

Sin embargo, teniendo en cuenta la rapidez de adopción de cada nueva versión de iOS, me parece una desventaja insignificante, que en la mayoría de proyectos no te impedirá utilizar Carthage.

Después de esta introducción teórica, vamos a ver como instalar y trabajar con Carthage.

 

5. Instalando Carthage

 

Existen dos formas de instalar Carthage.

El método fácil y el método elegante.

El fácil podría seguirlo sin muchos problemas, Marisa, mi madre.

En cambio si sigues el proceso elegante, realizarás la instalación íntegra desde la linea de comandos, algo que todo Desarrollador iOS debería saber hacer.

Tu decides cual de las dos opciones prefieres.

carthage choose installation process

Es el momento de elegir…

 

Método Sencillo – Método Marisa

Para instalar Carthage con este método, simplemente tendrás que acceder al repositorio en Github desde aquí y en la sección inferior, donde pone Downloads, descargar el instalador Carthage.pkg.

carthage download linkUna vez descargado, haz doble click en el paquete para comenzar con la instalación.

carthage installation windowHaz click en continuar, elige una ubicación para la instalación y para terminar, pulsa en Instalar.

Después de unos segundos, tendrás Carthage instalado en tu ordenador.

 

Método Elegante – Like a Boss

 

En este caso, para realizar la instalación de Carthage vamos a utilizar Homebrew.

Si no conoces Homebrew, decirte que es un gestor de paquetes para macOS que nos permite descargar e instalar facilmente una gran cantidad de herramientas que como desarrolladores es probable que en algún momento necesitemos.

carthage homebrew installation instructions

 

Instalando Homebrew

 

Por tanto, el primer paso, antes de Carthage, sería instalar Homebrew.

Para ello abre una ventana del Terminal en tu ordenador, pega la siguiente linea de código y pulsa intro:

carthage homebrew installing by terminalPulsa de nuevo intro y te pedirá tu contraseña de Administrador.

Introdúcela, pulsa intro y el sistema comenzará con la descarga e instalación de Homebrew.

Este proceso puede tardar unos minutos.

Cuando veas que ha terminado, Homebrew estará instalado en tu ordenador.

 

¿Cómo comprobar si ya tenemos instalado Homebrew?

 

Una vez terminado este proceso, podemos comprobar facilmente si Homebrew se ha instalado correctamente en nuestro ordenador, escribiendo el siguiente comando:

Si por pantalla, aparecen una serie de comandos, es que Homebrew está instalado y operativo en tu sistema.

En cambio si se muestra por pantalla el siguiente mensaje:

command not found

querrá decir, que ha habido algún problema en la instalación y deberás repetir el proceso que hemos seguido.

 

Instalando Carthage

 

Ahora que ya disponemos de este gestor de paquetes, vamos a utilizarlo para descargar Carthage.

Tal y como nos explican, aquí, para instalarlo, simplemente tienes que escribir la siguiente instrucción en tu terminal y pulsa intro:

Al momento verás una pantalla similar a esta, que te indicará que el proceso ha comenzado:

installing carthage with brewEspera unos segundos, hasta que termine.

 

Comprobando si ya tenemos instalado Carthage

 

Al igual que hemos hecho con Homebrew, ahora comprobaremos, que la instalación de Carthage se ha realizado correctamente.

Para ello puedes escribir la siguiente linea en tu terminal y pulsar intro:

Si Carthage está instalado, se mostrará por pantalla el número de versión instalada.

En caso contrario se mostrará el mensaje que ya conocemos:

command not found

 

En el momento de realizar este tutorial, la última versión de Carthage liberada es la 0.20.0

 

Enhorabuena. Has instalado Carthage en tu ordenador. Espero que lo hayas hecho siguiendo la segunda opción.

Nuestro siguiente paso será ver como funciona este gestor de dependencias.

 

6. Trabajando con Carthage

 

Una vez que hemos instalado Carthage, veamos como utilizarlo.

Vamos a crear un proyecto de prueba en Xcode para demostrar como podemos instalar la librería Alamofire a través de Carthage.

 

Si te interesa la instalación de cualquier otra librería en alguno de tus proyectos, los pasos que debes seguir son exactamente iguales a los que vamos a ver con Alamofire

 

Crea un nuevo proyecto en Xcode. Elige la plantilla “Single View Application“. Puedes nombrarlo TestingCarthage. Deja el resto de opciones tal y como ves en la imagen:

 

carthage creating new project

 

Al guardar el proyecto, asegúrate de guardarlo en el Escritorio de tu Mac. Es importante para poder seguir paso a paso este Tutorial.

Lo siguiente que haremos será navegar hasta el directorio raiz de nuestro proyecto, utilizando el terminal.

 

El directorio raiz de un proyecto iOS, es aquel que contiene el fichero .xcodeproj

 

Para ello, copia la siguiente linea en tu terminal y pulsa intro:

Este comando nos permitirá navegar hasta la ruta exacta donde está guardado nuestro proyecto.

 

Creando un Cartfile

 

Lo siguiente que haremos será crear un Cartfile.

Un cartfile es un fichero de texto que se almacena en el directorio raiz de nuestro proyecto y describe las dependencias que queremos añadir, de forma, que Carthage sepa que librerías debe descargar e instalar.

Cada linea de un cartfile indica donde buscar una dependencia, su nombre y de manera opcional que versión de esa dependencia vamos a utilizar.

 

Un cartfile de Carthage es el equivalente a un Podfile cuando utilizamos Cocoapods

 

Una vez que estamos en el directorio raiz de nuestro proyecto, al que hemos accedido con la anterior instrucción de terminal, crearemos nuestro cartfile usando el comando touch:

Una vez creado, lo abriremos con Xcode para editarlo. Para ello escribe lo siguiente en tu terminal:

Podríamos haber utilizado otro editor de texto como Vim, pero en este caso he querido mostrarte el proceso de edición directamente desde Xcode.

Añade la siguiente linea al fichero Cartfile y guárdalo:

Esta linea indica que nuestro proyecto requiere la última versión de Alamofire a partir de la 4.4.

 

7. Entendiendo el Cartfile

 

En cada una de las lineas del cartfile, como hemos dicho antes, especificaremos el origen de la dependencia y la versión de la misma.

 

Origen de la Dependencia

 

La primera parte de cada linea determina donde tiene que ir a buscar Carthage la dependencia.

Carthage permite especificar el origen de una dependencia de dos formas posibles:

 

Github

Para proyectos alojados en Github. Puedes especificar un proyecto de Github usando el formato Username/ProjectName, tal como hemos hecho con Alamofire.

 

Git

Para cualquier proyecto que utilice un repositorio Git. El formato a seguir sería la palabra git seguido de la ruta del repositorio, que puede ser un repositorio remoto especificado con http://, git:// o ssh:// o un repositorio local alojado en tu ordenador.

 

Versión de la Dependencia

 

Después de determinar donde estará alojada, tendremos que especificar a Carthage cual será la versión de la dependencia con la que queremos trabajar.

Existen varias opciones que podemos utilizar para acotar las versiones:

  • == 2.0 : Quiere decir que utilizaremos exactamente la versión 2.0
  • >= 2.0 : Usaremos la última versión disponible a partir de la 2.0
  • ~> 2.0 : Utilizaremos la última versión disponible a partir de la 2.0 a excepción de cualquier Major Release. Es decir, si hacemos ~> 1.6, usaremos la última disponible a partir de la 1.6 pero sin llegar a utilizar la 2.0. Si hiciéramos ~> 3.0, usaríamos la última disponible a partir de la 3.0 pero sin llegar a la 4.0

Si no especificas la versión en tu cartfile, Carthage usará la última versión que sea compatible con el resto de dependencias de tu proyecto.

 

8. Generando Alamofire con Carthage

 

Una vez que tenemos nuestro cartfile creado, vamos a instalar Alamofire.

Cierra el cartfile en Xcode, vuelve al terminal, teclea el siguiente comando y pulsa intro:

con este comando, carthage clonará el repositorio git de Alamofire y convertirá esta dependencia en un framework.

Deberías obtener por pantalla algo similar a esto cuando inicies el proceso:

carthage installing alamofireLa opción –platform iOS que hemos añadido especifica que solo se generará el framework para iOS. Si no hubiéramos especificado ninguna plataforma, Carthage habría generado el framework de Alamofire tanto para MacOS como para iOS (Siempre que el framework lo permitiese).

Cuando tu ventana de terminal te devuelva el control, querrá decir que el proceso de generación de Alamofire habrá terminado.

 

Puedes utilizar el comando Carthage update cada vez que Alamofire libere una nueva versión. De esta forma podrás actualizar fácilmente la versión que estás utilizando en tu proyecto a la última versión liberada.

 

En este punto no sabemos muy bien que es lo que ha hecho Carthage ¿no?

Sabemos que hemos utilizado un comando para que instale Alamofire en nuestro proyecto, pero realmente no sabemos que ha modificado en el directorio del proyecto.

Por esto, vamos a echar un vistazo y a ver rápidamente que pinta tiene ahora el contenido de nuestro directorio.

 

9. Echando un vistazo al Proyecto

 

Accede a Finder y navega hasta el directorio raiz de nuestro proyecto TestingCarthage. Recuerda que lo habíamos guardado en el Escritorio.

El directorio debería tener una pinta parecida a esta:

carthage build directoryComo ves, al ejecutar el comando carthage update, nuestro gestor de dependencias ha realizado algunos cambios en nuestro proyecto. Vamos a revisar cada uno de los ficheros y carpetas que ha creado:

 

Cartfile

 

Como ya hemos visto anteriormente, se trata del fichero donde debemos especificar por cada linea, la dependencia que queremos generar a través de Carthage. Si lo abres con un editor de texto verás como aparece la linea correspondiente a Alamofire.

 

Cartfile.resolved

 

Este fichero es importante, ya que muestra que versión exacta de cada una de las dependencias ha generado Carthage en nuestro proyecto.

Si recuerdas, en nuestro Cartfile, especificamos esto:

Es decir, le dijimos a Carthage que generara la última versión disponible de Alamofire a partir de la 4.4 pero sin llegar a la 5.0.

Ahora, abre el fichero Cartfile.resolved con un editor de texto cualquiera y comprueba cual es la versión exacta que ha instalado Carthage.

Dependiendo del momento en el que estés leyendo este tutorial, la versión generada cambiará. En mi caso, la última versión disponible de Alamofire es la 4.4.0, por tanto al acceder a Cartfile.resolved me encontraré con esto:

carthage ALAMOFIRE VERSION INSTALLED

Directorio Build

 

El directorio Build contiene el framework compilado correspondiente a cada dependencia. Estos son los frameworks que debes añadir a tu proyecto, para poder utilizarlos. Veremos como hacerlo en el siguiente apartado del tutorial.

 

Directorio Checkouts

 

En este directorio, Carthage mantiene el código fuente de cada dependencia. Aquí comprueba que está listo para ser generado como un framework independiente.

No es recomendable modificar el código fuente que encuentres en este directorio, ya que en el momento que utilices el comando carthage update para actualizar las dependencias de tu proyecto, el contenido de este directorio se sobreescribirá y todo tu trabajo se perderá.

Si necesitas modificar cualquier dependencia, puedes utilizar el siguiente comando:

Usando esta instrucción, Carthage añade cada dependencia del directorio Checkouts a tu repositorio como submódulo. Esto quiere decir, que puedes modificar el código fuente de las dependencias y hacer commit de esos cambios sin miedo a que sean sobreescritos.

Después de entender la estructura actual del proyecto, vayamos a la parte interesante del tutorial, donde veremos como finalizar el proceso de adición de la librería Alamofire

 

10. Añadiendo Alamofire

 

Una vez que hemos explicado paso a paso todo este proceso, hemos llegado a la parte final.

Vamos a ver como añadir Alamofire a nuestra aplicación.

Abre con Xcode el proyecto TestingCarthage.

Haz click en el nombre del proyecto, situado en la parte superior izquierda, selecciona el Target TestingCarthage y en la pestaña General, haz scroll hasta la parte inferior, donde podrás ver la sección llamada Linked Frameworks and Libraries.

carthage Linked Frameworks and LibrariesLo que tenemos que hacer es añadir el Framework Alamofire a esa sección.

Para ello, abre el directorio de nuestro proyecto con Finder y accede a la carpeta Build. Dentro de ella encontrarás otra carpeta que pone iOS, donde estará nuestro Framework.

carthage build directoryTen siempre en cuenta que esta ruta puede ser diferente para otras librerías, sin embargo, lo único que tendrás que hacer es buscar el fichero con extensión .framework, dentro de alguna carpeta que se encuentre en la carpeta Build.

Tu siguiente paso será arrastrar Alamofire.framework al menú Linked Frameworks and Libraries:

 

carthage adding alamofire to project

 

Haciendo esto, tu proyecto estará preparado para poder trabajar directamente con la librería Alamofire.

Puedes comprobar que funciona perfectamente, añadiendo “import Alamofire” a tu ViewController.swift y compilando el proyecto:

 

carthage adding import alamofire

 

Con esto habrías finalizado el proceso de adición de la librería Alamofire a tu proyecto utilizando el gestor de dependencias Carthage.

Puede que te haya parecido algo largo, pero ten en cuenta que hemos ido explicando de forma detallada cada uno de los pasos que hemos ido dando. Cuando utilices Carthage en tus proyectos verás que se tarda muy pocos minutos en añadir cualquier dependencia.

 

11. Consejos para trabajar con Carthage

 

Para terminar el tutorial me gustaría comentar algunos detalles respecto a Carthage.

Vamos a ver que partes de nuestro proyecto deberíamos añadir al sistema de control de versiones.

Esto es debatible y yo únicamente te voy a dar mi punto de vista. Depende de ti decidir como trabajar.

El fichero Cartfile.resolved es fundamental que lo añadas a tu repositorio. De esta forma te aseguras que el resto de desarrolladores tienen claro cual es la versión de cada dependencia con la que estáis trabajando.

Además de este fichero, puedes añadir a tu repositorio los directorios Build y Checkouts. Esto te permitiría que cualquiera que clone tu repositorio siempre tendrá acceso al código fuente y a los binarios de cada dependencia.

Otro aspecto a tener en cuenta si utilizas Carthage en un equipo de desarrollo es que si alguien necesita utilizar el proyecto y tu todavía no has hecho commit, deberá usar el siguiente comando después de hacer check out de tu proyecto:

La ventaja de utilizar esta instrucción es que se descargarán y se compilarán las versiones exactas de las dependencias que están especificadas en Cartfile.resolved.

Por otro lado, si hubieras utilizado “carthage update“, habrías actualizado el proyecto con la versión más reciente compatible que estuviera disponible en cada dependencia.

 

12. Resumen Final y Descarga del Proyecto

 

En este Tutorial hemos visto en que consiste un gestor de dependencias, para después centrarnos en Carthage y en su funcionamiento. Además hemos visto como añadir la librería Alamofire a un proyecto de ejemplo. Por último hemos revisado algunos aspectos que debes tener en cuenta cuando trabajes con Carthage.

Espero que te pueda servir siempre que necesites integrar este gestor de dependencias en cualquier proyecto iOS.

Puedes descargar el proyecto completo que hemos desarrollado en este tutorial desde aquí.

 

13. Has terminado el Tutorial

 

Espero que hayas disfrutado este tutorial y sobre todo te sirva para poder integrar Carthage en tus proyectos iOS.

Como siempre, aquí tienes el video-chorra de esta semana.

 

 

14. ¿Donde ir ahora?

 

Si quieres ampliar información sobre Carthage puedes revisar su fichero README entrando aquí.

Puedes acceder a más tutoriales disponibles en EfectoApple desde aquí.

Si este artículo te ha parecido útil, me harías un gran favor compartiéndolo en tus redes sociales.

Y como siempre, para cualquier duda, tienes los comentarios a tu disposición.

Recuerda, cada lunes un nuevo Tutorial sobre Desarrollo iOS.

Gracias por leer EfectoApple.

 

Etiquetas:
Sin comentarios

Escribe un comentario

10AppsIpad

Descarga las 10 Aplicaciones

Introduce tu Nombre y tu Email para recibir las Apps en tu Correo

Acabo de enviarte un email. Sigue las instrucciones para descargar las Aplicaciones. Puede que tengas que revisar tu buzón de correo no deseado. Gracias.