Ho appena realizzato 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 sotto iOS4.2 dovevo includere armv6 in Architectures. Basta modificare quel campo, fare clic sul pulsante "+" quando appare la finestra di dialogo e inserire il letterale "armv6".
Nel mio caso, vogliamo che la nostra app funzioni su iOS4 e iOS5. Abbiamo dovuto apportare alcune modifiche affinché funzionassero correttamente con iOS5, ma tutte quelle modifiche sono state apportate con modifiche al codice compatibili con iOS4.
Abbiamo anche aggiunto alcune funzionalità specifiche di iOS5 in un modo che consente all'app di funzionare senza crash in iOS4. Nello specifico, abbiamo testato le funzionalità di iOS5 prima di provare a utilizzarle e ho collegato librerie solo iOS5 come Opzionali.
Quindi, supportare iPhone3G in un mondo iOS5 potrebbe anche significare "vogliamo che la nostra app venga eseguita su iOS4 e versioni successive (indipendentemente dall'uso di qualsiasi funzione iOS5)" piuttosto che "vogliamo assicurarci che la nostra app venga eseguita su dispositivo precedente con iOS5 ". C'è una differenza qui; pensaci. :-)
In ogni caso, aggiungere nuovamente il supporto armv6 è molto semplice. E immagino che il punto sia questo: ad un certo punto, quando non ci sono più dispositivi armv6 là fuori a preoccuparsi (per qualsiasi motivo) non dovrai costruirlo per questo. La visione di Apple è che tutti dovrebbero aggiornare l'hardware più recente il prima possibile. Quindi, in quel mondo, non c'è bisogno che gli strumenti siano predefiniti a tutto tranne che ai più recenti e ai più grandi. :-) Fortunatamente (o meno), noi sviluppatori viviamo nel mondo reale e riconosciamo che devi supportare le cose più vecchie per un po '. E credo che anche il team di sviluppo di Xcode lo sappia, ed è per questo che puoi aggiungere il supporto armv6 in un altro modo.
fonte
2011-09-20 18:46:17
Grazie per la tua risposta precisa :-) Effettivamente voglio essere in grado di eseguire la mia app su un iPhone 3G con iOS 4.2.1 o inferiore (limitando a 4.0) e avere alcune caratteristiche specifiche di iOS 5 per i dispositivi attuali. Non ho provato semplicemente aggiungendo "armv6" nelle architetture, stavo cercando una variabile di ambiente come ARCHS_STANDARD_32_BIT e ho appena trovato ARCHS_UNIVERSAL_IPHONE_OS ma non sembra funzionare. – iGranDav
Volevo aggiungere che molte soluzioni là fuori suggeriscono che dovrebbe dire "armv6 armv7" - questo non ha funzionato per me. Attualmente solo "armv6 $ (ARCHS_STANDARD_32_BIT)" funziona per me, cioè non sbarazzarsi di ciò che è lì, basta aggiungere "armv6" all'impostazione Architectures – brack
Ho fatto tutto questo e la mia build non funzionava ancora - la ragione era che avevo un (inutilizzato) La build di rilascio è stata impostata su una destinazione di distribuzione di iOS 5.0 mentre Debug e Distribution erano impostati su 3.0 e questo sembra arrestare la creazione di xcode per armv6. L'impostazione dell'obiettivo di distribuzione su 3.0 per tutti i build ha risolto il problema. –