Marco rápido según la vaina de cocoa

Usando la versión más nueva de las cápsulas de cocoa (0.36), puedo incrustar vainas de cocoa escritas en swift (por ejemplo, Alamofire) en mi proyecto rápido. Ahora introduje un marco personalizado en el proyecto, que también quiere depender de Alamofire.

Lo que hice para lograr eso es seleccionar agregar el marco de pods a mi marco como dependencia:

Seleccione el Objetivo para mi propio Swift Framework integrado (Swift Module) y en la pestaña "General" en "Marcos y bibliotecas vinculadas", agregué "Pods.framework" como "Obligatorio".

Sin embargo, eso no es suficiente para comstackr, ya que las classs en mi propio marco rápido no pueden "importar Alamofire", ya que no se reconoce como "marco disponible".

Agregando el file Pods.debug.xcconfig y el file Pods.release.xcconfig a las Configuraciones para el objective de mi propio marco rápido, en otras palabras, cambiando la configuration de compilation para hacer todos los cambios, que los packages de cocoa hacen a la configuration de compilation de mi El objective de la aplicación iOS soluciona el problema.

Ahora se crea sin problemas. También se ejecuta sin problemas en el simulador y mi propio marco swift embedded utiliza con éxito los frameworks añadidos por los pods de cocoa.

SIN EMBARGO si ejecuto lo mismo en un dispositivo, comstack e instala sin ningún problema, pero luego se bloquea con un error fatal al iniciar:

dyld: Library not loaded: @rpath/Pods.framework/Pods Referenced from: /private/var/mobile/Containers/Bundle/Application/32D2F1F8-679F-4A5F-8159-28F1C800D0C6/TestingFrameworks.app/Frameworks/mySwiftFramework.framework/mySwiftFramework Reason: image not found 

Al parecer, no todos los ajustes del file xcconfig de pods de cocoa se pueden agregar a la configuration de compilation de mi marco rápido personalizado.

¿Pero por qué funciona en el simulador? Y más importante, ¿cuál es la configuration de compilation, que necesito corregir?

Para mí parece que necesito cambiar esta configuration de compilation:

 PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods 

a otra cosa …

Identifiqué el problema. Simplemente no había pods.framework en los Frameworks / carpeta del marco embedded.

Esto se debe al hecho de que el Pods-frameworks.sh en realidad no copy las cosas en el directory correcto.

Me las arreglé para solucionar este problema:

  1. Eliminación de los inútiles Marcos de incrustaciones de podios de las fases de compilation
  2. Adición de files de copy con el destino establecido en Frameworks

introduzca la descripción de la imagen aquí

¡Eso es!

Para cualquier novato, como yo, esta parte de la pregunta puede confundirte:

Agregando el file Pods.debug.xcconfig y el file Pods.release.xcconfig a las Configuraciones para el objective de mi propio marco rápido, en otras palabras cambiando la configuration de compilation para hacer todos los cambios, que los packages de cocoa hacen a la configuration de compilation de mi El objective de la aplicación iOS soluciona el problema.

Para hacer esto:

  1. En el proyecto Xcode de su marco integrado personalizado, click File > New > File... > iOS > Other > Configuration Settings File .

  2. Haga lo anterior dos veces. Puede nombrar los files Pods.release.xcconfig y Pods.debug.xcconfig , respectivamente.

  3. En su browser de proyectos, expanda el proyecto Pods Xcode> Target Support Files > Pods . Verá que hay allí files nombrados de forma similar .xcconfig . Simplemente copie sus contenidos al file del mismo nombre dentro de su marco Swift personalizado embedded.

  4. Haga clic en el file de proyecto Xcode de su marco Swift, select el objective del proyecto (el azul, no el cuadro de herramientas amarillo)> Info > Configurations .

  5. Expanda las configuraciones de Debug y Release . Es probable que vea dos objectives en su proyecto Xcode: el objective principal del marco y el objective de testing. En la columna "Basado en el file de configuration", configure los files de configuration en el destino principal para que sea el Pods.debug y Pods.release que creó anteriormente.

introduzca la descripción de la imagen aquí

Y luego haz la respuesta de @Pasta .

ACTUALIZAR

Si está utilizando su marco Swift personalizado embedded con otros proyectos, esta configuration se interrumpirá simplemente porque otros proyectos tienen configuraciones diferentes de .xcconfig (el .framework los Pods también puede tener un nombre diferente).

Recuré simplemente agregar Alamofire como un submodule git dentro de mi marco. NOTA: Al git submodule forma del git submodule , es necesario que agregue su marco personalizado a las Embedded Frameworks del proyecto principal, así como a la Alamofire.framework desde su marco personalizado.