Was bedeutet die Warnung "Architektur arm64 auf x86_64 zuordnen"?

89

Nach der Migration meines Frameworks auf Xcode 10 Beta (10L176w) wurden Warnungen angezeigt wie:

Zuordnung der Architektur arm64 zu x86_64. Stellen Sie sicher, dass die Build-Einstellungen für Architekturen und gültige Architekturen dieses Ziels für die iOS Simulator-Plattform korrekt konfiguriert sind.

... und:

Zuordnung der Architektur armv7 zu i386. Stellen Sie sicher, dass die Build-Einstellungen für Architekturen und gültige Architekturen dieses Ziels für die iOS Simulator-Plattform korrekt konfiguriert sind.

Trotz dieser Warnungen bestehen der Build- und der Unit-Test alle OK. Ich benutze Swift 4.2.

Worum geht es in diesen Warnungen?

Höflichkeit
quelle
Ich sehe dies beim Einstellen, wenn versucht wird, 64-Bit nur mit ARCHS = $(ARCHS_STANDARD_64_BIT)und zu VALID_ARCHS = $(inherited) x86_64 i386
erstellen

Antworten:

97

Gehen Sie zu Build Settings und gehen Sie wie unten gezeigt vor

Geben Sie hier die Bildbeschreibung ein

Hassan Taleb
quelle
5
Ich bestätige, dass dies bei mir funktioniert hat - ich weiß nicht warum, aber diese Einstellungen wurden sowohl in den Projekt- als auch in den Zielerstellungseinstellungen fett hervorgehoben. Dann habe ich wie oben erwähnt (an beiden Stellen!)
Gelöscht
23
Zur Verdeutlichung muss dies sowohl für das Projekt als auch für das Ziel erfolgen.
Palmi
2
Schöne Antwort, ich schlage vor, dass dies die Lösung ist.
Heider Sati
8
Wenn ich es gelöscht habe, wird in Resolved nichts angezeigt und ich bekommeThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal
2
scheint nicht mehr zu funktionieren. Ich bekomme das gleiche Problem, das Crystal mit Xcode 11 Beta 6 meldet. @ Johns Antwort funktioniert stattdessen für mich
Fabian Streitel
67

Ich konnte diese Warnungen zum Schweigen bringen, indem ich meine änderte stumm schalten, indem $(ARCHS_STANDARD)ich Einstellung für gültige Architekturen so Einstellung für Architekturen übereinstimmt .

Seltsamerweise wird dies als armv7 arm64(im Vergleich zur Standardeinstellung vonarmv7 armv7s arm64 ) , aber das manuelle Setzen auf diesen Wert verursachte immer noch die Warnungen. Ich bin mir nicht sicher, welche Bedeutung das hat, aber ich habe noch keine Probleme bei meinen Tests bemerkt.

John Montgomery
quelle
2
Diese Einstellung funktionierte für mich für ein "universelles" Framework, das sowohl auf iOS als auch auf macOS abzielt.
John
1
Das war meine Lösung. Ich habe gültige Architekturen festgelegt: $ (ARCHS_STANDARD) in Project und in Targets. Vielen Dank.
CGN
2
@ CGN wie hast du in Project eingestellt? Ich habe erfolgreich für Ziele gesetzt.
Erum
@Erum: siehe 2 Screenshots unten
CGN
26

Wahrscheinlich wurde die Build-Einstellung VALID_ARCHS ("Valid Architectures") entweder für das Ziel oder für das Projekt überschrieben. Dies ist eine Build-Einstellung, deren Wert automatisch basierend auf dem Ausführungsziel ermittelt werden soll, für das Sie erstellen. Wenn Sie herausfinden, woher diese Überschreibung stammt (die Build-Einstellung wird beim Überschreiben fett angezeigt), wählen Sie sie aus und drücken Sie die Entf-Taste, um den Standardwert wiederherzustellen.

Rick Ballard
quelle
1
Ich sehe auch diesen Fehler. Ich habe die Einstellungen nicht überschrieben VALID_ARCHS. Es enthält arm64sowohl für Debug als auch für Release.
funkenstrahlen
10
Dies scheint ein Fehler in Xcode 10 zu sein.
Tritt
5
Dies scheint aber immer noch mit der Release-Version von Xcode 10 zu erscheinen. Hat jemand ein Update dazu?
Plivesey
1
me2, ich habe nur darüber gegoogelt, aber ohne Erfolg
MegaManX
2
Ich musste zu allen meinen Unterprojekten und Zielen gehen und löschen VALID_ARCHS, um sie auf Standard zu setzen, und dann Xcode bereinigen und schließen / wieder öffnen, damit es für mich vollständig funktioniert
manman
13

Ändern Sie für das ZIEL, das Warnungen meldet, die Einstellung "Gültige Architektur" in:

$(VALID_ARCHS)
x86_64

Geben Sie hier die Bildbeschreibung ein

Quanhua Guan
quelle
Beste Antwort sicher!
Supertecnoboff
7

Ähnlich wie bei anderen Antworten konnte ich die Warnung durch Ändern von $(VALID_ARCHS)(Gültige Architekturen) in entfernen $(ARCHS_STANDARD). Von dort aus löschte ich alle abgeleiteten Daten und startete Xcode 10.0 neu. Dies ließ die Warnung vollständig verschwinden. Wenn Sie alles aus gültigen Architekturen löschen, wird eine andere Warnung angezeigt ("Keine gültigen Architekturen gefunden").

jldailey
quelle
1

Die Lösung ist einfacher: In gültigen Architekturen ersetzen Sie einfach arm64 durch x86_64 .

Hatte ein ähnliches Problem und die folgenden drei Warnungen in meinem Projekt: Hatte ein ähnliches Problem und die folgende Warnung in meinem Projekt

Meine gültigen Archtectures waren ursprünglich Meine ** gültigen Archtectures ** waren ursprünglich

Ersetzen:

  • armv7 mit i386,
  • armv7s mit i386,
  • und arm64 mit x86_64

(wie in den Warnungen erwähnt) war meine Lösung. Das Ergebnis in der Einstellung " Gültige Architektur" war:

Das Ersetzen von armv7 durch i386, armv7s durch i386 und arm64 durch x86_64, wie in den Warnungen erwähnt, war meine Lösung

Nach dem Austausch verschwanden meine drei obigen Warnungen.

Weitere Informationen zu den Architekturen finden Sie hier: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Ich denke, die Formulierung dieser Warnung in Xcode ist etwas verwirrend.

CGN
quelle
1

Wenn Sie Probleme mit Flutter haben:

  1. Löschen Sie die Datei Podfile, Podfile.lock, Pods, Runner.xcworkspace, Flutter.framework.

  2. Ausführen flutter clean.

  3. Ausführen flutter build ios.
Deepak Ror
quelle
0

Diese Warnung wurde angezeigt, als ich versuchte, Code für iOS und Mac OS zu kompilieren. Ich konnte es umgehen, indem ich zuerst das tat, was Hassan Taleb in seiner Antwort vorgeschlagen hatte: Löschen Sie die Architekturen, sodass nur gültige iPhone-Architekturen vorhanden sind. Um schließlich für Mac OS erstellen zu können, bewegen Sie die Maus über die gültigen Architekturen, sodass eine Plus-Schaltfläche angezeigt wird. Klicken Sie darauf, und fügen Sie nach Bedarf separate Einstellungen für verschiedene Plattformen hinzu, einschließlich verschiedener CPU-Architekturen. Für das macOS SDK kann ich meine gültigen Architekturen auf x86_64 setzen, wenn ich möchte.Für das macOS SDK kann ich meine gültigen Architekturen auf x86_64 setzen, wenn ich möchte

joelliusp
quelle
Auf dem aktuellen Xcode existiert diese Option nicht mehr.
JBarros35
@lambdapool Welche Option sehen Sie nicht? Ist es "Valid Architectures" / "VALID_ARCHS"?
Joeliusp
0

Ich fand den einfachsten Weg, dies zu beheben, indem ich das Projekt in meinem Texteditor öffnete und dann alle VALID_ARCHSZeilen suchte und löschte .

Jonathan
quelle
-2

Wenn Ihre [Build-Einstellungen] armv7 armv7s arm64 ist, löschen Sie bitte armv7s. Die Warnung wird abgebrochen.

Wilson Wang
quelle
Es geht nicht nur um armv7, es ist ein allgemeines Problem und Ihr Vorschlag ist nicht zukunftsgerichtet
Amok