Seguimos con los tutoriales para adquirir herramientas para nuestros proyectos con XCode, hoy nos dedicaremos a CocoaPods.
Primero que todo ¿Qué es CocoaPods? Es básicamente un manejador de dependencias de librerías para proyectos de XCode. ¿Esa vaina no te dice nada? bueno, en términos sencillos resulta que hay mucha gente por allí desarrollando código para compartirlo libremente con el resto de humanidad, a eso lo llamamos OpenSource o código abierto; esta gente que te digo ha organizado su código en librerías, que son porciones de código funcional que puedes importar a tus proyectos, conservando sus derechos de autor (que los tienen claro, pero nos dejan usarlo). Para que sea más sencillo aún se han organizado en lugares públicos en internet llamados repositorios. ¿Te es familiar la palabra? Claro, hablamos de ello en el post de GitHub, y les han puesto índices para que podamos encontrarlos según su utilidad. Aja ¿Y CocoaPods? pues es un software que te ayuda a usar esas librerías y a garantizar que haya consistencia en las dependencias, ¿Y qué son las dependencias? Son otras librerías que necesitas para que el código funcione. Más info en https://cocoapods.org
¿Qué cosas podemos encontrar en CocoaPods? Librerías útiles como AFNetworking, que se encarga de hacer por nosotros operaciones de descarga de información de la red para ponerlas a disposición del app, librerías para manejar iBeacons, para tener informes detallados de errores en las aplicaciones y muchas cosas interesantes que te ahorran esfuerzo.
¿CÓMO SE HACE?
Lo primero que necesitamos es abrir la terminal, si, tu Mac tiene línea de comandos y por debajo sigue siendo básicamente un Unix. La puedes encontrar en el Finder en la ruta Aplicaciones -> Utilidades -> Terminal
Los Mac con versiones superiores a 10.7 (Lion) tienen ya instalado Ruby que es necesario para poder instalar CocoaPods, no hablaremos hoy de Ruby, solo lo actualizaremos para garantizar que tenemos la última versión, con el siguiente comando, es probable que te pida tu password:
$ sudo gem update --system
Verás como resultado algo como esto:
Ahora instalaremos CocoaPods, así:
$ sudo gem install -n /usr/local/bin cocoapods
La instalación puede tomar un tiempo, ten paciencia. Esta forma de instalarlo funciona aun si tienes instalado “El Capitan”.
Si no quieres o no puedes usar privilegios de root para la instalación, puedes consultar instrucciones detalladas (en inglés) en la página de CocoaPods
Suponemos que ya tienes tu proyecto creado, si necesitas un recorderis sobre ello lee el post sobre la primera app sin código. Ahora vamos a crear un archivo llamado PodFile en la carpeta raíz de tu proyecto. ¿Puedes crearlo por la interfaz gráfica? Si, si tienes instalado un editor de texto plano como Sublime Text puedes hacerlo directamente, para quienes no lo tengan lo explicaremos desde la terminal.
Nos ubicaremos en la terminal en la carpeta raíz de tu proyecto, si no sabes donde está ve al Finder y observa la ruta que te muestra abajo.
Si tu sistema operativo está en español (como el mío) debes saber que el nombre de la ruta original está en inglés, así que para entrar a la ruta mostrada arriba debes hacerlo en la terminal con el comando mostrado a continuación. Esto es Unix, ten cuidado en conservar mayúsculas y minúsculas:
$ cd /users/iyepes/Documents/XCode/hcoportfolio
Para verificar que estás en el lugar correcto puedes digitar el comando pwd que te mostrará tu ruta actual. Luego usaremos “nano” que es un editor de texto plano para crear el archivo así:
$ nano PodFile
Obtendremos una ventana como esta que nos permitirá editar el archivo.
Agregaremos el siguiente texto al archivo que indica, lugar donde están los el repositorio, versión del sistema operativo destino (fíjate que coincida con el target de tu proyecto) nombre de tu proyecto y el nombre de la librería, en nuestro ejemplo AFNetworking.
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.1'
workspace 'hcoportfolio'
pod 'AFNetworking'
Para guardar presionas ctrl+o (la letra o) y para salir ctrl+x
Asegúrate de que tu proyecto esté cerrado en XCode e instala la librería con el siguiente comando:
$ pod install
Si te da el error “pod: Command not found” es necesario cambiar los permisos de la carpeta donde fue instalado CocoaPods, esto puede pasarte si vienes de un upgrade a “El Capitan”. puedes hacerlo así:
$ sudo chmod -R 755 /usr/local/bin
Una vez aceptado el “pod install” debe comenzar la instalación. Tardará dependiendo de la velocidad de tu conexión a internet, pues lo que hace el instalador es descargar la librería de internet y añadirla a tu proyecto. Al terminar te mostrará algo como esto.
Observa la advertencia que dice cerrar las sesiones abiertas de tu proyecto y a partir de ahora abrirlo desde el archivo terminado como .xcworkspace, el otro que termina en .xcodeproj no tiene las librerías que acabamos de adicionar. Al abrirlo notarás que ahora hay dos carpetas principales, una con el nombre de tu proyecto y la otra con el nombre Pods
Hay un truco, estamos agregando a un proyecto en Swift una librería que está escrita en Objective-C, ambos son interoperables, es decir puedo usar código en ambos lenguajes en la misma aplicación, para ello crearemos un archivo de enlace del siguiente modo:
Creamos un nuevo archivo en nuestro Workspace usando File -> New -> File
Seleccionamos un nuevo archivo de Objective-C
Le damos cualquier nombre, lo borraremos después así que no importa
Continuamos con luego
y posteriormente se nos presentará una ventana que nos preguntará como queremos crear el Objective-C bridging header.
Damos click sobre Create Bridging Header, esto solo hay que hacerlo una vez y aparecerá un archivo con el nombre del proyecto y como Bridging Header. Allí importaremos las librerías que necesitemos, por ejemplo:
#import "UIImageView+AFNetworking.h" #import "UIActivityIndicatorView+AFNetworking.h"
No olvides borrar el archivo dummy.
¿Cómo usaremos esas librerías? Bueno, eso lo veremos en otro post.
UPDATE sobre swift
Si estás agregando un pod a swift vas a obtener este error:
Debes agregar en la parte superior de tu PodFile lo siguiente al comenzar:
use_frameworks! source 'https://github.com/CocoaPods/Specs.git'