Wie erstelle ich das Cocoa Touch Framework für die i386- und x86_64-Architektur?

8

Nach dem Erstellen eines Cocoa Touch-Frameworks (Swift oder Object-C) und Hinzufügen zu einem anderen Projekt als "Embedded Binaries" erhalte ich folgende Fehlermeldung, wenn ich versuche,

zu erstellen %Vor%

Nach verschiedenen vorhandenen Antworten und erweiterten Untersuchungen habe ich i386 bereits zu den Architekturen Build-Einstellungen ...

hinzugefügt

Dies scheint jedoch keinen Effekt zu haben. Wenn ich mit

überprüfe %Vor%

Ich bekomme nur

%Vor%

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

(Ich verwende Xcode 6.2 + für iOS 8.2)

Einige neue Erkenntnisse

Mit einer Version dieses Build-Skripts kann ich die fehlenden Architekturen für die Swift-Version des Frameworks erstellen.

Wenn ich dieses Framework jedoch zu meiner App hinzufüge und Build erstelle, bekomme ich immer noch Fehler

%Vor%

Blick auf das endgültige Build-Ordner-Gebäude für den Simulator

%Vor%

Ich kann sehen, dass die Architekturen immer noch fehlen, obwohl sie Teil des Frameworks waren (wie gezeigt). Wie kann ich sicherstellen, dass beim Erstellen der App die richtigen Architekturversionen meines Frameworks enthalten sind?

Aktualisieren

Wenn ich mir alle Fehlermeldungen anschaue, sieht es so aus, als ob das Problem nicht darin besteht, dass die falschen Produkte / Archive erstellt werden, aber der Linker verwendet nicht die richtigen Pfade zu ihnen. Nicht sicher, wie richtig das ist.

    
Bernd 21.02.2015, 23:29
quelle

3 Antworten

31

Dies ist das gleiche Problem , dass ich hatte.

Scheint, dass dies ein Xcode-Fehler ist. Ich behandle ihn, indem ich ein Build-Skript hinzufüge. Es wird nur Ihre Bibliothek mit allen Architekturen kompilieren und lipo it auf fat binary image.

Beachten Sie auch

  

Blick auf das endgültige Build-Ordner-Gebäude für den Simulator

     

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

Sie suchen x86_64 und i386 Bilder im iphone Build-Ordner, sie sollten in Debug-iphonesimulator/TesterFrameworkSwift.framework/

sein

Außerdem gibt es ein Rekursionsproblem in Ihrem Skript, ich habe es korrigiert.

%Vor%

6) Hit "cmd + B" (Build Project)

7) Öffnen Sie das Produkt in Finder

8) Navigiere 1 Verzeichnis nach oben ("cmd + ↑") und du wirst "Release-universal" Verzeichnis sehen.

Es wird Ihre "fat/universal" -Bibliothek geben, Sie können loslegen!

Sie können es über

überprüfen %Vor%     
l0gg3r 02.03.2015 09:50
quelle
1

Ich stoße auf dasselbe Problem und zum Glück habe ich es gelöst.

Wenn Sie ein Framework mit Xcode erstellen und es mit dem iPhone 5 Simulator oder dem Simulator vor dem iPhone 5 (wie iPhone 4s oder iPhone 4) erstellen, erhalten Sie ein Framework mit i386-Architektur. Und wenn Sie es mit iPhone 5s Simulator oder dem Simulatro nach iPhone 5s bauen, erhalten Sie ein Framework mit x86_64 Architektur. Wenn Sie jedoch das Framework in Ihrem Projekt verwenden und die App auf einem Simulator ausführen möchten, muss das Framework sowohl die i386- als auch die x86_64-Architektur enthalten, andernfalls erhalten Sie einen Linker-Fehler. Sie müssen also den Befehl lipo-create verwenden, um zwei Frameworks zusammenzuführen. An diesem Punkt ist Ihr Framework einsatzbereit.

    
DaiPei 07.10.2016 02:31
quelle
-3

Aktive Architektur = & gt; NEIN Gültige Architektur = & gt; "armv7 armv7s arm64 i386 x86_64"

Verwenden Sie die obige Build-Einstellung, wenn Sie aggregieren !!! Ich arbeitete für mich für alle Architektur-Framework-Erstellung

    
Rakesh Sharma 14.04.2015 12:18
quelle