[iOs] Distribuzione su Apple Store: errore “No architectures to compile for armv6”

Chi ha avuto esperienza di programmazione su XCode 3 e ha iniziato a sviluppare un progetto lì e poi ad importarlo su XCode 4, sicuramente è incappato nell’errore “No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv6 armv7)“.

Questo errore non avviene a tempo di compilazione, ma all’atto della distribuzione su Apple Store.

Ho letto che capita anche sviluppando direttamente su XCode 4 e si verifica quando si crea un progetto che di default viene testato su una architettura armv7, che per intenderci è il processore che gira dagli iPhone 3GS a salire.

L’iPhone 3G monta un processore armv6, quindi, affinchè si possa deployare sui modelli da 3G a 4S, occorre settare la predisposizione a questa architettura sul compilatore. A partire dal firmware 4.3 apple ha tolto il supporto ai dispositivi basati su armv6 (iPod Touch/IPhone 1G, 2G, 3G), per cui se vi occorre rendere compatibile e scaricabile la vostra app anche su di essi, vi occorre compilarla su firmware 4.2 al massimo e dichiarare esplicitamente la compatibilità con l’architettura armv6.

Per prima cosa, occorre andare sulle proprietà del vostro progetto e settare una architettura valida (voce Valid Architecture):

  1. Navigare sul tab Build Settings e trovare le voci sotto il gruppo Architectures
  2. Per le voci presenti sotto tale gruppo settare i seguenti valori: Architectures: Standard (armv6 armv7); Base SDK: Latest iOS (iOS 4.3), Build Active Architecture Only: No, Supported Platforms: iphonesimulator, iphoneos e Valid Architectures: armv6 armv7 i386;
  3. Se nella voce Valid Architectures vi sono già i valori armv6 armv7, cancellarle, restartare XCode e reinserirle. Se vi è il valore $(ARCHS_STANDARD_32_BIT), vi consiglio di cancellarlo e inserire le due voci armv6 e armv7;
  4. Sempre in Valid Architectures, il valore i386 non è obbligatorio, ma permette di definire correttamente l’architettura utilizzata dal Simulatore che gira su un MacIntel.

Vi consiglio di fare anche il seguente passo, perchè mi è capitato che dopo essere riuscito ad uploadare la mia app su Apple Store, nonostante non mi abbia più dato l’errore “No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv6 armv7)“, mi segnalava l’app compatibile anche per iPhone 3G, ma quando la si provava a scaricare ed installare, non succedeva nulla (ovvero nè la scaricava nè la installava sul device).

5. Nel vostro progetto vi è sicuramente un file che si chiama yourProjectName-Info.plist, che contiene tutte le info di configurazione della vostra app. Occorre che cancellate tutte i valori presenti sotto la voce Required device capabilities (se c’è).

enter image description here

Vi allego gli screenshot dei passi descritti e i due post che mi sono serviti per risolvere questo bel problema di compatibilità sui dispositivi con armv6:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


+ sei = 14