"Warnung: iPhone-Apps sollten eine armv6-Architektur enthalten", auch wenn die Build-Konfiguration festgelegt ist

332

Es ist schon eine Weile her, dass ich die Einstellungen für die Projekterstellung anpassen musste. Nach dem Upgrade auf ein aktuelles SDK habe ich Probleme beim Erstellen meiner Ad-hoc-Verteilungskonfiguration.

Build generiert diese Warnung und diesen Fehler:

Warnung: iPhone-Apps sollten eine armv6-Architektur enthalten (aktuelles ARCHS = "armv7")

iPhone / iPod Touch: In der ausführbaren Anwendungsdatei fehlt eine erforderliche Architektur. Es muss mindestens eine der folgenden Architekturen vorhanden sein: armv6 (-19033)

In meinem Projekt dachte ich jedoch, ich hätte die Dinge richtig eingestellt:

  • Architekturen sind: Standard (armv6 armv7)
  • Basis-SDK: Neuestes iOS (derzeit auf iOS 4.2 eingestellt)
  • Gültige Architekturen: armv6 armv7

Alt-Text

Ich habe alle Ziele gereinigt.

Ich freue mich über Tipps.

Nick
quelle
Meins war eine alte App, die ein Update erhalten hat und den gleichen Fehler auch für iOS Deployment Target <4.3 auslöst! Meine Lösung bestand also darin, alle Verweise auf armv6 zu entfernen und dies auf> = 4.3 zu setzen. Es funktionierte.
Henrik Erlandsson
Und gerade jetzt habe ich dasselbe für eine andere alte App versucht, die überarbeitet wurde und nicht funktioniert hat ... XCode 5-Problem, es scheint, dass die Build-Einstellungen falsch interpretiert wurden.
Henrik Erlandsson

Antworten:

418

Wenn Sie Xcode 4.2 oder höher verwenden, versuchen Sie Folgendes:

  1. Klicken Sie auf Ihren Projektnamen (in der linken Spalte), gefolgt vom Ziel:

    Geben Sie hier die Bildbeschreibung ein

  2. Klicken Sie auf die Registerkarte "Build Settings" (in der rechten Spalte):

    Geben Sie hier die Bildbeschreibung ein

  3. Klicken Sie unter "Architekturen" auf die Zeile "Release" oder "Distribution" und wählen Sie "Andere ...":

    Geben Sie hier die Bildbeschreibung ein

  4. Doppelklicken Sie im angezeigten Popover auf die markierte Zeile mit dem Namen '$ (ARCHS_STANDARD_32_BIT)' und ersetzen Sie sie durch Eingabe von 'armv6'. Fügen Sie dann eine neue Zeile mit der Plus-Schaltfläche unten links im Popover hinzu, geben Sie 'armv7' ein und klicken Sie auf Fertig:

    Geben Sie hier die Bildbeschreibung ein

Update: Sie sollten armv7s hinzufügen, um auch auf das iPhone 5 abzuzielen. (Und lassen Sie armv6 fallen, wenn Sie mit Xcode 4.5 oder höher bauen, das armv6 nicht mehr unterstützt.)

Das ist es. Sie sollten jetzt in der Lage sein, Fehler zu erstellen / zu archivieren.

Wenn es immer noch nicht funktioniert, lesen Sie diese Antwort von justinxreese , in der vorgeschlagen wird, Einträge für armv6 und armv7 unter "Erforderliche Gerätefunktionen" in Ihrer Datei info.plist hinzuzufügen.

Nick
quelle
3
Ja, es sieht so aus, als würde Apple sich von ARM6 entfernen. Dies scheint also ein notwendiger Schritt für Xcode 4.2 zu sein. Es ist seltsam, dass der Einreichungsprozess immer noch einen ARM6-Build erfordert, obwohl 4.2 jetzt öffentlich ist ...
Jasarien
7
Ich habe keine Verteilungszeile unter Architektur, stattdessen habe ich "Release" -Zeile.
Ich
2
@ Let'sSpotIt Fügen Sie einfach armv6 und armv7 zu Ihrer Release-Zeile hinzu. Das Projekt in meinen Screenshots wurde aus einer früheren Version von Xcode importiert, daher die verschiedenen Architekturnamen.
Nick
2
Danke Nick. Bei neuen Projekten, die in Xcode 4.2 erstellt wurden, muss möglicherweise die Datei info.plist geändert werden, um armv6-Geräte zu unterstützen. Siehe meine zusätzliche Antwort unten.
MattyG
1
@ Nick danke für den Tipp, und für mich musste ich das "Projekt" anstelle von "Ziel" auswählen. Die Auswahl aus den Build-Einstellungen "Ziel" hat bei mir nicht funktioniert. trotzdem nochmal danke für die hilfe.
Prasad De Zoysa
62

Wenn Sie "Nur aktive Architektur erstellen" deaktivieren, werden alle gültigen Architekturen erstellt.

Update : Dies gilt ab Xcode 4 nicht mehr. Befolgen Sie die Anweisungen von Nick für Xcode 4 und höher.

Brian
quelle
11
Sie können Ihre Erstellungszeiten beschleunigen, indem Sie für Debug-Builds auf YES und für Release-Builds auf Nein setzen.
Billy Gray
59

Ich hatte dieses Problem auch nach Befolgung der akzeptierten Antwort und stellte fest, dass Folgendes funktioniert:

Fügen Sie in Ihrer Info.plist einen Eintrag für Erforderliche Gerätefunktionen hinzu. Dies sollte ein Array sein und zwei Einträge haben.

  • Punkt 0: armv6
  • Punkt 1: armv7

Es wird so aussehen:

Erforderlicher Eintrag für Gerätefunktionen

justinxreese
quelle
Diese Lösung hat meine anderen Architekturwarnungen behoben, aber ich erhalte immer noch die erste, und ich habe auch "Nur aktive Architektur erstellen" auf "Nein" gesetzt
Dan F
Es wurde für mich behoben, da die vorherige Lösung nicht zutraf. Aus irgendeinem Grund wird armv6 unter meinen Einstellungen für die Build-Architektur nicht mehr
angezeigt
Dies zusammen mit Nicks Antwort oben hat es für mich behoben. +1
Saurabh Wadhwa
Sie sollten diese Option in den neuesten xCode-Versionen überhaupt entfernen, dann wird sie kompiliert. Wenn Sie beide einsetzen, müssen beide Architekturen in Ihrem Gerät gültig sein, was praktisch unmöglich ist
Artem
Zum Erstellen mit XCode 4.5+ müssen Sie armv6 von den erforderlichen Gerätefunktionen entfernen.
Pulkit Goyal
26

Zusätzlich zu Nicks Antwort zu Xcode 4.2 müssen Sie möglicherweise auch Ihre Datei info.plist überprüfen. Es scheint, als ob neue Projekte, die in Xcode 4.2 gestartet wurden, standardmäßig 'armv7' in den 'Erforderlichen Gerätefunktionen' angeben. Sie müssen dies entfernen, wenn Sie Geräte unterstützen möchten, auf denen armv6 ausgeführt wird (z. B. das iPhone 3G).

Geben Sie hier die Bildbeschreibung ein

Löschen Sie armv7 aus den 'Erforderlichen Gerätefunktionen' in IhrerProjectName-Info.plist

MattyG
quelle
21

Ein ios 6 Update

Änderungen in Xcode 4.5.x für ios 6

  1. Xcode 4.5.x (und höher) unterstützt das Generieren von armv6-Binärdateien nicht.
  2. Enthält jetzt Unterstützung für iPhone 5 / armv7s.
  3. Das mit Xcode 4.5.x oder höher unterstützte Mindestbereitstellungsziel ist iOS 4.3.
Animesh
quelle
6

Ich hatte auch dieses Problem. Ich habe gerade mein Bereitstellungsziel auf 4.3 festgelegt und nur die armv7-Architektur belassen, und es hat funktioniert. Zu diesem Zeitpunkt hat fast jeder 5, also ist 4,3 in Ordnung.

Tom Kincaid
quelle
3

Für mich funktioniert es nicht bei jeder Antwort. Aber ich versuche ZIELE> Architekturen> Debuggen und füge eine neue Zeile mit der Plus-Schaltfläche hinzu, tippe 'armv6' (ohne ') ein und klicke dann auf Fertig.

und schließlich CMD + B und dann mit der rechten Maustaste auf PrjectName.app (im Ordner "Produkte")> Im Finder öffnen> "PROJECT_NAME.APP" (in Debug-iphoneos) komprimieren> In AppStore hochladen

Geben Sie hier die Bildbeschreibung ein

Es ist meine Bildschirmeinstellung. Geben Sie hier die Bildbeschreibung ein

Wenn Sie ein Projekt enthalten haben, konfigurieren Sie bitte alles. Hoffe deine Hilfe.

mr.octobor
quelle
1
Ich musste außerdem armv6 für die Release-Architektur festlegen, bevor es funktionieren würde.
Meilen pro Stunde
3

Nachdem ich eine Mischung dieser Antworten ausprobiert hatte, stolperte ich schließlich darüber, dass es funktioniert. Ich bin gerade so sauer auf Apple. Nur eine weitere Stunde ließen sie mich verschwenden. Hier ist meine Konfiguration.

Geben Sie hier die Bildbeschreibung ein

Louie
quelle
2

Ich habe alle oben genannten Antworten ausprobiert, keine hat meine Frage gelöst. Also erstelle ich ein neues Projekt und verändere die Build-Einstellungen nacheinander. Nur "Alternative Berechtigungsdateien" ist unterschiedlich. Die fehlgeschlagene Projekterstellung hat den Wert armv7. Löschen Sie es und bereinigen Sie es>> Build-> Archiv. Gelingen! Hoffnung kann Ihre Frage lösen

mbo
quelle
2

Wow, ich aktualisiere / sende Apps ungefähr alle 6 Monate. Jedes Mal, wenn ich das mache, muss ich den "neuen" Weg lernen, es zu tun ...

Gleiche Probleme wie oben beschrieben, wenn iOS 5.1 und Xcode 4.3.2 ausgeführt werden

Danke für die Beiträge! Ich habe eine Weile damit verbracht, alle Projekteinstellungen auf armv6, armv7 zu aktualisieren, aber keine Freude. Wenn ich "Nur aktive Architektur erstellen" auf "Nein" setze, wird beim Erstellen beider Objekte im selben Verzeichnis ein Buildfehler angezeigt.

Glücklicherweise habe ich bemerkt, dass ihr stattdessen die Ziel-Build-Einstellungen geändert habt. Dies hat schließlich funktioniert (armv6, armv7 und die Einstellung "Nur aktive Architektur erstellen" unter den Ziel-Build-Einstellungen auf "Nein"). Als Haftungsausschluss hatte ich bereits in den Projekteinstellungen alle Architekturen auf armv6 und armv7 gesetzt.

Wie auch immer, danke für die Hilfe, Brent

Brent
quelle
2

Danach musste ich sicherstellen, dass diese Einstellungen sowohl in den Ziel- als auch in den Projekteinstellungen von xCode 4.3.2 geändert wurden und so eingestellt wurden, dass sie sowohl für armv6 als auch für armv7 erstellt werden, wo immer ich meine App einreichen konnte.

Aus Sicherheitsgründen habe ich xCode auch zwischen dem Vornehmen der Änderungen und dem Durchführen eines sauberen, erstellten Archivierungszyklus beendet.

pwbrewer
quelle
0

Ein ziemlich schmerzhaftes Problem für mich. Ich habe gerade eine Stunde lang versucht zu bauen und wieder aufzubauen - keine Freude. Am Ende musste ich das machen:

  1. Aktualisieren Sie das Basis-SDK auf den neuesten Stand (in meinem Fall iOS 5).
  2. Starten Sie xCode neu
  3. Reinigen und bauen
  4. Es funktionierte!

Ich denke, es ist ein Haufen Jargon über arm6, arm7, da es so aussah, als ob mein Projekt für beide gültig war, zumindest schienen die Einstellungen dies zu sagen. Ich vermute, dies ist eine zynische Art, uns mit den technischen Details zu bamboozeln, die wir nicht verwenden Ich verstehe nicht, also nehmen wir einfach die einfache Option und zielen auf das neueste iOS ab (gut für Apple, da mehr Leute auf dem neuesten Stand sind) ....

dijipiji
quelle
0

Hier ist Apples Dokumentation:

Technische Fragen und Antworten QA1760

Es heißt, es gibt zwei Dinge, die Sie richtig machen müssen:

  1. Fügen Sie armv6den Architektur-Build-Einstellungen hinzu
  2. Setzen Sie Build Active Architecture Only auf No.

Wenn Ihnen dies immer noch nicht hilft, überprüfen Sie noch einmal, ob Sie die Architektur-Build-Einstellungen für die richtige Build-Konfiguration wirklich ändern. Ich habe eine halbe Stunde damit verbracht, mit der falschen herumzuspielen und mich zu fragen, warum es nicht funktioniert hat ...

Wählen Sie Edit Scheme...im Menü Produkt die Option "Archivieren" in der linken Liste aus und überprüfen Sie die Build-Konfiguration. Ändern Sie den Wert, wenn er nicht Ihren Erwartungen entspricht.

Rolf Staflin
quelle
0

Hinweis; Ich musste diese Schritte sowohl für mein Basisprojekt als auch für die eingebettete PhoneGap .xcodeproj-Datei in meiner Anwendung ausführen.

Ja, ich binde PhoneGap ein. Sie werden viel zu häufig aktualisiert, und ich habe weniger als zwei Monate Zeit, um zu wissen, dass eine Funktion abgeschrieben wird.

James Perih
quelle
0

Versuchen Sie, Ihr Bereitstellungsziel auf einen höheren Wert als einen Armv6-Prozessor zu ändern. Die Einstellungen für xCode beziehen sich auf die Betriebssystemebene, zum Beispiel: iOS-Version # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Sie können dies auf der Registerkarte Build-Einstellungen oder der Registerkarte Zusammenfassung festlegen. Beginnen Sie im Projektnavigator oben links im Fenster mit allen darin aufgelisteten Dateien. Klicken Sie auf die oberste mit einem blauen Symbol.

(ii) Wenn Sie vorhaben, die programmierbare Shader-Line-Schaltung zu verwenden, auf die über die openGL ES 2.0-API zugegriffen und diese gesteuert wird, sollten Sie Ihre "Bereitstellungsversion" auf etwa 4,3 einstellen, was meines Erachtens nur auf Geräten wie dem verfügbar ist 3GS oder neuer. xCode meldet, dass iOS 4.2.5 oder höher benötigt wird, um armv7-Code auszuführen. Und wieder einmal hat dieser Prozessor, glaube ich, mit dem 3GS begonnen. * IOS 4.3 scheint vorerst die Wahl für mich zu sein.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices

Marc Clint Dion
quelle
0

Wenn sich xCode weiterhin über armv7 beschwert, stellen Sie sicher, dass Sie alle Verbindungsgeräte (insbesondere das iPhone 5 !!) trennen und versuchen Sie es erneut. Ich habe Stunden gebraucht, um diese kleine Information herauszufinden.

Refaelio
quelle
0

Mit Xcode 4.2 auf Snow Leopard habe ich die folgenden Einstellungen verwendet, um eine App zu erstellen, die sowohl auf armv6 (Iphone 3G und niedriger) als auch auf armv7 (alles neuere als 3G einschließlich 3GS) funktioniert.

Architekturen: armv6 und armv7 (entfernt $ (ARCHS_STANDARD_32_BIT))
erstellen nur eine aktive Architektur: keine
erforderlichen Gerätefunktionen: armv6

Setzen Sie armv7 nicht in die erforderlichen Gerätefunktionen ein, wenn die App auch auf 3G und niedriger ausgeführt werden soll.

Noromamai
quelle
1
Es ist das einzige, was für mich funktioniert hat. Testen auf iPhone4, iPhone3G, iPad1, iPad2. Lesen Sie, dass ich armv6 UND armv7 in die erforderlichen Gerätefunktionen einbauen musste, aber sobald ich armv7 einbaute, würde die App nicht auf das iphone3g hochladen / laufen
noromamai
Wenn ich den armv7-Eintrag in "Erforderliche Gerätefunktionen" belasse, verbietet mir Xcode, auf dem iPhone 3G zu laufen.
TinsukE