Cosa significa l'avviso "Mappatura dell'architettura arm64 su x86_64"?


95

Dopo aver migrato il mio framework a Xcode 10 beta (10L176w) ho iniziato a ricevere avvisi come:

Mappatura dell'architettura arm64 su x86_64. Assicurati che le impostazioni di build di Architectures e Valid Architectures di questa destinazione siano configurate correttamente per la piattaforma iOS Simulator.

... e:

Mappatura dell'architettura armv7 su i386. Assicurati che le impostazioni di build di Architectures e Valid Architectures di questa destinazione siano configurate correttamente per la piattaforma iOS Simulator.

Nonostante questi avvertimenti, la build e gli unit test superano tutti OK. Sto usando Swift 4.2.

Tuttavia, di cosa parlano questi avvertimenti?


Lo vedo quando si imposta quando si tenta di creare 64 bit utilizzando solo ARCHS = $(ARCHS_STANDARD_64_BIT)eVALID_ARCHS = $(inherited) x86_64 i386
Kdawgwilk

Risposte:


101

Vai a Impostazioni build e fai come mostrato di seguito

inserisci qui la descrizione dell'immagine


5
Confermo, questo ha funzionato per me - non so perché, ma quelle impostazioni erano evidenziate in grassetto sia sulle impostazioni di costruzione del progetto che di destinazione. Quindi ho cancellato come menzionato sopra (in entrambi i posti!), E questo ha appena rimosso l'evidenziazione in grassetto (ripristinato ai valori predefiniti, ovviamente), e gli avvisi sono spariti
Nick Entin

23
Giusto per chiarire, questo deve essere fatto sia sul progetto che sul target.
palmi

2
Bella risposta, propongo che questa sia la soluzione.
Heider Sati

8
Quando l'ho cancellato, non viene visualizzato nulla in Resolved e ottengoThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal

2
sembra non funzionare più. Sto riscontrando lo stesso problema che Crystal sta segnalando con Xcode 11 beta 6. La risposta di @ John funziona invece per me
Fabian Streitel

70

Sono stato in grado di silenziare questi avvisi modificando l' impostazione Valid Architectures in base alle $(ARCHS_STANDARD)mie Architectures impostazione di .

Stranamente, questo viene visualizzato come armv7 arm64(rispetto all'impostazione predefinita di armv7 armv7s arm64), ma impostarlo manualmente su quel valore ha comunque causato gli avvisi. Non sono sicuro di quale sia il significato di ciò, ma non ho ancora notato alcun problema durante i miei test.


2
Questa impostazione ha funzionato per me per un framework "universale" destinato sia a iOS che a macOS.
Giovanni

1
Quella era la mia soluzione. Ho impostato architetture valide: $ (ARCHS_STANDARD) in Project e in Targets. Grazie.
CGN

2
@CGN come ti sei ambientato in Project? ho impostato con successo per gli obiettivi.
Erum

@Erum: vedi 2 screenshot qui sotto
CGN

27

È probabile che l'impostazione di build VALID_ARCHS ("Valid Architectures") sia stata sostituita, per la destinazione o per il suo progetto. Questa è un'impostazione di build che dovrebbe ottenere il suo valore automaticamente in base alla destinazione di esecuzione per cui stai creando. Quando capisci da dove proviene questo override (l'impostazione di build verrà visualizzata in grassetto quando sovrascritta), selezionala e premi il tasto Canc per ripristinarla al valore predefinito.


2
Vedo anche questo errore. Non ho sovrascritto le impostazioni VALID_ARCHS. Contiene arm64sia per il debug che per il rilascio.
funkenstrahlen

10
Sembra essere un bug in Xcode 10. Si verifica ancora con le impostazioni predefinite
Kdawgwilk

5
Questo ma sembra ancora apparire con la versione di rilascio di Xcode 10. Qualcuno ha qualche aggiornamento su questo?
plivesey

1
me2, stavo solo cercando su
Google

2
Avevo bisogno di andare a tutti i miei sottoprogetti e obiettivi ed eliminare VALID_ARCHSper impostarlo come predefinito, quindi pulire e chiudere / aprire nuovamente Xcode affinché funzionasse completamente per me
manman

16

Per il TARGET che segnala gli avvisi, modifica l'impostazione "Architettura valida" in:

$(VALID_ARCHS)
x86_64

inserisci qui la descrizione dell'immagine


La migliore risposta di sicuro!
Supertecnoboff

8

Analogamente ad altre risposte, sono stato in grado di rimuovere l'avviso modificando $(VALID_ARCHS)(Architetture valide) in $(ARCHS_STANDARD). Da lì, ho cancellato tutti i dati derivati ​​e riavviato Xcode 10.0. Questo ha fatto sparire completamente l'avvertimento. L'eliminazione di tutto da Valid Architectures ha appena fatto apparire un avviso diverso ("Nessuna architettura valida trovata").


1

La soluzione è più semplice: in Valid Architectures basta sostituire arm64 con x86_64 .

Ha avuto un problema simile e i seguenti tre avvisi nel mio progetto: Ho avuto un problema simile e il seguente avviso nel mio progetto

Originariamente lo erano le mie valide ArchtecturesLe mie ** Valid Archtectures ** originariamente lo erano

Sostituzione:

  • armv7 con i386,
  • armv7s con i386,
  • e arm64 con x86_64

(come menzionato negli avvisi) è stata la mia soluzione. Il risultato nell'impostazione Valid Architecture è stato:

Sostituire armv7 con i386, armv7s con i386 e arm64 con x86_64 come menzionato negli avvisi è stata la mia soluzione

Dopo le sostituzioni i miei tre avvertimenti sopra sono scomparsi.

Informazioni più approfondite sulle architetture possono essere trovate qui: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Penso che la formulazione di questo avviso in Xcode sia un po 'confusa.


1

Se stai riscontrando problemi in Flutter:

  1. Elimina il Podfile, Podfile.lock, la cartella Pods, Runner.xcworkspace, Flutter.framework.

  2. Corri flutter clean.

  3. Corri flutter build ios.

0

Ho visto questo avviso quando ho provato a compilare il codice sia per iOS che per Mac OS. Sono stato in grado di aggirare il problema facendo prima quello che Hassan Taleb ha suggerito nella sua risposta: ripulisci le architetture in modo che ci siano solo architetture valide per iPhone. E infine, per continuare a creare per Mac OS, passa il mouse sulle architetture valide in modo che appaia un pulsante più. Fare clic su questo e quindi è possibile aggiungere impostazioni separate per piattaforme diverse secondo necessità, comprese diverse architetture di CPU. Per macOS SDK, posso impostare le mie architetture valide solo su x86_64, se lo desidero.Per macOS SDK, posso impostare le mie architetture valide solo su x86_64, se lo desidero


sull'Xcode corrente non esiste più questa opzione.
JBarros35

@lambdapool quale opzione non vedi? È "Architetture valide" / "VALID_ARCHS"?
joelliusp

0

Ho trovato che il modo più semplice per risolvere questo problema era aprire il progetto nel mio editor di testo, quindi trovare ed eliminare tutte le VALID_ARCHSrighe.


0

Anch'io sto affrontando lo stesso problema. Per la risoluzione, ho appena cambiato il sistema di compilazione da Standard a Legacy e questo ha risolto il problema.


0

Ho visto lo stesso avvertimento mentre costruivo il mio framework. Dopo un po 'ho notato che questi valori di architettura validi variano a seconda del tipo di dispositivi indipendentemente dai valori nelle impostazioni di build.

Real devices-> arm64 
Simulator devices ->x86-64

-2

se le tue [Impostazioni build] sono armv7 armv7s arm64, elimina armv7s. l'avviso verrà annullato.


non si tratta solo di armv7, è un problema generale e il tuo suggerimento non è lungimirante
amok
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.