Beim Erstellen meiner iPhone-Anwendung wird folgende Fehlermeldung angezeigt:
ld: Warnung: In /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit fehlt die erforderliche Architektur i386 in der Datei
Dies gilt für alle Frameworks in meiner App. Es ist sehr seltsam, da dies nicht früher geschah.
iphone
cocoa-touch
Gabe Shahbazian
quelle
quelle
Antworten:
Dies geschieht, wenn Sie Ihrem Projekt ein Framework hinzufügen und das Framework unbeabsichtigt in Ihr Projektverzeichnis kopieren.
Die Lösung besteht darin, Ihr Projektverzeichnis (in dem Sie Ihr Projekt auf der Festplatte speichern) auf iPhone SDK * .Framework-Dateien zu überprüfen und diese zu löschen.
Das Projekt wird danach gut gebaut.
quelle
Ich hatte das gleiche Problem und die Lösung erwies sich als einfache Lösung. Sichern Sie dann project.pbxproj (in Ihrem Projektdateibündel) in TextMate oder TextEdit und suchen Sie nach dem Abschnitt "/ * XCBuildConfiguration-Abschnitt starten * /". Suchen Sie nach einem Schlüssel mit dem Namen FRAMEWORK_SEARCH_PATHS und löschen Sie ihn und seinen Inhalt (einmal pro Build-Konfiguration, also habe ich ihn an zwei Stellen entfernt). Hier ist ein Beispiel für das, was ich gelöscht habe:
Mein Projekt wurde jetzt sowohl für das iPhone-Gerät als auch für den iPhoneSimulator erstellt.
quelle
Was hier passiert ist, ist, dass Xcode auf mysteriöse Weise einen Eintrag "Framework Search Paths" hinzugefügt hat, der auf ein bestimmtes iPhone-Geräte-SDK verweist. Zum Beispiel wurde meine kürzlich auf Folgendes eingestellt:
Dies führt dazu, dass der Compiler Frameworks mit der falschen Architektur findet. Durch Entfernen von Werten unter dem Schlüssel "Framework-Suchpfade" in den Build-Einstellungen Ihres Ziels wird das Problem behoben.
quelle
Ich wollte das nur in XCode erwähnen, wenn Sie zu "Projekteinstellungen bearbeiten" gehen und "Suchpfade" suchen. Es gibt ein Feld für "Framework-Suchpfade". Durch das Aktualisieren sollte das Problem behoben werden, ohne dass die Projektdatei gehackt werden muss!
Prost!
Jesse
quelle
Stellen Sie sicher, dass Sie das Framework beim Hinzufügen nicht in Ihr Projekt kopiert haben. Wenn Sie es kopiert haben, können die ursprünglichen Pfade nicht gefunden werden. Um dieses Problem zu beheben. Löschen Sie das AVFoundation-Framework aus Ihrem Framework-Ordner in Ihrem Projekt und fügen Sie es erneut hinzu. Stellen Sie jedoch diesmal sicher, dass die Kopierprüfung nicht markiert ist.
Das hat es für mich behoben!
quelle
quelle
Wenn Ihre App auf dem Gerät ausgeführt werden soll, stellen Sie sicher, dass Sie nicht versuchen, sie auf dem Simulator auszuführen. Mag offensichtlich klingen, aber trotzdem prüfen.
quelle
Obwohl es möglich ist, dass etwas gelöscht wurde, habe ich die Erfahrung gemacht, dass etwas in der Projektdatei durcheinander geraten ist. Ich muss noch genau sagen, was dieses "Etwas" ist. Ich hatte ähnliche Probleme, wenn die SDK-Installation in Ordnung ist. Es gibt mehrere Möglichkeiten.
Fügen Sie zunächst alle Ihre Dateien zu einem neuen Projekt hinzu. Dies scheint normalerweise zu funktionieren. Eine Art Schmerz.
Zweitens können Sie in XCode / Get Info / Build / Library Search Paths mit der rechten Maustaste auf das Projekt klicken. Fügen Sie neue Pfade hinzu, die /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib ähneln. Fügen Sie für jede Version (2.2.1 usw.) und Plattform (Simulator oder iPhoneOS) geeignete Versionen dieser Zeichenfolge hinzu. Führen Sie eine ähnliche Aktion für Framework-Suchpfade aus, wenn Frameworks Ihr Problem sind.
Drittens, was mehr Arbeit, aber zuverlässiger ist, ist das Öffnen von project.pbxproj in MyProject.xcodeproj (Textmate ist dafür gut geeignet). Suchen Sie nach "/ * Begin XCBuildConfiguration section * /", dann nach "LIBRARY_SEARCH_PATHS" und "FRAMEWORK_SEARCH_PATHS". Fügen Sie die Pfade entsprechend hinzu oder ändern Sie sie, und speichern Sie die Datei.
Auf jeden Fall ein Schmerz im Hintern, und ich würde sicher gerne die Ursache herausfinden, weil ich das schon ein paar Mal hatte. Das Projekt läuft gut, dann einfach hoch und weigert sich, dies aus einem scheinbar kleinen Grund zu tun.
quelle
"Projekteinstellungen bearbeiten" und "Suchpfade" suchen Es gibt ein Feld für "Framework-Suchpfade". alles löschen!!
quelle
Das ist mir auch hier passiert. Dank eines großartigen Partners haben wir die Antwort gefunden. Ihr Xcode zeigt möglicherweise auf den Simulator. Ändern Sie ihn stattdessen auf ein iOS-Gerät.
quelle
Führen Sie den Befehl file auf dem Framework vom Terminal aus:
Sie sollten eine Nachricht erhalten, in der Sie darüber informiert werden, mit welchen Architekturen die UIKit-Binärdatei kompatibel ist. Wenn "i386" nicht aufgelistet ist, haben Sie es irgendwie geschafft, die i386-Version von UIKit zu entfernen, was bedeutet, dass Sie nicht für den Simulator erstellen können. Um dies zu beheben, müssen Sie erneut installieren das SDK.
Wenn Sie einen anderen Fehler erhalten, können Sie hoffentlich herausfinden, wo das eigentliche Problem liegt.
quelle
Ich möchte Sie nur wissen lassen, dass ich in meinem Fall das gleiche Problem hatte und feststellte, dass ich einen älteren Xcode-Ordner namens Xcode3.1.3 hatte. Ich habe ihn einfach umbenannt, weil es eine ältere Version war und das hat die Magie für mich getan.
quelle
Überprüfen Sie die Suchpfade Ihrer Bibliothek in Ihren Zieleinstellungen. Manchmal werden dort doofe Bibliotheken eingegeben, und dies führt zu einem ähnlichen Fehler.
Sie können alle Einträge in diesem Abschnitt entfernen.
quelle
Ich hatte gerade etwas anderes erlebt, weil ich an meiner eigenen Bibliothek (WM_GSRecognizerLib) arbeite, aber der Fehler ist der gleiche.
Was würde passieren: Aufgrund einiger Updates stammte der Pfad für die einzuschließende Bibliothek (.a) aus dem Ordner "Debug-iphoneos" (wo er generiert wird). Das Kompilieren für generische iOS-Geräte funktionierte einwandfrei, jedoch nicht für den Simulator. Sie beschwerten sich über die fehlende i386-Architektur.
Was ich für dieses Problem getan habe, ist, auch die Binärdateien aus dem Ordner "Debug-iphonesimulator" einzuschließen.
Dies kann für dieses Thema hilfreich sein, da die Erklärung hier lautet: Geräte benötigen Binärdateien für arm64 / armv7 / armv7s, während Simulator i386 benötigt.
quelle
Meine Lösung bestand darin, das Simulator-Ziel-Debugging auf JA zu setzen. Schauen Sie sich einfach den Git-Status an, um zu sehen, dass die neue Zeile nur in .project als Architektur hinzugefügt wurde. Wenn Sie dies nicht festlegen, wird der Build für alle Architekturen ausgeführt und zeigt einige fehlende Architekturen wie i386 oder andere an. HINWEIS: Das Hauptproblem besteht offensichtlich darin, ein Framework zu verwenden, das eine bestimmte Architektur implementiert.
quelle
Ich habe auch den gleichen Fehler bei der Verwendung von xcode Version 4.0.2 erhalten. Ich habe also die xcode-Projektdatei ausgewählt und aus der Option "Ziel" die App meines Projekts angezeigt. Ich habe darauf geklickt und bin zum Build gegangen Einstellungsoption.
In der Suchoption habe ich den Framework-Suchpfad eingegeben und alle Einstellungen gelöscht und dann auf die Schaltfläche zum Erstellen geklickt. Das hat bei mir ganz gut funktioniert.
Danke und Grüße
quelle