xcode - example - ¿Cómo uso Cocoapods en un marco incrustado?
pod local (2)
Estoy utilizando un marco incrustado para mis vistas personalizadas en un nuevo proyecto para aprovechar las nuevas características de @IBDesignable en Xcode 6 y me gustaría animar dichas vistas con el Pop de Facebook. Agregué Pop al proyecto usando Cocoapods pero el marco incrustado no tiene acceso a esos archivos ( ''POP/pop.h'' file not found
).
Traté de copiar las fases de compilación relacionadas con Cocoapods del objetivo de la aplicación al objetivo del marco personalizado, pero no funcionan como están. Lo que sí funciona es copiar directamente la carpeta Pop al marco incrustado, pero luego Xcode me dice que tengo que cambiar todos los corchetes angulares <POP/pop.h>
a comillas "POP/pop.h"
. Supongo que hay una mejor manera y estoy en blanco.
Asumiendo en su Podfile, está utilizando el link_with ''MyCustomFramework''
, donde ''MyCustomFramework'' es su nombre de marco incrustado, y ha ejecutado la pod install
. Seleccione su archivo de proyecto (azul en la parte superior derecha) y vaya a " Configuración de compilación ". Luego, busque '' Permitir inclusiones no modulares en Framework Modules '' y configúrelo en YES , tanto para el archivo de proyecto (azul) como para el objetivo de Custom Framework (ej. MyCustomFramework - orange "lunchbox case" icon).
Luego puede incluir cosas de cacao en su archivo principal MyCustomFramework.h.
A continuación, solo importa ''@import MyCustomFramework;'' en su objetivo de Aplicación, y tendrá el resto de los CocoaPods a su disposición. (Por ejemplo, mostrando acceso a ''cada uno'' desde ObjectiveSugar).
Si debe hacer esto o no, es un problema aparte, pero esto le permite a su Marco personalizado incluir las bibliotecas CocoaPods en sí mismo, lo que permite que el objetivo de la Aplicación simplemente incluya su Marco personalizado y también obtenga todos los CocoaPods.
Perdón por las múltiples imágenes, pero me gusta ser visual.
Supongo que estás modificando el marco para usar Pop. En este caso, también deberá agregar la ruta de los encabezados Pop a las rutas del encabezado de búsqueda de Build Settings.
Pero si estás modificando el marco, también puedes crear un podspec para él y dejar que CocoaPods maneje todo (¿y enviar una solicitud de extracción al creador?).
En cuanto a la pregunta de recompensa.
Un marco nunca debe incrustar otras bibliotecas. Si, por ejemplo, desea utilizar AFNetworking en su biblioteca:
- Indique que se requiere AFNetworking en sus propias instrucciones de instalación de marco.
- Si distribuye archivos binarios, solo cree localmente contra los encabezados de AFNetworking. Los usuarios necesitarán proporcionar su propio AFNetworking al vincular su aplicación.
- Si distribuye código fuente con su marco (si los usuarios tienen que construirlo ellos mismos) pregunte en sus pasos de instalación para establecer la ruta de encabezados AFNetworking en sus marcos. Cree rutas de búsqueda de encabezado de configuración y preestablezca rutas comunes tales como
POD_ROOT
, etc.
Luego funciona, pero tiene instrucciones de instalación complejas, los usuarios tienen que agregar recursos manualmente, si es necesario, es difícil controlar la versión de AFNetworking que agregan los usuarios y la mayoría nunca actualizará su marco porque puede romper su configuración. Todas las buenas razones para apoyar CocoaPods mediante la creación de un podspec (puede seguir manteniendo el proyecto de marco / biblioteca estática si realmente lo desea).