Risposte:
Ho appena creato qualcosa oggi specificando un obiettivo di distribuzione di iOS 4.0. Con solo armv7 specificato in Architectures, Xcode mi ha avvertito che per supportare qualsiasi cosa al di sotto di iOS4.2 dovevo includere armv6 in Architectures. Basta modificare quel campo, fare clic sul pulsante "+" quando viene visualizzata la finestra di dialogo e immettere il letterale "armv6".
Nel mio caso, vogliamo che la nostra app funzioni con iOS4 e iOS5. Abbiamo dovuto apportare alcune modifiche in modo che funzionasse correttamente con iOS5, ma tutte queste modifiche sono state apportate con modifiche al codice compatibili con iOS4.
Abbiamo anche aggiunto alcune funzionalità specifiche per iOS5 in modo da consentire l'esecuzione dell'app senza crash su iOS4. In particolare, abbiamo testato le funzionalità di iOS5 prima di provare a utilizzarle e abbiamo collegato le librerie solo iOS5 come facoltative.
Quindi, supportare iPhone3G in un mondo iOS5 potrebbe significare altrettanto facilmente "vogliamo che la nostra app funzioni su iOS4 e versioni successive (indipendentemente dall'uso delle funzionalità di iOS5)" piuttosto che "vogliamo assicurarci che la nostra app funzioni su un vecchio dispositivo con iOS5 ". C'è una differenza qui; pensaci. :-)
Ad ogni modo, aggiungere di nuovo il supporto armv6 è molto semplice. E immagino che il punto sia questo: a un certo punto, quando non ci saranno più dispositivi armv6 là fuori di cui preoccuparsi (per qualsiasi motivo) non dovrai costruire per questo. Il punto di vista di Apple è che tutti dovrebbero eseguire l'aggiornamento all'hardware più recente il prima possibile. Quindi, in quel mondo, non è necessario che gli strumenti impostino per impostazione predefinita altro che l'ultimo e il migliore. :-) Fortunatamente (o no), noi sviluppatori viviamo nel mondo reale e riconosciamo che devi supportare cose più vecchie per un po '. E immagino che anche il team di sviluppo di Xcode lo sappia, motivo per cui puoi aggiungere il supporto di armv6 in modo abbastanza semplice.
La semplice risposta è che devi cambiare le impostazioni correnti da "Standard (armv7) - $ (ARCHS_STANDARD_32_BIT)" per essere solo "armv6" e "armv7". Guarda l'immagine qui sotto. È necessario eliminare la riga con le impostazioni precedenti affinché funzioni.
assicurati anche di impostarlo in Progetto AND Obiettivi ... mi è costato un'ora per capirlo. l'avevo impostato per uno ma non per l'altro. spero che questo ti aiuti. GLTA
Penso che ci sia un motivo per cui Apple ha abbandonato armv6 dall'impostazione standard.
Ho compilato armv7 / armv6 con iOS5 SDK, tuttavia, il compilatore armv6 ha prodotto codice errato in modalità di rilascio. Dopo ore passate a trovare una soluzione alternativa (provando llvm o gcc con diversi livelli di ottimizzazione) mi arrendo.
Quindi, tornerò a iOS SDK 4.x fintanto che supporto i vecchi dispositivi armv6.
Esempio di codice:
// myView center=(160, 100)
CGPoint p=myView.center;
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100)
p.y+=100;
// now p =(200,200) (what the heck?)
Forse ho un po 'di danneggiamento della memoria, tuttavia, sul compilatore armv7 e su iOSSDK <5.0 si comporta come previsto.
I migliori saluti
Non sono sicuro che questa sia ancora una soluzione, ma ho scoperto che sostituire la stringa definita in "architetture", che era $ (ARCHS_STANDARD_32_BIT), con "armv6 armv7" mi ha permesso di compilare con iOS5 come base e iOS4 come distribuzione target e passare la convalida.
Non sto usando librerie o chiamate esclusive di IOS5, ma intendo farlo nella prossima versione.