È possibile scegliere come target versioni iOS precedenti quando si utilizza Xcode 4.2 e iOS 5 SDK?


103

Di recente ho scaricato Xcode 4.2 con il pacchetto SDK di iOS 5 e ho subito notato che non sono in grado di utilizzare il mio iPhone 3G con iOS 4.2.1 per il debug. Sono in grado di eseguire il debug e il test solo sul mio iPhone 4 con iOS 5 installato.

Per tutti i miei dispositivi con iOS inferiore a 5.0 Xcode dice semplicemente "Finished running for iPhone3GS" e non lo esegue. Il mio obiettivo di distribuzione è impostato su 3.0 perché non utilizzo alcuna funzionalità nella mia app superiore a 3.0 e desidero essere in grado di indirizzare tutte le versioni 3.0 o successive. Ho tutti i miei profili di provisioning installati e aggiornati.

Ho chiuso e riavviato xcode, ho pulito la build più volte. Ho provato ad aggiungere armv6 nelle impostazioni di build dell'architettura, ma niente mi permetterà di creare ed eseguire la mia app sul mio vecchio telefono con iOS 4.2.1.

La mia domanda è: è possibile continuare a far funzionare le app con il nuovo SDK per versioni iOS inferiori a 5? Come posso essere sicuro che la mia app continuerà a funzionare su versioni iOS precedenti se non sono in grado di installarle sul mio vecchio telefono?

Modifica: OK, sembra che iOS SDK 5 abbia abbandonato il supporto per armv6 per impostazione predefinita. Quello che devi fare è aggiungere armv6 nel campo Architectures in Build Settings sia per il tuo Target che per il tuo Progetto. Quindi la tua app sarà in grado di funzionare su dispositivi iPhone 3G. La risposta può essere trovata qui Come costruire per architetture armv6 e armv7 con iOS 5


Nota che la tua modifica ha a che fare con le architetture, che è un problema separato dalle iOSversioni. Inoltre, aggiungi la modifica come risposta in modo da poter accettare la soluzione trovata e questa domanda può essere contrassegnata come risposta.

Risposte:


153

Stavo riscontrando lo stesso problema cercando di ottenere un progetto Xcode 4.2 appena creato in esecuzione su un iPhone 3G 4.2.1. Ecco come sono riuscito a farlo funzionare.

1) Modificare le "Impostazioni di costruzione" ==> "Architettura" del target da "Standard (armv7)" ad "altro". Aggiungi armv6 e armv7.

2) Modificare le "Impostazioni di costruzione" ==> "Architettura valida" del target in armv6 e armv7.

3) Modificare le "Impostazioni di compilazione" ==> "Destinazione di distribuzione iOS" di destinazione in iOS 4.2.

inserisci qui la descrizione dell'immagine

4) Apri i progetti * -Info.plist, rimuovi l'impostazione "Capacità dispositivo richieste" (nota che richiede armv7) inserisci qui la descrizione dell'immagine

btw l'ho capito quando ho provato ad aggiungere manualmente l'app tramite l'organizzatore e ha segnalato:

Impossibile installare l'applicazione

Info.plist per l'applicazione in /Users/.../TestsDebug.app specifica i requisiti di capacità del dispositivo, che non sono soddisfatti da Dev iPhone 3G

Tutto dovrebbe funzionare dopo. Parla di una PITA.


Grazie mille! Ti devo della birra! Questo in effetti ha risolto i miei problemi, PITA infatti: D
Greg Ellis

4
Grazie! Avevo letto altrove delle impostazioni dell'architettura, ma nessun altro sembra menzionare anche le impostazioni "Funzionalità dispositivo richieste".
bunnyhero

Devo aggiungere: sia i nuovi che i vecchi progetti sono interessati dall'aggiornamento! Ho testato le mie vecchie cose prima di cercare su Google e nemmeno loro hanno funzionato! Ti devo anche una birra! :)
Eduardo Costa

1
Ho lo stesso problema, ma anche se le impostazioni del progetto fossero "Standard armv7" per Architectures, Valid Architectures indicava già "armv6 armv7". Inoltre, non avevo la proprietà "Capacità dispositivo richieste" in Info.plist. Proverò comunque il trucco, spero che funzioni!
rchampourlier

anche le "capacità del dispositivo richieste" mi hanno dato
codecaffeine

12

Vai a Xcode> Preferenze> Download e installa il supporto per il debug per le versioni iOS precedenti.


Sono andato alle preferenze e ho scaricato e installato il supporto per il debug per i sistemi operativi più vecchi, sono uscito da xcode, ho riaperto xcode, ho eseguito una pulizia e una build, ma l'app non si installa ancora sul mio vecchio dispositivo. Sono completamente perso ora, perché quando ho visto la tua risposta ho pensato di sicuro che avrebbe risolto il mio problema :(
Greg Ellis

1
Ti devo anche una birra! Questo ha risolto UN ALTRO problema che avevo dopo l'aggiornamento a Xcode 4! Ora posso eseguire il debug del mio dispositivo iOS 4.2 (iPod Touch 2nd gen)!
Eduardo Costa

3

mmorris mi ha avvicinato alla risoluzione del problema ... In Info.plist, ho dovuto impostare le funzionalità del dispositivo richieste su armv6, non armv7 Spero che questo aiuti anche gli altri.


1

È necessario collegare il telefono e quindi andare all'organizzatore. Xcode dovrebbe richiedere automaticamente la versione precedente.

Vedi la pagina degli sviluppatori per maggiori informazioni. È stato descritto nelle note per la 4.2 beta


L'ho fatto e ho fatto clic su "Usa questo dispositivo per lo sviluppo" e sembrava che facesse quello che doveva, ma non riesco ancora a far funzionare un'app sul mio vecchio dispositivo da xcode.
Greg Ellis

1

Ho riscontrato un problema simile cercando di eseguire la mia app su un vecchio iPod Touch. Ho aggiornato a Xcode 4.3.3 e l'app non funzionava più nel debugger su hardware precedente.

Credo che gli altri commenti qui su "Architetture" e "Capacità del dispositivo richieste" siano dettagli importanti da specificare correttamente. Sfortunatamente, non erano sufficienti per risolvere il mio problema.

Nel mio caso, ho scoperto che lo schema di costruzione è il colpevole. Xcode 4.3.3 mi ha chiesto di passare dal debugger GDB a LLDB quando ha aggiornato il mio progetto. Quando ho modificato l'azione Esegui del mio schema in GDB , sono stato in grado di eseguire nuovamente l'app sul mio vecchio hardware da Xcode.


1

Ho scoperto che dovevo aggiungere armv6 alle architetture, ma ancora non funzionava. E ora ho rimosso armv7 dalle capacità richieste, e basta! Ha funzionato!


0

Questo ha funzionato per me e dovrebbe funzionare per te se in precedenza avevi una versione precedente di Xcode. In caso contrario, dovresti seguire i consigli forniti da altri per ottenere l'SDK da una versione precedente dell'SDK:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

Questo comando è solo leggermente diverso da quello mostrato da altri, ma quei comandi hanno lasciato cadere i file nella cartella SDK stessa per me: vogliamo che venga creata una sottodirectory con il nome appropriato.


0

Nel mio caso c'era una linea ridondante nelle capacità del dispositivo richieste inserisci qui la descrizione dell'immagine

L'ho appena rimosso ...

inserisci qui la descrizione dell'immagine

Si spera che possa aiutare qualcun altro.

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.