Was ist der Unterschied in den Erstellungsphasen zwischen dem Einfügen eines Frameworks in "Binär mit Bibliotheken verknüpfen" oder "Frameworks einbetten"?
xcode
frameworks
Alberto Schiariti
quelle
quelle
Antworten:
Binärdatei mit Bibliotheken verknüpfen Verknüpfen Sie Frameworks und Bibliotheken mit den Objektdateien Ihres Projekts, um eine Binärdatei zu erstellen. Sie können die Quelldateien eines Ziels mit Bibliotheken im aktiven SDK des Ziels oder mit externen Bibliotheken verknüpfen.
Embed Frameworks Sie können ein eingebettetes Framework erstellen, um Code zwischen Ihrer App-Erweiterung und der enthaltenen App freizugeben.
- -
Zeitleiste (siehe diesen Satz) - "Wenn Ihr enthaltenes App-Ziel mit einem eingebetteten Framework verknüpft ist , muss es die arm64-Architektur enthalten, sonst wird es vom App Store abgelehnt."
quelle
Ich habe mir hier und da einige Antworten angesehen und möchte dieses Wissen ändern, wenn jemand erneut auf diese Frage stößt.
In jedem Fall müssen wir eine Verknüpfung zu einer Framework-Ressource (dh der API) herstellen, wenn wir diese verwenden möchten. In diesem Fall müssen wir es im Abschnitt "Verknüpfte Frameworks und Bibliotheken" unten in den allgemeinen Zieleinstellungen hinzufügen.
Wenn wir eine Bibliothek einbetten, versenden wir die Bibliothek - so wie sie ist - mit unserem App-Bundle. Dies kann nützlich sein, z. B. auf Computern unter macOS, auf denen sicherlich keine bestimmte Bibliothek eines Drittanbieters vorhanden ist.
Was ist also mit iOS? Es gibt keine Möglichkeit, Bibliotheken von Drittanbietern per se auf einem iOS-Gerät zu installieren. Außerdem ist Apple in Bezug auf Fat Frameworks (Bibliotheken, die für mehrere Plattformen erstellt wurden) sehr streng. Es muss also eine Möglichkeit geben, die Bibliotheken trotzdem zu liefern? Welche anderen Möglichkeiten haben wir, da es für den Benutzer unserer Anwendung nicht ausreicht, sie nur zu verknüpfen?
Hier kommt eine eigenartige Bauphase ins Spiel. In den Projekteinstellungen unter Build-Phasen befindet sich der Abschnitt Link-Binärdatei mit Bibliotheken. Dieser Schritt entfernt die unnötigen Teile aus den Fat Frameworks und belässt die erforderlichen Teile im Bundle, sodass es auf einem Gerät ausgeführt werden kann, das hinsichtlich der Abhängigkeiten der App agnostisch ist.
quelle
AVFoundation
in eine App importieren , wird diese auf magische Weise verknüpft, wie in Apples eigenem AVCam-Beispiel zu sehen istFür ein App- Ziel
Xcode 11
Static Library
Static Framework
- -Do Not Embed
Dynamic Framework
- -Embed
Pre Xcode 11
Static Library
- -Link
Static Framework
- -Link
Dynamic Framework
- -Embed
Wie es funktioniert [Xcode v11] und [vor Xcode v11]
quelle