Sto creando un nuovo Cocoa Touch Framework (MyFramework.framework), che avrà una dipendenza da Alamofire. Questo quadro sarà scritto in Swift. Come test ho iniziato un nuovo progetto di Cocoa Touch Framework:Posso utilizzare CocoaPods quando creo un Cocoa Touch Framework?
File > New > Project > Framework & Library > Cocoa Touch Framework
Poi, nel terminale ho eseguito:
pod init
in questo progetto directory. Nel Podfile appena creato ho aggiunto il seguente:
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'
Ancora una volta, nel terminale ho eseguito:
pod install
e ha iniziato la codifica via.
Tutto sembrava funzionare bene finché non ho utilizzato il prodotto MyFramework.framework in un progetto a vista singola. Quando si tenta di eseguire il progetto ottengo il seguente 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
ho pensato che i progetti Cocoa Touch Framework erano intrinsecamente dinamica, e quindi dovrebbe includere tutte le dipendenze.
Qualcuno può dirmi perché questo sta accadendo e come potrei essere in grado di risolverlo? Si tratta di un problema con CocoaPods o mi manca qualcosa?
Sono un noob to Stack Overflow, quindi per favore fatemi sapere se avete bisogno di ulteriori informazioni da me.
Grazie!
Il motivo per cui questo funziona è che il framework che si sta creando è felice finché le sue dipendenze sono incorporate nell'app (basta collegarle e sono incorporate dall'app). Apple sembra molto schizzinosa riguardo l'inclusione dei framework - l'unico posto dove dovrebbero essere aggiunti è nell'app. Questo per evitare molti quadri diversi che aggiungono diverse versioni di framework che potrebbero causare il caos. Ho solo bisogno di menzionare "java classpath" per dare una foto dell'altro estremo. Quindi sì, usare frameworks in framework è molto difficile, ma può essere fatto usando le cosiddette intestazioni ombrello. –
Il "modo semplice" ti darà un "[!] Il target 'Pods-MyApp' ha framework con nomi in conflitto: googletoolboxformac" per alcune librerie, come Firebase. –
Post molto utile! – VaporwareWolf