2016-08-15 5 views
0

Ich mache App mit Xamarin. Ich muss ein iOS-Framework binden, das von Swift an CSharp geschrieben wurde.Der gesamte Code der Bibliothek wird von Swift geschrieben, aber Framework-Header scheint Ziel C?

Traurige Neuigkeiten ist Xamarin unterstützt nicht binden Swift-Framework in diesem Moment, also habe ich fast aufgegeben.

Aber ich habe eine Frage.

Header-Dateien der Bibliothek, die ich in Framework erstellt habe, sieht Objective C. Aber der gesamte Quellcode wird von Swift geschrieben. (dieses Framework: https://github.com/NordicSemiconductor/IOS-DFU-Library)

Was ist das? Ist das natürlich oder haben sie etwas zusätzliche Arbeit geleistet, um es zu Objective C zu machen, wenn es im Rahmen ist?

Das bedeutet, dass ich weiterhin verbindlich arbeiten kann?

Bitte korrigieren Sie mich, wenn Sie müssen.

Antwort

0

Soweit es Xamarin betrifft, spielt es keine Rolle, ob eine Cocoa Lib mit objective C oder swift oder C++ geschrieben ist.

Was Sie müssen die Bibliothek in eine kompilierte * .framework-Bibliothek mit xcode kompilieren. So schnell oder objc, naja, spielt keine Rolle.

Öffnen Sie einfach das Projekt in Xcode und bauen Sie es. Natürlich, nicht bauen und laufen, wie Sie es nicht ausführen können (wieder, es sei denn, Sie haben eine Testsuite). Sehen Sie sich jetzt in XCode unter der Gruppe Produkte an und Sie sollten eine Datei namens DFULibrary.framework sehen.

Sobald Sie die kompilierte Binärdatei haben, dann müssen Sie es in einem C# (oder F #) iOS-Bindungsprojekt kapseln (wieder sagen sie IOS-Bindung, nicht objc Bindung noch schnelle Bindung ... rät warum: p), wie hier erklären: https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-c-libraries/ Jetzt ist es wahr, dass sie sagen:

eine umfassende Bindung zu tun, werden Sie die Objective-C-API-Definition und machen Sie sich mit den .NET Framework-Entwurfsrichtlinien verstehen .

aber ich würde das auf ein Fehlen der Aktualisierung der Dokumentation feststecken. Ersetzen Sie einfach ObjC Verständnis durch schnelles Verständnis :)

Sie werden am Ende mit einer C# api sowieso enden.

Genießen

+1

Swift nicht auf eine statische unterstützt '.a' Bibliothek kompiliert wird, wird es nur als Rahmen ausgesetzt. Xamarin bindet derzeit nicht an Swift-Frameworks, da Sie entweder alle Funktionen, die Sie benötigen, als public/ObjC exportieren und dann Header-Dateien für sie erstellen müssen, die über Interop gebunden werden können. Die andere Möglichkeit wäre, ein ObjC-Bibliotheksprojekt zu erstellen, Ihr Swift-Framework-Projekt darin einzubinden und dann die Swift-Objekte, die Sie benötigen, über ObjC-Code verfügbar zu machen. Sie könnten dann über Interop an diese statische Bibliothek binden und das Swift-Framework in Ihr Xamarin.iOS-Projekt einfügen ... – SushiHangover

+0

Danke Florian und @SushiHangover. Ich denke, Sushis Antwort ist nur die Wahl, die ich treffen kann. Wie Florian gesagt hat, habe ich bereits das Framework für Architekturen kompiliert und kombiniert. Aber die Bindung an Csharp funktioniert nicht, weil was Sushi antwortete. Ich muss vielleicht objc Bibliothek machen, wie Sushi sagte. –

+0

Was ist damit? https://developer.xamarin.com/guides/ios/advanced_topics/embedded_frameworks/ –

Verwandte Themen