it-swarm.com.de

Kann ich CocoaPods verwenden, wenn Sie ein Cocoa Touch Framework erstellen?

Ich erstelle ein neues Cocoa Touch Framework (MyFramework.framework), das von Alamofire abhängig ist. Dieses Framework wird in Swift geschrieben. Als Test habe ich ein neues Cocoa Touch Framework Projekt gestartet:

File > New > Project > Framework & Library > Cocoa Touch Framework

Dann im Terminal habe ich durchgeführt:

pod init

unter diesem Projektverzeichnis. In der neu erstellten Poddatei habe ich folgendes hinzugefügt:

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'

Wieder einmal habe ich im Terminal:

pod install

und fing an zu programmieren. 

Alles schien gut und gut, bis ich das MyFramework.framework-Produkt in einem Projekt mit einer einzigen Ansicht verwendet habe. Wenn ich versuche, das Projekt auszuführen, erhalte ich folgendes Problem: 

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

Ich dachte, Cocoa Touch Framework-Projekte seien von Natur aus dynamisch und würden daher alle Abhängigkeiten beinhalten. 

Kann mir jemand sagen, warum das passiert und wie ich es reparieren kann? Ist dies ein Problem mit CocoaPods oder fehlt mir etwas?

Ich bin ein Noob für Stack Overflow, also lassen Sie es mich wissen, wenn Sie weitere Informationen von mir benötigen. 

Vielen Dank!

32
bneu

Leider unterstützt CocoaPods die Verwendung mit Cocoa Touch Framework target nicht. Ich habe ein paar Hinweise darauf gefunden, als ich durch ihre Probleme auf GitHub gegangen bin:

Wir unterstützen die Integration von Pods in Rahmenziele nicht wirklich ...
- neonichu am 4. November 2015

und

Damit dies "nur funktionieren" kann, muss CP eine rekursive Analyse der Abhängigkeiten in Ihrem Xcode-Projekt durchführen und außerdem sicherstellen, dass Sie das Build-Produkt niemals in einem anderen Kontext verwenden.
- neonichu am 7. Juli 2015


Bisher habe ich zwei Wege gefunden, um mit dem Problem umzugehen:

Der richtige Weg ist, eine neue Pod-Spezifikation für Ihr Framework zu erstellen und sie über CocoaPods in Ihr Hauptprojekt einzufügen. Dies löst alle Probleme, die CococaPods mit dem Abhängigkeitsgraphen hat, und ist die empfohlene Lösung der CocoaPods-Entwickler.

Der einfache Weg besteht darin, die Pods aus Ihrem Framework in Ihr Hauptprojekt aufzunehmen. Das scheint zu funktionieren, aber ich weiß nicht warum. Dies ist die Poddatei aus meinem Testprojekt:

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
24
Dallas Edwards

Fügen Sie die Abhängigkeit von Alamofire im Podspec des Frameworks wie folgt hinzu 

Pod::Spec.new do |s|

# Other setup 

# Dependencies
s.dependency "Alamofire"
# Other dependencies if any
0
humblePilgrim