ios objective-c xcode cocoapods

ios - pod init



¿Cómo agregar configuraciones de proyectos personalizados a Xcode cuando se usa CocoaPods? (2)

Agregue esta línea en su archivo de configuración, al igual que importar un archivo de encabezado:

#include "Pods/Target Support Files/Pods/Pods.debug.xcconfig"

NOTA: es #include , no #import

Tengo un iOS X OS Xcode proyectos, donde estoy usando CocoaPods, y parece que no puedo encontrar la manera de agregar mi propia configuración de proyecto (además de depurar y liberar) sin explotar por completo la construcción.

En el proyecto, tengo una serie de objetivos para aplicaciones en ambas plataformas y sus extensiones de aplicación. El espacio de trabajo de Xcode, por supuesto, también tiene el proyecto Pods.

Debido a que el proyecto crea objetivos para iOS y Mac, utilizo los "objetivos" de CocoaPods para agrupar sus grupos. My Podfile se ve algo así:

source ''https://github.com/CocoaPods/Specs.git'' target :iOS do platform :ios, ''7.1'' link_with ''iOS'', ''NozbeToday'', ''NozbeShare'', ''NozbeWatch'' # pods... end target :Mac do platform :osx, ''10.9'' link_with ''Mac'' # pods... end

Ahora aquí es donde tengo un problema. Hasta ahora solo he tenido las configuraciones predeterminadas de "Depuración" y "Liberación" en mi proyecto. Quería cambiarlos y agregar algunos nuevos para diferentes combinaciones de ID de perfil / paquete de aprovisionamiento.

... y estoy atascado. No puedo entender cómo hacer esto.

El primer signo del problema fue una pod install advertencia arrojada por cada combinación de objetivo / configuración:

[!] CocoaPods no configuró la configuración base de su proyecto porque su proyecto ya tiene un conjunto de configuraciones personalizadas. Para que la integración de CocoaPods funcione, configure las configuraciones base del objetivo NozbeToday en Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig o incluya los Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig en su configuración de compilación.

No pude entender lo que significa y cómo solucionar esto. De cualquier manera, el proyecto no se compilaría; en el mejor de los casos, obtendría un error del enlazador al decir que no puede encontrar Pods-something.a ...


OK, a mitad de la redacción de esta pregunta me di cuenta (yay rubber ducking). Aquí está la solución para las próximas generaciones:

Básicamente, debe agregar una dependencia explícita en el objetivo de Pods a su esquema de aplicación.

La forma en que lo hace es: edite su esquema de aplicación, vaya a la sección Crear y agregue el objetivo Pods arriba del destino de la aplicación. Debería ver algo como esto:

Y solo funcionará.

En cuanto a las advertencias de CocoaPods en la pod install , debe usar los archivos xcconfig generados por CP para cada una de las configuraciones de Xcode. La forma en que lo haces es:

  • encuentre los archivos .xcconfig en Pods/Target Support Files
  • arrástrelos y colóquelos en el grupo "Pods" en su proyecto de Xcode (solo añada referencia. No copie en el destino ni añada a la construcción)
  • Haga clic en el proyecto en el navegador del proyecto y seleccione el proyecto en sí (no uno de los objetivos). Vaya a Información, y en Configuraciones configure los .xcconfigs correctos para cada configuración y destino en la columna "Basado en el archivo de configuración".

También necesitará algo como esto en su Podfile para que CocoaPods sepa cuáles de sus configuraciones de Xcode son "depuradas" (no optimizadas), que son "versiones":

project ''1Nozbe'', { ''iOS 1 Dev Debug'' => :debug, ''iOS 2 Dev AdHoc'' => :release, ''iOS 3 Release Debug'' => :debug, ''iOS 4 Release AdHoc'' => :release, ''iOS 5 Release AppStore'' => :release, }

No exactamente relacionado con CocoaPods, pero si tiene otras dependencias (subproyectos) además de CP, también deberá hacer dos cosas:

  • agregar dependencias explícitas en el objetivo del subproyecto (como en la captura de pantalla anterior)
  • cambie el nombre / agregue configuraciones en su subproyecto para que coincidan con su proyecto principal. (De lo contrario, Xcode simplemente no sabe qué configuración usar con su subproyecto)