"Avvertenza: le app per iPhone dovrebbero includere un'architettura armv6" anche con il set di configurazione build


332

È passato un po 'di tempo da quando ho dovuto modificare le impostazioni di creazione del progetto. Dopo l'aggiornamento a un SDK recente ho problemi a costruire la mia configurazione di distribuzione ad hoc.

Build genera questo avviso ed errore:

avviso: le app per iPhone devono includere un'architettura armv6 (ARCHS corrente = "armv7")

iPhone / iPod Touch: nell'eseguibile dell'applicazione manca un'architettura richiesta. Deve essere presente almeno una delle seguenti architetture: armv6 (-19033)

Tuttavia nel mio progetto ho pensato di avere le cose impostate correttamente:

  • Le architetture sono: Standard (armv6 armv7)
  • SDK di base: iOS più recente (attualmente impostato su iOS 4.2)
  • Architetture valide: armv6 armv7

testo alternativo

Ho pulito tutti gli obiettivi.

Apprezzo qualsiasi consiglio.


La mia era una vecchia app che ha ricevuto un aggiornamento e genera lo stesso errore anche per iOS Deployment Target <4.3! Quindi la mia soluzione era rimuovere tutti i riferimenti a armv6 e impostarlo su> = 4.3. Ha funzionato.
Henrik Erlandsson,

E proprio ora ho provato lo stesso per un'altra vecchia app che ha ottenuto una revisione e non ha funzionato ... Problema XCode 5, sembra interpretare erroneamente le Impostazioni di costruzione, a quanto pare.
Henrik Erlandsson,

Risposte:


418

Se si utilizza Xcode 4.2 o versione successiva, provare quanto segue:

  1. Fai clic sul nome del tuo progetto (nella colonna di sinistra), seguito dal Target:

    inserisci qui la descrizione dell'immagine

  2. Fai clic sulla scheda "Impostazioni build" (nella colonna di destra):

    inserisci qui la descrizione dell'immagine

  3. Fai clic sulla riga "Rilascio" o "Distribuzione" in "Architetture" e scegli "Altro ...":

    inserisci qui la descrizione dell'immagine

  4. Fare doppio clic sulla riga evidenziata denominata '$ (ARCHS_STANDARD_32_BIT)' nel popover che appare e sostituirlo digitando 'armv6'. Quindi aggiungi una nuova riga con il pulsante più in basso a sinistra del popover e digita "armv7", quindi fai clic su Fine:

    inserisci qui la descrizione dell'immagine

Aggiornamento: dovresti aggiungere armv7s anche per l'iPhone 5. (E rilascia armv6 se costruisci con Xcode 4.5 o versioni successive, che non supporta più armv6.)

Questo è tutto. Ora dovresti essere in grado di creare / archiviare senza generare errori.

Se il problema persiste, vedere questa risposta di justinxreese , che suggerisce di aggiungere voci per armv6 e armv7 in "Funzionalità dispositivo necessarie" nel file info.plist.


3
Sì, sembra che Apple si stia allontanando da ARM6, quindi questo sembra essere un passaggio necessario per Xcode 4.2. È strano che il processo di invio richieda ancora una build ARM6, anche se la 4.2 è ora pubblica ...
Jasarien,

7
Non ho una riga di distribuzione in architettura, invece ho una riga "Release". non so come farlo
OMGPOP il

2
@ Let'sSpotIt Basta aggiungere armv6 e armv7 alla riga di rilascio. Il progetto nei miei screenshot è stato importato da una versione precedente di Xcode, da cui i diversi nomi di architettura.
Nick,

2
Grazie Nick. Inoltre, potrebbe essere necessario modificare il file info.plist per supportare i nuovi dispositivi creati in Xcode 4.2 per supportare i dispositivi armv6. Vedi la mia risposta aggiuntiva di seguito.
MattyG,

1
@Nick grazie per il suggerimento, e per me ho dovuto selezionare il "Progetto" anziché "Target". selezionando dalle impostazioni di build "Target" non ha funzionato per me. comunque grazie ancora per l'aiuto.
Prasad De Zoysa,

62

Se si deseleziona "Crea solo architettura attiva", verranno create tutte le architetture valide.

Aggiornamento : questo non è più applicabile a partire da Xcode 4 - segui le istruzioni di Nick per Xcode 4 e successive.


11
È possibile accelerare i tempi di compilazione impostando su SÌ per le build di debug e No sulle versioni di rilascio.
Billy Gray,

59

Ho avuto questo problema anche dopo aver seguito la risposta accettata e ho trovato il seguente per funzionare:

Nel tuo Info.plist, aggiungi una voce per Funzionalità dispositivo necessarie. Questo dovrebbe essere un array e avrà due voci.

  • Articolo 0: armv6
  • Articolo 1: armv7

Sarà simile a questo:

Voce necessaria per le funzionalità del dispositivo


Questa soluzione ha corretto gli altri miei avvisi di architettura, ma ho ancora quello iniziale e ho anche "Costruisci solo architettura attiva" impostato su "No"
Dan F

risolto per me, poiché la soluzione precedente non si applicava. Per qualche ragione armv6 non viene più visualizzato sotto le impostazioni della mia architettura di build: S
seeafish

Questo, insieme alla risposta di Nick sopra, l'ha risolto per me. +1
Saurabh Wadhwa,

Dovresti rimuovere questa opzione nelle ultime versioni di xCode, quindi verrà compilata. Quando metti entrambi, allora entrambe le arcitectures saranno valide nel tuo dispositivo, il che è praticamente impossibile
Artem

Per la compilazione con XCode 4.5+, dovrai eliminare armv6 dalle funzionalità del dispositivo richieste.
Pulkit Goyal,

26

Oltre alla risposta di Nick su Xcode 4.2, potrebbe essere necessario rivedere il file info.plist. Sembra che i nuovi progetti avviati in Xcode 4.2 per impostazione predefinita specifichino "armv7" in "Funzionalità dispositivo necessarie". Dovrai rimuoverlo se desideri supportare dispositivi che eseguono armv6 (ad esempio iPhone 3G).

inserisci qui la descrizione dell'immagine

Elimina armv7 da "Funzionalità dispositivo necessarie" in yourProjectName-Info.plist


21

Un aggiornamento iOS 6

Modifiche in Xcode 4.5.x per iOS 6

  1. Xcode 4.5.x (e versioni successive) non supporta la generazione di file binari armv6.
  2. Ora include il supporto per iPhone 5 / armv7s.
  3. La destinazione di distribuzione minima supportata con Xcode 4.5.xo successivo è iOS 4.3.

6

Ho avuto anche questo problema. Ho appena impostato il mio target di distribuzione su 4.3 e ho lasciato solo l'architettura armv7 e ha funzionato. Al momento quasi tutti ne hanno 5, quindi 4.3 va bene.


3

per me non funziona con ogni risposta. ma provo TARGETS> Architectures> Debug e aggiungo una nuova riga con il pulsante più, e digito 'armv6' (con out '), quindi faccio clic su Fine.

e infine CMD + B, quindi fare clic con il tasto destro su PrjectName.app (nella cartella Prodotti)> Apri nel Finder> Comprimi "PROJECT_NAME.APP" (in Debug-iphoneos)> Carica su AppStore

inserisci qui la descrizione dell'immagine

è la mia impostazione dello schermo. inserisci qui la descrizione dell'immagine

se hai incluso il progetto, configura tutto. Spero che il tuo aiuto.


1
Ho inoltre dovuto impostare armv6 su Release Architecture prima che funzionasse.
mph

3

Dopo aver provato un misto di queste risposte, mi sono finalmente imbattuto nel farlo funzionare. Sono così incazzato con Apple in questo momento. Solo un'altra ora mi hanno fatto sprecare. Ecco la mia configurazione.

inserisci qui la descrizione dell'immagine


2

Ho provato tutte le risposte sopra, nessuna ha risolto la mia domanda. Quindi creo un nuovo progetto e diffondo le impostazioni di creazione una per una. Solo "File di autorizzazioni alternative" è diverso. La compilazione del progetto non riuscita ha un valore armv7. Eliminalo quindi clean-> build-> archive. Avere successo! La speranza può risolvere la tua domanda


2

Wow, aggiorno / invio app circa ogni 6 mesi. Ogni volta che lo faccio devo imparare il "nuovo" modo di farlo ...

Stessi problemi descritti sopra durante l'esecuzione di iOS 5.1 e Xcode 4.3.2

Grazie per i post! Ho trascorso un po 'di tempo ad aggiornare tutte le impostazioni del progetto su armv6, armv7, ma nessuna gioia. Quando ho impostato "Costruisci solo architettura attiva" su No, ho ricevuto un errore di compilazione nel mettere entrambi gli oggetti nella stessa directory.

Fortunatamente, ho notato che state invece modificando le impostazioni di build del target. Questo è quello che alla fine ha funzionato (armv6, armv7 e impostando "build only active architecture" su No in Target build Settings). Come disclaimer, avevo già impostato tutte le architetture su armv6, armv7 anche nelle impostazioni del progetto.

Comunque, grazie per l'aiuto, Brent


2

Ho dovuto essere sicuro di modificare queste impostazioni in entrambe le impostazioni Target e Project su xCode 4.3.2 dopo averlo fatto e averlo impostato per costruire sia per armv6 che per armv7 ovunque potessi inviare la mia app.

Per sicurezza, sono uscito anche xCode tra le modifiche e l'esecuzione di un ciclo di archiviazione pulito, compilato.


0

Un problema doloroso anche per me. Ho trascorso circa un'ora a cercare di ricostruire e ricostruire - nessuna gioia. Alla fine ho dovuto fare questo:

  1. Aggiorna l'SDK di base all'ultimo (nel mio caso iOS 5)
  2. Riavvia xCode
  3. Pulisci e costruisci
  4. Ha funzionato!

Immagino sia un sacco di gergo su arm6, arm7 dato che sembrava che il mio progetto fosse valido per entrambi, almeno le impostazioni sembravano dirlo), suppongo che questo sia un modo cinico di confonderci con i tecnicismi, che noi doniamo capisco, quindi prendiamo solo l'opzione facile e miriamo all'ultimo iOS (buono per Apple con più persone aggiornate) ....


0

Ecco la documentazione di Apple:

Domande e risposte tecniche QA1760

Dice che ci sono due cose che devi fare bene:

  1. Aggiungi armv6alle impostazioni di build dell'architettura
  2. Impostare Crea solo architettura attiva su No.

Se questo ancora non ti aiuta, ricontrolla che stai davvero cambiando le impostazioni di build dell'architettura per la giusta configurazione di build: ho perso mezz'ora a giocherellare con quella sbagliata e chiedendomi perché non ha funzionato ...

Selezionare Edit Scheme...nel menu Prodotto, fare clic sullo schema "Archivio" nell'elenco a sinistra e controllare la Configurazione build. Modificare il valore se non era quello previsto.


0

Nota; Ho dovuto eseguire questi passaggi sia per il mio progetto di base, sia per il file .xcodeproj incorporato di PhoneGap nella mia applicazione.

Sì, ho incorporato PhoneGap; si aggiornano molto frequentemente e ho meno di due mesi per sapere che una funzionalità è ammortizzata.


0

Prova a cambiare il tuo target di distribuzione in qualcosa di più alto di un processore armv6. Le impostazioni per xCode fanno riferimento al livello del sistema operativo, ad esempio: versione iOS # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Puoi impostarlo nella scheda delle impostazioni di compilazione o nella scheda di riepilogo. Inizia nella parte superiore sinistra della finestra in Project Navigator, con tutti i file elencati in essa. Fai clic su quello più in alto con un'icona blu.

(ii) Se si sta pianificando di utilizzare il circuito programmabile della linea shader, a cui si accede e controllato tramite l'API openGL ES 2.0, è necessario impostare la "Versione di distribuzione" su circa 4.3, che credo sia disponibile solo su dispositivi come il 3GS o più recente. xCode segnala che è necessario iOS 4.2.5 o successivo per eseguire il codice armv7. E ancora una volta, questo processore, credo, è iniziato con il 3GS. * IOS 4.3 sembra essere la scelta per me, per ora.

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

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


0

Se xCode continua a lamentarsi di armv7, assicurati di scollegare qualsiasi dispositivo di connessione (in particolare iPhone 5 !!) e riprova. Mi ci sono volute ore per scoprire quella piccola informazione.


0

Usando Xcode 4.2 su Snow Leopard, ho usato le seguenti impostazioni per creare un'app che funzionasse sia su armv6 (Iphone 3G e inferiori) sia su armv7 (tutto più recente di 3G incluso 3GS).

architetture: armv6 e armv7 (rimossi $ (ARCHS_STANDARD_32_BIT))
costruiscono solo l'architettura attiva: nessuna
funzionalità del dispositivo richiesta: armv6

non mettere armv7 nelle funzionalità del dispositivo richieste se si desidera che l'app funzioni anche su 3G e versioni precedenti.


1
è l'unica cosa che ha funzionato per me. test su iphone4, iphone3g, ipad1, ipad2. leggi che dovevo mettere armv6 E armv7 nelle funzionalità del dispositivo richieste, ma non appena avessi inserito armv7, l'app non si sarebbe caricata / eseguita su
iphone3g

Lasciando la voce armv7 in "Funzionalità dispositivo necessarie", Xcode mi ha proibito di funzionare su iPhone 3G.
tinsukE,
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.