Ich habe ein Upgrade von Xcode durchgeführt und bei Verwendung externer statischer Bibliotheken erhalte ich die folgende Meldung:
ld: file is universal (3 slices), enthält aber nicht a(n) armv7s slice:/file/location für architektur armv7s clang: error: linker befehl mit exit code 1 fehlgeschlagen Aufruf)
Gibt es eine Möglichkeit, dies zu umgehen und der Bibliothek Unterstützung hinzuzufügen, wenn der Entwickler der Bibliothek ihre Bibliothek noch nicht aktualisiert hat?
Wenn Sie die Unterstützung für eine Architektur entfernen möchten, z. B. ARMv7-s in Ihrem Fall, verwenden Sie menu Project - > Build Settings -> entfernen Sie die Architektur aus "gültigen Architekturen".
Sie können dies als vorübergehende Lösung verwenden, bis die Bibliothek aktualisiert wurde. Sie müssen die Architektur aus Ihrem Hauptprojekt entfernen, nicht aus der Bibliothek.
Alternativ können Sie das Flag für die Option "Nur aktive Architektur erstellen" Ihrer Debug-Konfiguration auf "Ja" setzen. Belassen Sie die Option "Nur aktive Architektur erstellen" in der Release-Konfiguration auf "Nein", damit Sie vor dem Release daran erinnert werden, dass Sie Bibliotheken von Drittanbietern, die Sie verwenden, aktualisieren sollten.
Ich habe in den Build-Einstellungen des Ziels einfach zwischen "Nur aktive Architektur erstellen" und "Ja" umgeschaltet und es ist jetzt OK!
Versuchen Sie, armv7s aus der "gültigen Architektur" des Projekts zu entfernen, um dieses Problem für iOS 5.1-Telefone zu beheben
Ich habe gerade ein Update gepostet hier das auch in diesem Fall zutrifft - im Grunde genommen führen Sie ein hexadezimales Suchen und Ersetzen in Ihrer externen Bibliothek durch, um den Eindruck zu erwecken, dass es sich um ARMv7s-Code handelt. Sie sollten in der Lage sein, lipo
zu verwenden, um es in 3 statische Bibliotheken aufzuteilen, die ARMv7-Bibliothek zu duplizieren/zu ändern und dann lipo
erneut zu verwenden, um eine neue Bibliothek für alle 4 Architekturen zusammenzustellen.
Flurry-Unterstützung für iPhone 5 (ARMv7s) Wie ich gestern bereits erwähnt habe, hat Flurry unmittelbar nach der Ankündigung am Mittwoch damit begonnen, an einer Version des iOS SDK zu arbeiten, um den ARMv7s-Prozessor im neuen iPhone 5 zu unterstützen.
Ich freue mich, Ihnen mitteilen zu können, dass die Arbeit abgeschlossen ist und das SDK jetzt auf der Website verfügbar ist.
verwenden Sie das Menü Projekt -> Einstellungen erstellen ->
entfernen Sie dann armv7s von den "gültigen Architekturen". Wenn standard ausgewählt wurde, löschen Sie dies und fügen Sie armv7 hinzu.
Falls dies jemandem passiert. Ich habe meine eigene Bibliothek erstellt, um sie mit einem Code von Drittanbietern zu verwenden. Während ich es für die Auslieferung baute, ließ ich versehentlich mein iPhone 4S eingesteckt, und so baute Xcode meine Bibliothek nur für die eingesteckte Architektur, anstatt die Projekteinstellungen zu befolgen. Entfernen Sie alle angeschlossenen Geräte, und erstellen Sie die Bibliothek neu. Verknüpfen Sie sie, und alles sollte in Ordnung sein.
Ich hoffe es hilft.
In meinem Fall habe ich eine Verknüpfung zu einer Drittanbieter-Bibliothek hergestellt, die etwas älter war (entwickelt für iOS 6 unter XCode 5/iOS 7). Daher musste ich die Bibliothek eines Drittanbieters aktualisieren, eine Bereinigung und Erstellung durchführen, und sie wird jetzt erfolgreich erstellt.