Wie Baue Cocoa Touch Framework für die i386-und x86_64-Architektur?

Nach dem Bau einer Cocoa Touch framework (Swift-oder Objekt-C) und die Zugabe zu einem anderen Projekt als "Embedded Binaries" bekomme ich die folgende Fehlermeldung, wenn ich versuche,

missing required architecture i386
...
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Folgenden werden verschiedene bereits vorhandene Antworten und erweiterte Forschung, die ich bereits Hinzugefügt i386 der Architekturen build-Einstellungen ...

Wie Baue Cocoa Touch Framework für die i386-und x86_64-Architektur?

Allerdings scheint dies nicht, um eine Wirkung zu erzielen. Wenn ich mit

lipo -info TesterFrameworkObjC

Bekomme ich nur

Architectures in the fat file: TesterFrameworkObjC are: armv7 arm64

... sollte das nicht i386 (und x86_64) erscheinen auch hier? Was bin ich?

(Ich bin mit Xcode 6.2 + Gebäude für iOS-8.2)


Einige neue Erkenntnisse

Verwendung einer version dieser build-Skript ich in der Lage bin zu bauen, die fehlenden Architekturen für die schnelle version des Frameworks.

Wie Baue Cocoa Touch Framework für die i386-und x86_64-Architektur?

Aber wenn ich das framework auf meine app und bauen bekomme ich noch Fehler

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$__TtC20TesterFrameworkSwift18TestFrameworkSwift", referenced from:
  objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64

Blick auf das Letzte build Ordner Gebäude für den simulator

Build/Products/Debug-iphoneos/TesterFrameworkSwift.framework/

Kann ich sehen, dass die Architekturen, die noch fehlen, obwohl Sie Teil des Rahmens (wie gezeigt). Wie kann ich sicherstellen, dass alle die richtige Architektur baut meiner framework enthalten sind, beim erstellen der app?


Update

Blick auf all die Fehlermeldungen bei mir sieht das Problem nicht eigentlich, um die falschen Produkte/archictures gebaut, sondern einen Schritt später gibt es die Linker nicht mit dem richtigen Wege. Nicht sicher, wie Sie Sie korrigieren.

  • Nein, ich benutze nur Foundation. Und ich habe nur eine Funktion zum testen.
  • Haben Sie Ihre Rahmen mit Simulator oder iDevice. Wenn Sie bauen mit iDevice, schafft es den Rahmen für die Geräte-Architektur: armv7, armv7s, arm64. Wenn Sie bauen für den simulator von XCode erstellt-framework i386 & x86_86 (simulator 64bits). Sie müssen Gruppe diese 2 Bibliotheken in ein universal-Bibliothek, um eine vollständige Architektur-Bibliothek.
  • Werfen Sie einen Blick auf diese Artikel, Sie werden den Weg finden, zu erstellen, die Universelle framework: raywenderlich.com/41377/...
  • Ich habe versucht, beide Gebäude mit einem ausgewählten Simulator oder dem Gerät. Der integrierte Rahmen enthält nie i386/x86 ... also ich bin auch nicht an dem Punkt, wo ich erstellen Sie eine universal binary.
  • auch ich habe versucht, die Artikel und das Skript, das Sie miteinander verknüpft. Es hat nicht funktioniert ... nicht sicher, ob es ist, weil es zu Statischen Rahmenbedingungen, die nicht ist, was ich Baue.
  • In der Tat, Rahmen ist nur ein spezieller Ordner, der enthält eine statische Bibliothek. Versuchen Sie zuerst bauen Ihre Rahmen für den Simulator dann überprüfen, ob die framework-Architektur i386 & x86_64. Dann finden Sie weitere Artikel zum erstellen von universellen Rahmen. Beispiel: spin.atomicobject.com/2011/12/13/...
  • In der Tat, wenn ich erste "saubere build-Ordner" (name.Rahmen wird rot) Gebäude für den Simulator nicht zu schaffen mit dem Produkt (- Namen.Rahmen bleibt rot). Nur Gebäude für das Gerät legt den Namen.Rahmen (nicht einschließlich die i386-und x86_64-Versionen).
  • Ich habe diesen link, um ein universelles framework: gist.github.com/cromandini/1a9c4aeab27ca84f5d79
  • Haben Sie vielleicht ein problem mit Gebäude für den simulator Ziel. Werfen Sie einen Blick auf XCode-build-log, um zu überprüfen, dass alles ok ist.
  • Danke, das ist gut. Mit dem script, das ich in der Lage bin zu bauen, die fehlenden Architekturen des Frameworks. Jedoch beim erstellen der app bekomme ich noch Fehler wie "Undefined symbols for architecture x86_64:" mit Blick auf die "Build/Products/Debug-iphoneos/TesterFrameworkSwift.Rahmen/" ich kann sehen, dass die x86_64 bauen, Architektur ist nicht enthalten in dieser letzten Etappe.
  • Das scheint wie ein ziemlich schwerer bug in XCode. Ich habe immer noch das problem mit XCode 6.3 und kann einfach nicht bauen einen Rahmen, sowohl für den simulator und Geräte. @Bernd, hast du eigentlich das Problem lösen irgendwie?

InformationsquelleAutor Bernd | 2015-02-21
Schreibe einen Kommentar