La ejecución de pod install instalará la versión actual de RestKit, haciendo que se genere un Podfile.lock que indica la versión exacta instalada (por ejemplo, RestKit 0.10.3). Gracias al Podfile.lock, la ejecución de pod install en este hipotético proyecto en un momento posterior en una máquina diferente seguirá instalando RestKit 0.10.3 incluso si hay una versión más nueva disponible. CocoaPods respetará la versión del Pod en Podfile.lock a menos que la dependencia se actualice en el Podfile o se llame a pod update (lo que hará que se genere un nuevo Podfile.lock). De esta manera CocoaPods evita los dolores de cabeza causados por cambios inesperados en las dependencias.

Hay un gran video de Google sobre cómo funciona esto: «CocoaPods y Lockfiles (Ruta 85)».

<¿Qué ocurre entre bastidores?

En Xcode, con referencias directamente desde el código fuente de ruby, se:

  1. Crea o actualiza un espacio de trabajo.
  2. Agrega su proyecto al espacio de trabajo si es necesario.
  3. Agrega el proyecto de la biblioteca estática CocoaPods al espacio de trabajo si es necesario.
  4. Agrega libPods.a a: targets => build phases => link with libraries.
  5. Agrega el archivo de configuración de CocoaPods Xcode al proyecto de tu aplicación.
  6. Cambia las configuraciones de objetivos de tu aplicación para que se basen en las de CocoaPods.
  7. Agrega una fase de construcción para copiar los recursos de cualquier pods que haya instalado en el paquete de su aplicación. es decir, una ‘fase de construcción de Script’ después de todas las demás fases de construcción con lo siguiente:
    • Shell: /bin/sh
    • Script: ${SRCROOT}/Pods/PodsResources.sh

Nota que los pasos 3 y siguientes se saltan si la biblioteca estática CocoaPods ya está en tu proyecto. Esto se basa en gran medida en el trabajo de Jonah Williams sobre bibliotecas estáticas.

<Pods y submódulos

CocoaPods y los submódulos git intentan resolver problemas muy similares. Ambos se esfuerzan por simplificar el proceso de inclusión de código de terceros en su proyecto. Los submódulos se vinculan a un commit específico de ese proyecto, mientras que un CocoaPod está vinculado a una versión de desarrollador versionada.

<Cambiando de submódulos a CocoaPods

Antes de que decidas hacer el cambio completo a CocoaPods, asegúrate de que las librerías que estás usando actualmente están todas disponibles. También es una buena idea registrar las versiones de las bibliotecas que está utilizando actualmente, para que pueda configurar CocoaPods para utilizar las mismas. También es una buena idea hacer esto de forma incremental, yendo dependencia por dependencia en lugar de un gran movimiento.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.