Antworten:
Ich habe heute gerade etwas erstellt, das ein Bereitstellungsziel von iOS 4.0 spezifiziert. Da nur armv7 in Architectures angegeben ist, warnte mich Xcode, dass ich armv6 in Architectures einbinden muss, um alles unter iOS4.2 zu unterstützen. Bearbeiten Sie einfach dieses Feld, klicken Sie auf die Schaltfläche "+", wenn der Dialog angezeigt wird, und geben Sie das Literal "armv6" ein.
In meinem Fall möchten wir, dass unsere App unter iOS4 und iOS5 funktioniert. Wir mussten einige Änderungen vornehmen, damit es unter iOS5 korrekt funktioniert, aber all diese Änderungen wurden mit iOS4-freundlichen Codeänderungen vorgenommen.
Wir haben auch einige iOS5-spezifische Funktionen hinzugefügt, damit die App unter iOS4 ohne Absturz ausgeführt werden kann. Insbesondere haben wir die iOS5-Funktionen getestet, bevor wir versucht haben, sie zu verwenden, und nur iOS5-Bibliotheken als optional verknüpft.
Die Unterstützung von iPhone3G in einer iOS5-Welt könnte also genauso gut bedeuten: "Wir möchten, dass unsere App auf iOS4 und höher ausgeführt wird (unabhängig von der Verwendung von iOS5-Funktionen)", anstatt "Wir möchten sicherstellen, dass unsere App auf einem älteren Gerät mit iOS5 ausgeführt wird." ". Hier gibt es einen Unterschied; Denk darüber nach. :-)
Wie auch immer, das Hinzufügen von Armv6-Unterstützung ist sehr einfach. Und ich denke, der Punkt ist folgender: Irgendwann, wenn es keine armv6-Geräte mehr gibt, über die man sich Sorgen machen muss (aus welchem Grund auch immer), müssen Sie nicht mehr dafür bauen. Nach Ansicht von Apple sollte jeder so schnell wie möglich auf die neueste Hardware aktualisieren. In dieser Welt müssen die Tools nicht standardmäßig auf etwas anderes als das Neueste und Beste eingestellt werden. :-) Glücklicherweise (oder auch nicht) leben wir Entwickler in der realen Welt und erkennen, dass Sie ältere Dinge für eine Weile unterstützen müssen. Und ich denke, das Xcode-Entwicklerteam weiß das auch, weshalb Sie die Unterstützung für armv6 ganz einfach wieder hinzufügen können.
Die einfache Antwort ist, dass Sie die aktuellen Einstellungen von "Standard (armv7) - $ (ARCHS_STANDARD_32_BIT)" so ändern müssen, dass sie nur "armv6" und "armv7" sind. Siehe das Bild unten. Sie müssen die Zeile mit den vorherigen Einstellungen löschen, damit sie funktioniert.
Stellen Sie außerdem sicher, dass Sie dies in Projekt UND Ziele festlegen. Es kostet mich eine Stunde, um das herauszufinden. hatte es für den einen eingestellt, aber nicht für den anderen. hoffe das hilft. GLTA
Ich denke, es gibt einen Grund, warum Apple armv6 von der Standardeinstellung gestrichen hat.
Ich habe armv7 / armv6 mit iOS5 SDK kompiliert, aber der armv6-Compiler hat im Release-Modus falschen Code erzeugt. Nachdem ich stundenlang eine Problemumgehung gefunden habe (ich versuche llvm oder gcc mit verschiedenen Optimierungsstufen), gebe ich auf.
Daher gehe ich zurück zu iOS SDK 4.x, solange ich ältere armv6-Geräte unterstütze.
Beispiel für Code:
// myView center=(160, 100)
CGPoint p=myView.center;
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100)
p.y+=100;
// now p =(200,200) (what the heck?)
Möglicherweise habe ich eine Speicherbeschädigung, aber auf dem armv7-Compiler und auf iOSSDK <5.0 verhält es sich wie erwartet.
Freundliche Grüße
Ich bin mir noch nicht sicher, ob dies tatsächlich eine Lösung ist, aber ich habe festgestellt, dass das Ersetzen der definierten Zeichenfolge in "Architekturen", die $ (ARCHS_STANDARD_32_BIT) war, durch "armv6 armv7" es mir ermöglichte, mit iOS5 als Basis und iOS4 als Bereitstellung zu kompilieren Ziel und Validierung bestehen.
Ich verwende keine exklusiven IOS5-Bibliotheken oder -Aufrufe, beabsichtige dies jedoch in meiner nächsten Version.
Ich musste $ (ARCHS_STANDARD_32_BIT) nicht durch nur armv7 ersetzen, damit die App kompiliert und in den App Store hochgeladen werden konnte.
Wie von MarkGranoff vorgeschlagen, habe ich armv6 einfach als einfachen Text hinzugefügt, indem ich auf Plus geklickt und es einfach in Zeile zwei eingegeben habe.