ios - ¿Puedo usar CocoaPods cuando creo un Marco Cocoa Touch?
cocoapods swift 4 (2)
Estoy creando un nuevo Cocoa Touch Framework (MyFramework.framework), que dependerá de Alamofire. Este marco se escribirá en Swift. Como prueba comencé un nuevo proyecto de Cocoa Touch Framework:
File > New > Project > Framework & Library > Cocoa Touch Framework
Luego, en la terminal, realicé:
pod init
bajo este directorio de proyectos. En el archivo Podfile recién creado agregué lo siguiente:
source ''https://github.com/CocoaPods/Specs.git''
# Uncomment this line to define a global platform for your project
platform :ios, ''8.0''
# Uncomment this line if you''re using Swift
use_frameworks!
pod ''Alamofire'', ''~> 3.0''
Una vez más, en la Terminal I realicé:
pod install
y comenzó a codificar lejos.
Todo parecía estar bien hasta que utilicé el producto MyFramework.framework en un proyecto de vista única. Cuando intento ejecutar el proyecto, aparece el siguiente problema:
dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/87DA70B6-49BF-441E-BD81-F4A80B0792CF/data/Containers/Bundle/Application/2E414EA8-7E54-4D71-9295-566D4FAAADE2/test.app/Frameworks/MyFramework.framework/MyFramework
Reason: image not found
Pensé que los proyectos de Cocoa Touch Framework eran inherentemente dinámicos y, por lo tanto, incluirían todas las dependencias.
¿Alguien puede decirme por qué sucede esto y cómo puedo solucionarlo? ¿Es esto un problema con CocoaPods o me falta algo?
Soy novato en Stack Overflow, por favor avíseme si necesita más información de mi parte.
¡Gracias!
Desafortunadamente, CocoaPods no admite el uso con el objetivo de Cocoa Touch Framework. Encontré algunas referencias a esto mientras exploro sus problemas en GitHub:
Realmente no apoyamos la integración de Pods en objetivos de framework ...
- neonichu el 4 de noviembre de 2015
y
... para que esto "funcione", CP necesitaría hacer un análisis recursivo de las dependencias en su proyecto de Xcode y también asegurarse de que nunca usaría el producto de construcción en otro contexto.
- neonichu el 7 de julio de 2015
Hasta ahora he encontrado dos formas de lidiar con el problema:
La forma correcta es crear una nueva especificación de pod para su marco y traerla a su proyecto principal a través de CocoaPods. Esto resuelve todos los problemas que CococaPods tiene con el gráfico de dependencia y es la solución recomendada por los desarrolladores de CocoaPods.
La manera más fácil es incluir los pods de su marco en su proyecto principal. Esto parece funcionar, pero francamente no sé por qué. Este es el Podfile de mi proyecto de prueba:
platform :ios, ''9.0''
use_frameworks!
def myfirstframework_pods
pod ''Alamofire'', ''~> 3.0''
end
target ''MyApp'' do
pod ''SwiftKeychainWrapper'', ''~>1.0''
myfirstframework_pods
end
target ''MyFirstFramework'' do
myfirstframework_pods
end
Simplemente agregue el Alamofire.framework
a la sección "Binarios incrustados" en la pestaña "General" del objetivo de su aplicación.