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
Ich habe alle Ziele gereinigt.
Ich freue mich über Tipps.
Antworten:
Wenn Sie Xcode 4.2 oder höher verwenden, versuchen Sie Folgendes:
Klicken Sie auf Ihren Projektnamen (in der linken Spalte), gefolgt vom Ziel:
Klicken Sie auf die Registerkarte "Build Settings" (in der rechten Spalte):
Klicken Sie unter "Architekturen" auf die Zeile "Release" oder "Distribution" und wählen Sie "Andere ...":
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:
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.
quelle
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.
quelle
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.
Es wird so aussehen:
quelle
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).
Löschen Sie armv7 aus den 'Erforderlichen Gerätefunktionen' in IhrerProjectName-Info.plist
quelle
Ein ios 6 Update
Änderungen in Xcode 4.5.x für ios 6
quelle
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.
quelle
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
Es ist meine Bildschirmeinstellung.
Wenn Sie ein Projekt enthalten haben, konfigurieren Sie bitte alles. Hoffe deine Hilfe.
quelle
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.
quelle
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
quelle
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
quelle
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.
quelle
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:
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) ....
quelle
Hier ist Apples Dokumentation:
Technische Fragen und Antworten QA1760
Es heißt, es gibt zwei Dinge, die Sie richtig machen müssen:
armv6
den Architektur-Build-Einstellungen hinzuNo
.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.quelle
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.
quelle
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
quelle
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.
quelle
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.
Setzen Sie armv7 nicht in die erforderlichen Gerätefunktionen ein, wenn die App auch auf 3G und niedriger ausgeführt werden soll.
quelle