Frage

In meiner app, ich habe zur Zeit alle meine Code in eine statische Bibliothek getrennt, es einfacher zu machen, die Xcode Projektziele für die eigentliche App einzurichten und für Unit-Tests für meinen Code. Das Problem dabei ist, dass ich die meisten meiner xib Dateien in der statischen Bibliothek setzen wollen als gut, aber es scheint, dass, wenn ich meine app laufen und versuchen, die xib verweisen sie es nicht finden können, wenn sie in der eigentlichen enthalten ist App Ziel statt des statischen Bibliothek Ziels. Ist es möglich, in statischen Bibliotheken enthielten xib Dateien und andere Ressourcen zu haben, die durch den Code in derselben Bibliothek referenziert werden können, und wenn ja, wie?

War es hilfreich?

Lösung

Nein ist es nicht möglich, da eine statische Bibliothek nicht das gleiche wie ein „Bündel“ ist.

Ein Bündel ist ein Verzeichnis, das alle Arten von Dateien, einschließlich Ressourcen-Dateien (xib), ausführbare Dateien und statische Bibliotheken enthält. Es existiert auf dem Dateisystem als eine Gruppe von einzelnen Dateien.

Eine statische Bibliothek ist eine einzelne Datei, die Klassen, Code und Variablen enthält, die gemeinsam von der Bibliothek Schöpfer verbunden waren. Dabei spielt es keine „enthalten“ andere Dateien, es ist im Wesentlichen eine Datenbank des kompilierten Codes.

Auch wenn es möglich wäre, die Daten für die xibs in dort zu setzen, würde Xcode hat keine Möglichkeit zu wissen, dass es dort war, wie es für sie als einzelne Dateien auf dem Dateisystem aussieht.

Unter Mac OS können Sie einen „Rahmen“ schaffen, das im wesentlichen ein Bündel von Code, Ressourcen, Einstellungen usw., die von mehreren Projekten wiederverwendet werden kann. Doch Apple nicht scheint benutzerdefinierte Framework-Erstellung für iPhone OS zu unterstützen.

Bundles https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

Statische Bibliotheken http://en.wikipedia.org/wiki/Static_library

Andere Tipps

Auf Kommentar antworten (wird in einem Kommentarfeld nicht passen)

Keine Sorge, ich habe versucht, für die letzte Woche, wie Sie so ziemlich das Gleiche zu tun - ich möchte einen „Rahmen“ von xibs versenden, sind Dateien und .a Libs an einen Kunden, ohne sie zu geben alle den Quellcode. Ich konnte keinen guten Weg finden, diese entweder mit Bündeln zu tun.

Aus irgendeinem Grunde von Apple ist besonders stumpf über die. - Ich kann keinen Grund sieht sie so im Fall von statischen Bibliotheken (dynamische Bibliotheken fair genug) sein

Meine Lösung für jetzt ist, um manuell einen Paketordner „Foo“ zu erstellen, die die folgenden Unterordner enthalten:

  1. "include" -> setzen .h Dateien hier
  2. "res" -> setzen .xib Dateien hier
  3. "lib" -> enthält "iphoneos" & "iphonesimulator" Unterordner mit jeweils libFoo.a

Dann zip diese nach oben und an den Client senden. Der Client:

  1. Entpackt das Paket, wo immer sie wollen.
  2. Fügt die "res" -Ordner unter der Ressourcen-Gruppe.
  3. Ändert die folgenden Zielsystemeinstellungen:
    Andere Linker Flags = -Objc -lfoo
    Header-Suchpfade = / include
    Library Search Paths = / lib / $ (PLATFORM_NAME)

Ich kann wahrscheinlich die Paketerstellung mit einigen Build-Schritten an meinem Ende automatisieren, aber der Kunde ist mit vier leicht knifflig Schritten stecken zu bleiben einzurichten.

fand ich eine perfekte Lösung für diese, die alle oben tut automatisch und mehr https://github.com/kstenerud/iOS-Universal-Framework Es ist ein xCode Plugin

Es ist für mich wie ein Zauber, Es funktioniert nur für XCode 4 und höher

Ja, Sie können. eine xib Datei in Ihrer Bibliothek hinzufügen, wie Sie für ein normales Projekt tun würden. Dann in der Bibliothek Projektziel fügen Sie die Datei in xib Kopie Abschnitt Datei zusammen mit .a-Datei. In Ihrem Hauptprojekt, in dem Sie die Bibliothek per Drag verwenden und die xib Datei fallen, wo .a-Datei für Bibliothek befindet.

Beim Verteilen Sie auch ein SDK schaffen könnte. JSON.framework tat dies in ihrem SVN, und ich dies erfolgreich repliziert. Sie können sehen, wie dies in http://hltypes.svn.sf.net/ der hltypes-ios.xcodeproj und die iOS-Ordner in dem Projekt ein.

In erster Linie müssen Sie auf „Installieren“ in die Build-Ordner, und dann müssen Sie den speziell formatierte SDKSettings.plist kopieren. Dann fügen Sie den Pfad zu dem SDK in „Weiteren SDKs“ -Liste in Anwendungsprojekt. Kehrseite des Verbund SDKs ist die Notwendigkeit Xcode 3.x neu zu starten, wenn der Mini-SDK aktualisiert wird, und Beharren des Xcode auf ein zusammengesetztes SDK von Apple Basis SDK und Ihrer Mini-SDK erstellt Konstruktion (was bedeutet, dass Sie ganz ein bisschen warten müssen) .

Anwendungsprojekt muss noch .xib und andere Ressourcen manuell hinzugefügt hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top