Übermittlung der iOS-App: Fehlende 64-Bit-Unterstützung


91

Ich habe gestern eine App zur Überprüfung gesendet, ohne Probleme. Dann wurde mir klar, dass ich eine kleine Korrektur zu erledigen hatte (Ändern der maximalen Zoomstufe einer Karte von 19 auf 18, sonst nichts), also entfernte ich die Binärdatei aus iTunes Connect und versuchte, sie erneut einzureichen.

Jetzt habe ich diese Warnung:

warning_xcode

Ich verstehe nicht warum, da meine Architekturen sind:

  • Architekturen: armv7
  • gültige Architekturen: armv6, armv7, armv7s, arm64

Die App läuft gut im Simulator. Wenn ich versuche, die in der Warnung empfohlenen Standardarchitekturen (armv7, arm64) zu verwenden, wird die App nicht erstellt und ich erhalte:

  • Undefinierte Symbole für die Architektur x86_64
  • ld: Symbol (e) für Architektur x86_64 nicht gefunden

Ich verwende die lib route-me und stelle die gleichen Architektureinstellungen ein.


Auch wir haben dieses Problem. :(
Azik Abdullah

Auch erst seit gestern?
Tim Autin

1) Versuchen Sie, die DerivedData für Xcode zu löschen, nachdem Sie dies geändert haben. 2) Vielleicht verwenden Sie eine ältere externe API, SDK, Framework usw.
TonyMkenu

@ Tim Hast du es geschafft, das zu beheben? Kannst du bitte eine Lösung dafür posten?
user2056563

Hallo, tut mir leid, ich habe die Lösung nicht gefunden und arbeite nicht mehr an diesem Projekt. Im Moment ist es nur eine Warnung, daher konnte ich die App einreichen.
Tim Autin

Antworten:


106

Verwenden Sie " Standard architectures" wie folgt:

  • Architektur: "Standardarchitekturen" arm7, arm64
  • Gültige Architekturen: " arm64 ", armv7 ...
  • Nur aktive Architektur erstellen - NEIN (speziell ... wenn Ihr angeschlossenes Gerät nicht arm64-kompatibel ist)

so was:

Geben Sie hier die Bildbeschreibung ein

  • Darüber hinaus ist bekannt, dass das Trennen von iPhones und iPads vom Mac hilfreich ist, insbesondere wenn es sich um 32-Bit-Versionen handelt.

2
Vielen Dank für Ihre Antwort, aber wie in meiner Frage angegeben, habe ich das bereits versucht, und das Projekt wird nicht mit diesen Einstellungen kompiliert: /
Tim Autin

3
@ Tim, ja ich hatte auch armv7 and arm64in Architekten. Beim Überprüfen der App auf Übermittlung tritt jedoch eine fehlende 64-Bit-Supportwarnung auf.
Azik Abdullah

@NAZIK hast du arm64 in beiden Zeilen (Architekturen und gültige Architekturen)? Ich hatte den gleichen Fehler und dies war die Lösung
TonyMkenu

@ Tim versuchen, Ihre DerivedData zu bereinigen und Ihr aktuelles externes Framework oder SDK zu überprüfen, ob sie 64-Bit-Unterstützung haben
TonyMkenu

3
Stellen Sie außerdem sicher, dass Ihr Gerät NICHT verbunden ist, wenn Sie den endgültigen Build archivieren. Siehe @powertoold Antwort unten ( stackoverflow.com/a/26848865/1715004 )
Filipe Borges

68

Stellen Sie nach Bestätigung der korrekten Architekturen sicher, dass Ihr Gerät NICHT mit Ihrem Computer verbunden ist, wenn Sie den endgültigen Build archivieren, der an den App Store gesendet werden soll.

Der Grund für diese Warnung ist, dass das von Ihnen angeschlossene GERÄT wahrscheinlich nicht mit arm64 kompatibel ist.


4
Hut ab! : D Sie haben meine Zeit gespart
Vaibhav Limbani

1
Große Hilfe!! Das hat mir viel Zeit gespart. Guter Tipp zum Aktualisieren alter Apps.
Harry

Ich glaube, Sie können Ihre Nicht-64-Bit-Geräte in Verbindung halten, wenn Sie die Build-Einstellung Build Active Architecture Onlyauf ändern No. Dadurch wird xcode gezwungen, die 64-Bit-Binärdatei zu erstellen, unabhängig davon, welches Gerät angeschlossen ist.
Jxmallett

3
Stellen Sie zusätzlich zu der Antwort von @jxmallett sicher, dass Ihr Schemakonfigurationsarchiv auf Release eingestellt ist, in dem das auf gesetzt Build Active Architectureist No. Archivschema
festlegen

1
Zu Ihrer Information: Ich musste mein Gerät vom Stromnetz trennen, zum Simulator wechseln und dann wieder zum "iOS-Gerät" wechseln, damit dies funktioniert.
Nwkeeley

37

Wie Tony schrieb, ist es wichtig, diese Einstellungen in beiden Zeilen zu haben. Da mein (und natürlich Ihr) Projekt noch erstellt wurde, bevor arm64 zum Standard hinzugefügt wurde, wird es in "Gültige Architekturen" nicht berücksichtigt, selbst wenn es als Standard angezeigt wird .

Was ich getan habe:

  • Ich ging zur Projektkonfiguration (vs. Zielkonfiguration)
  • Typ "arm64" in den gültigen Architekturen (wird automatisch in Zielen und Schemas angezeigt

Nach dem Reinigen / Erstellen erhalte ich sogar einige Warnungen vor einer nicht ordnungsgemäßen Konvertierung von float in CGFloat usw., sodass die Einstellungen offensichtlich zutreffen.

Die Validierungswarnung ist ebenfalls verschwunden!

Geben Sie hier die Bildbeschreibung ein


1
> spiegelt sich nicht in "Gültige Architekturen" wider, auch wenn es als Standard angezeigt wird. Dies war der Punkt für mich. Vielen Dank!
Romain

1
Für den Fall, dass es anderen hilft, musste ich sowohl in Project als auch in Target wechseln, um zur Arbeit zu kommen
djburdick

@djburdick Danke. Das hat bei mir funktioniert, als sonst nichts.
Dave Chambers

27

Trennen Sie Ihr physisches Gerät vom Mac. Wählen Sie in XCode auf Geräteliste iOS-Gerät und erstellen Sie das Archiv erneut. Es hat bei mir funktioniert.


5

Heute löse ich dieses Problem mit den folgenden Schritten:

Gebäudeeinstellungen:

Architekturen: Standardarchitekturen (arm7, arm64) - $ (ARCH_STANDARD)

Gültige Architekturen: armv7 armv7s arm64

  1. Bereinigen und erstellen Sie Ihre App mit angeschlossenem iPhone
  2. Trennen Sie Ihr iPhone vom Computer und überprüfen Sie die obere Leiste, wenn sich "iOS-Gerät" befindet.
  3. Archiv
  4. Validieren und senden

@ Timuçin. Entschuldigung für meine späte Antwort, Sie haben Recht: armv7 armv7s arm64.
Leonel Folmer


2

Okay, das war verrückt. Ich habe jede einzelne Antwort ausprobiert . Aber es hat nur funktioniert, als ich arm64vor armv7und armv7sin Valid Architectures platziert habe.

PS: xcode version : 7.2


1
Jep. Erst dann und erst nach dem Anschließen eines Geräts wurde das tatsächliche Fehlerprotokoll angezeigt. Dann tauchten einige Codezeilen auf, die veraltet sind und eine (rote) Korrektur erfordern, und einige Probleme mit der RSA-Bibliothek.
Maxweber

1

Ich habe das Problem durch Ändern gelöst,

Architekturen: arm7, arm64

Gültige Architektur: arm7, arm64

Nur aktive Architektur erstellen: Ja


1

Ich habe Erfolg per Konfiguration als Bild eingereicht: Geben Sie hier die Bildbeschreibung ein

(Archiviert mit echtem Gerät)


1
Sollte den Release-Modus auf no setzen
ZYiOS

1

Ich habe jede Warnung losgeworden. Ging alles immer und immer wieder durch. Habe hier oben die Antwort mit einem Wort gefunden.

"Nur aktive Architektur erstellen - NEIN (speziell ... wenn Ihr angeschlossenes Gerät nicht arm64-kompatibel ist)"

Mein iPad ist nicht 64 Bit. Geben Sie NEIN für Build Active Architecture ein und meine Einreichung hat funktioniert!


0

Ändern Sie Ihr iOS-Entwicklungsziel in mindestens 5.1.1 oder löschen Sie alternativ die Standardeinstellungen für Architekturen und wenden Sie sie erneut an. Möglicherweise wurde eine Warnung angezeigt, dass arm64 nicht mit Ihrem Build-Ziel kompatibel ist. Überprüfen Sie auf der Übersichtsseite sowohl die Build- als auch die Zieleinstellungen für das Bereitstellungsziel. In meinem Fall war das Ziel 6.0, aber das Projekt war 5.0.

Überprüfen Sie außerdem "Gültige Architekturen" sowohl in Ihrem Ziel als auch in Ihrem Projekt. Ich hatte die richtigen Einstellungen für das Projekt, aber nicht für das Ziel. Danach hat es bei mir funktioniert.

Wechseln Sie auf der Übersichtsseite in der oberen linken Ecke des Felds zwischen Projekt / Ziel.


Du meinst wirklich 5.1.1? 5.1 ist nicht aktuell genug?
Dirk

Es war eine lange Zeit. Ich kenne oder erinnere mich nicht an die Logik dazu. Machen Sie einfach die Schritte und etwas kann an seinen richtigen Platz zurückkehren. Spielen Sie mit den Architekturen und allen genannten Seiten.
user1122069

0

Aktivieren Sie die Option Aktive Architektur erstellen. Stellen Sie es auf NEIN. Für mich geht das.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.