Ich erstelle ein neues Cocoa Touch Framework (MyFramework.framework), das von Alamofire abhängig sein wird. Dieser Rahmen wird in Swift geschrieben. Als Test habe ich eine neue Cocoa Touch Framework-Projekt gestartet:Kann ich CocoaPods beim Erstellen eines Cocoa Touch Framework verwenden?
File > New > Project > Framework & Library > Cocoa Touch Framework
Dann im Terminal durchgeführt I:
pod init
unter dieser Projekte Verzeichnis. In der neu geschaffenen Podfile habe ich folgendes:
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'
erneut im Terminal I ausgeführt:
pod install
und begann Codierung entfernt.
Alles schien gut und gut, bis ich das MyFramework.framework Produkt in einem Einzelansicht-Projekt verwendet. Wenn ich versuche, das Projekt, das ich das folgende Problem bekommen auszuführen:
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
dachte ich, dass Cocoa Touch Framework-Projekte von Natur aus Dynamische waren, und daher würden alle Abhängigkeiten enthalten.
Kann mir jemand sagen, warum das passiert und wie ich es beheben kann? Ist das ein Problem mit CocoaPods oder fehlt mir etwas?
Ich bin ein Noob zu Stack Overflow, also lassen Sie mich bitte wissen, wenn Sie weitere Informationen von mir benötigen.
Danke!
Der Grund, warum dies funktioniert, ist, dass das Framework, das Sie bauen, glücklich ist, solange seine Abhängigkeiten in der App eingebettet sind (verbinden Sie sie einfach, und sie werden von der App eingebettet). Apple scheint sehr wählerisch zu sein, Frameworks zu integrieren - der einzige Ort, an dem sie hinzugefügt werden sollten, ist in der App. Dies dient dazu, viele verschiedene Frameworks zu vermeiden, die verschiedene Versionen von Frameworks hinzufügen, die Chaos verursachen könnten. Ich muss nur "Java Classpath" erwähnen, um ein Bild des anderen Extrems zu geben. Also ja, Frameworks in Frameworks zu verwenden, ist sehr schwierig, aber kann mit so genannten Regenschirm-Header getan werden. –
Der "einfache Weg" gibt Ihnen ein "[!] Das 'Pods-MyApp' Ziel hat Frameworks mit widersprüchlichen Namen: googeltoolboxformac" für bestimmte Bibliotheken wie Firebase. –
Sehr hilfreiche Post! – VaporwareWolf