È possibile installare iOS 6 SDK su Xcode 5?


250

Xcode 5 ha un riquadro delle preferenze che consente di scaricare il simulatore di iPhone 6.1, tuttavia non riesco a trovare un posto dove consentire il download dell'SDK di iOS 6, quindi non è possibile impostare l'SDK attivo su iOS 6 durante lo sviluppo con Xcode 5 Esiste una soluzione alternativa che consenta a Xcode 5 di installare iOS 6 SDK?

MODIFICARE:

Le soluzioni alternative non dovrebbero più essere necessarie ora che Xcode 5 è generalmente disponibile e consente di scaricare versioni precedenti di SDK.

inserisci qui la descrizione dell'immagine


41
Per sfruttare molti miglioramenti di Xcode 5, pur essendo in grado di creare app per l'app store di oggi.
Tony,

61
Ehi maddy, il punto su "abbracciare iOS 7 comunque" non è totalmente legato alla versione GA. La decisione e lo sforzo di riprogettare l'intero linguaggio di progettazione di un'app e UX per allinearsi al design piatto e ai componenti dell'interfaccia utente iOS7 riprogettati non è né piccolo, né può venire facilmente da una prospettiva aziendale e di tempismo. In base a SDK 6.1, iOS7 utilizzerà il linguaggio di progettazione dell'interfaccia utente di iOS 6 e precedenti (per scopi di supporto all'indietro). Quindi può essere molto giustificato che vogliamo sviluppare in Xcode 5 contro l'SDK 6.1 per un po 'di tempo a venire.
Marzo

2
hmmm forse perché si aspetta che l'SDK sia separato dall'IDE, invece di una pila monolitica di codice?
phreakhead,

1
Attualmente sto lavorando con un client che non è pronto ad accettare le modifiche dell'interfaccia utente di IOS7, ma può beneficiare dei miglioramenti della migrazione dei dati di base in XCode 5. Quindi, in questo caso, è esattamente quello che voglio anche io.
Droid Chris,

Si potrebbe pensare che Xcode, se non includesse SDK 6.1, almeno lo integrerebbe senza problemi. Ma poi c'è questo problema .
JohnK,

Risposte:


203

EDIT: a partire dal 1 ° febbraio 2014, Apple non accetterà più le app pre-iOS7 per l'invio all'App Store. Quindi, mentre questa tecnica funziona ancora, non sarà utile per la maggior parte dei lettori.


Sì, va bene. Costruisco ancora con iOS 4.3 per un progetto (è passato un po 'di tempo da quando lo abbiamo aggiornato; ma lo hanno ancora accettato dopo l'uscita di iOS 6) e attualmente costruisco app 10.5 con Xcode 5.

Vedi Come indirizzare Xcode a un vecchio SDK in modo che possa essere utilizzato come "SDK di base"? per dettagli su come configurarlo. Puoi usare il mio script fix-xcode per collegare tutto per te ogni volta che esegui l'aggiornamento.

L'unico trucco è ottenere i vecchi SDK. Se non li hai, devi generalmente scaricare le vecchie versioni di Xcode (ancora disponibili su developer.apple.com ), aprire il pacchetto di installazione e cercare l'SDK di cui hai bisogno.

Gli SDK sono disponibili nel pacchetto di installazione all'indirizzo:

Xcode.app/Contents/Developer/Platforms/


è necessario rimuovere l'SDK di iOS 7 durante l'archiviazione per assicurarsi che si compili con l'SDK di iOS 6?
ohayon,

6
Ciao. questo è vicino ma non abbastanza per me. i pulsanti sembrano iOS 6 ma il contenuto del controller di visualizzazione si sposta ancora dietro la barra di navigazione quando si utilizza un UINavigationController. qualche idea su come ottenere il comportamento di iOS 6 anche per quello?
matt bezark,

2
No; lo vedrai solo sul dispositivo. Non esiste una modalità di compatibilità iOS 6 nel simulatore iOS 7. Se vuoi vedere come appare nel simulatore, prova sul simulatore iOS 6.
Rob Napier,

1
Posso inviare l'app costruita con Xcode 5 e iOS 6 SDK all'App Store?
hujunfeng,

1
Finché l'iPad 1 è ancora supportato, puoi sempre presumere che Apple accetterà iOS 5.X. Non può essere aggiornato.
ahwulf

60

Stavo anche riscontrando lo stesso problema quando ho aggiornato a xcode 5 rimosso vecchio sdk. Ma ho preso la copia del vecchio SDK da un altro computer e lo stesso è possibile scaricare dal seguente link.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com account test test@yopmail.com/test)

Ci sono 2 modi con cui lavorare.

1) Decomprimi e incolla questa cartella in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs e riavvia il codice x.

Ma questo potrebbe di nuovo rimosso da Xcode se aggiorni xcode.

2) Un altro modo è decomprimere e incollare dove vuoi e andare su /Applicazioni/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs e creare un collegamento simbolico qui, in modo che l'SDK rimanga lo stesso anche se aggiorni l'Xcode.

Un'altra modifica che ho apportato, Build Setting> Architectures> standard (non 64), quindi elenca tutte le versioni di Deployment Target

Non è necessario scaricare lo zip se si desidera modificare solo la destinazione di distribuzione.

Ecco alcuni screenshot. inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


2
come e dove hai scaricato questo ios6.1 sdk? Sto cercando iOS 5 sdk per funzionare con il mio Xcode 5. Puoi caricarlo o indicarmi dove posso scaricarlo da solo. Grazie
Sam B,

In realtà, sto avendo anche il vecchio sistema. quindi l'ho preso da un vecchio xcode. Lo stesso che ho provato per ios sdk 5 ma non molto necessario non ho provato a tirarlo fuori. Inoltre, se questa risposta sembra buona, apprezzo il tuo feedback in termini di + o -. Grazie.
AvtarSingh Suchariya,

1
Ehi, Avtar, ho scaricato il tuo ios6 zip, decompresso sotto il percorso della posizione che hai elencato, chiuso xcode 5 completamente, riavviato di nuovo e ancora vedo solo 7.0 come destinazione distribuibile nell'opzione a discesa. Suppongo che ci siano passaggi mancanti e ce n'è di più?
Sam B,

Lo stesso funziona per me. Solo una domanda, l'hai aggiunto nell'app stessa xcode o hai creato un link simbolico?
AvtarSingh Suchariya,

direttamente alla stessa app.
Sam B,

34

Sì, ho appena risolto il problema oggi.

  1. Trova il file SDK, come iPhoneOS6.1.sdk, nella directory Xcode precedente del tuo amico.
  2. Copia e inseriscilo nella directory Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

inserisci qui la descrizione dell'immagine

Quindi puoi scegliere l'SDK come di seguito:

inserisci qui la descrizione dell'immagine

Spero che questo ti aiuti.


2
Ho fatto lo stesso, ma la mia GUI delle app cambia e sembra la GUI di iOS 7. Ho scelto il simulatore di iPhone Retina (4 pollici a 64 bit) per eseguire l'app. Mi manca qualcos'altro dopo averlo fatto.
python,

20

Trova e scarica il vecchio SDK. Gli SDK precedenti sono disponibili qui .

Ho copiato la directory xcode.app come Xcode_4.6.3.app.

Ora puoi testare ed eseguire il debug in entrambe le versioni di xcode. Devi eseguirli dalle cartelle corrispondenti o creare collegamenti sul desktop. Quando si crea dalla riga di comando, indicare il parametro come iPhoneOS6.1anzichéiPhoneOS7.0

Questo ha funzionato perfettamente per me in Xcode5 e iOS.

Vai alla directory SDK di Xcode5. Di solito si trova a:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Aggiungi un collegamento simbolico al vecchio SDK in questo modo:

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk

O più precisamente da qualsiasi punto della riga di comando,

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

Possiamo usare questa opzione per testare la nostra app, ma probabilmente dopo il febbraio 2014, qualsiasi app creata con iOS 7 SDK precedente non sarà accettata nell'app store!
karim,

11

Puoi scaricare l'SDK precedente e installarlo

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

cartella. Esci + Accedi solo per assicurarti che le modifiche abbiano effetto e dovresti vedere il vecchio SDK nel tuo nuovo XCode


L'ho fatto (utilizzando il link per il download in una risposta precedente) e la scelta sdk di iOS 6.1 viene visualizzata in xcode 5 in Impostazioni build> Architetture> SDK di base. Tuttavia, quando costruisco ed eseguo sul simulatore iOS 7 (o dispositivo iOS 7), utilizza ancora i pulsanti UIKit di iOS 7 (non le versioni di iOS 6). Se qualcuno ha qualche suggerimento sul perché, sarei grato ....
Bill Patterson,

Se hai installato TimeMachine puoi aprire il percorso sopra (nel tipo di terminale: apri "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/") e ripristinare l'SDK iOS6.1 da lì .
avance,

11

Solo per aggiungere, puoi effettivamente scaricare vecchie versioni del simulatore con Xcode 5 stesso - basta andare alle preferenze e le troverai in Download:

inserisci qui la descrizione dell'immagine


Questo deve essere accaduto da quando xcode 5 è uscito dalla beta ed è ora una versione generale. Buono a sapersi, grazie Smikey
Tony,

5
@Manni Questo non è lo stesso della compilazione con la vecchia API. Stai costruendo utilizzando la nuova API per iOS 6.
oligofren,

Queste opzioni non appaiono per impostazione predefinita su Xcode 6 anche se hai impostato una piattaforma di destinazione precedente.
GilesDMiddleton,

10
  • Scarica Xcode 4.6.x dall'Apple Dev Center: https://developer.apple.com/downloads/index.action
  • Crea una cartella chiamata Xcode4 nella cartella Applicazioni e trascina lì il dmg scaricato.
  • Apri una finestra terminale

    $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • Ti verrà richiesto di inserire una password poiché ti trovi all'interno di una cartella di sistema

  • Apri Xcode 5 e ora dovresti vedere entrambi gli SDK

10

Solo per me la soluzione più semplice:

  1. Individua un SDK più vecchio, ad esempio "iPhoneOS6.1 sdk", ad esempio in una versione precedente di xcode. In caso contrario, puoi scaricarlo dal server Apple Developer a questo indirizzo: https://developer.apple.com/downloads/index.action?name=Xcode Quando apri xcode.dmg puoi trovarlo aprendo Xcode.app (tasto destro e "mostra contenuto") e vai su Sommario / Sviluppatore / Piattaforme / iPhoneOS.platform / Sviluppatore / SDKs / iPhoneOS6.1 sdk inserisci qui la descrizione dell'immagine
  2. Semplice Copia la cartella iPhoneOS6.X sdk e incollala nel tuo xcode.app
    • fare clic con il tasto destro su xcode.app nella cartella Applicazioni.
    • Vai a Sommario / Sviluppatore / Piattaforme / iPhoneOS.platform / Sviluppatore / SDK /
    • Basta incollare qui.

inserisci qui la descrizione dell'immagine

  1. Chiudi l'app xcode e riaprila di nuovo.

Per testare un'app in iOS 6 sul simulatore: - Basta scegliere iOS 6.0 nel tuo sheme attivo. inserisci qui la descrizione dell'immagine

Per creare la tua app in iOS 6, quindi il design della tua app sarà il design più vecchio su un iPhone con iOS 7 anche: - Scegli iOS6.1 in Target - SDK di base

inserisci qui la descrizione dell'immagine

Nota: quando modifichi l'SDK di base nei tuoi target, iOS 7.0 non sarà più disponibile per la creazione sul simulatore!


9

Può farlo , ma non è davvero necessario

Come fare questo

Jason Lee ha ottenuto la risposta. Durante l'installazione di xCode ho preferito conservare le installazioni precedenti piuttosto che sostituirle. Quindi li ho nella mia cartella di installazione

inserisci qui la descrizione dell'immagine

Quindi /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKscontiene diversi sdk. (Sostituisci Xcode.app con il numero corretto) copia gli SDK precedenti

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Ecco la mia cartella dopo averne copiata una.

inserisci qui la descrizione dell'immagine

Ora riavvia xCode e puoi impostare le versioni precedenti di sdk come sdk di base.

Perché non è necessario

Riferendosi ad Apple Documentaion

Per utilizzare un determinato SDK per un progetto Xcode, effettuare due selezioni nelle impostazioni di creazione del progetto.

  1. Scegli una destinazione di distribuzione .

    Questo identifica la prima versione del sistema operativo su cui è possibile eseguire il software.

  2. Scegli un SDK di base

    Il software può utilizzare le funzioni disponibili nelle versioni del sistema operativo fino a quella corrispondente all'SDK di base incluso. Per impostazione predefinita, Xcode imposta questo sul sistema operativo più recente supportato da Xcode.

La regola è Usa più recente come SDK di base e imposta la destinazione di distribuzione sull'app versione minima che si suppone debba essere eseguita

Ad esempio è possibile utilizzare iOS 7 come SDK di base e impostare iOS 6 come destinazione di distribuzione. Esegui su simulatore iOS 6 per testare come funziona su iOS 6. Installa il simulatore se non disponibile con l'elenco dei simulatori.

inserisci qui la descrizione dell'immagine

Inoltre, è possibile utilizzare incondizionatamente le funzionalità fino a iOS 6. E in via condizionale è possibile supportare nuove funzionalità di iOS 7 per i nuovi dispositivi aggiornati supportando le versioni precedenti.

Questo può essere fatto utilizzando classi debolmente collegate , debolmente collegate metodi , funzioni e simboli

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

Collegamento debole

Supponiamo che in Xcode imposti la destinazione di distribuzione (versione minima richiesta) su iOS6 e l'SDK di destinazione (versione massima consentita) su iOS7. Durante la compilazione, il compilatore collegava debolmente tutte le interfacce introdotte in iOS7, collegando fortemente le interfacce precedenti. Ciò consentirebbe alla tua applicazione di continuare a funzionare su iOS6 ma trarrebbe comunque vantaggio dalle nuove funzionalità quando saranno disponibili.


4

Anche le altre risposte qui sono corrette, ma trovo che i seguenti passaggi siano i più semplici:

Basta scaricare Xcode 4.6.3 dal collegamento dev center che dice "Cerchi una versione precedente di Xcode?" (al momento punta qui ) e monta il dmg.

Quindi nel terminale, copia i file SDK su:

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

Infine, riavvia Xcode e il gioco è fatto.


3

La mia app è stata trasferita senza problemi a Xcode 5 perché può ancora essere costruita con il target di distribuzione iOS originale impostato nel progetto (5.1 nel mio caso). Se il nuovo SDK non causa problemi insormontabili, perché non costruirlo usando? Sicuramente ci sono molti miglioramenti sotto il cofano.

Ad esempio, preferirò di gran lunga usare Xcode 5 anziché Xcode 4.6.3. Perché? Prenderò molta più durata della batteria perché lo scorrimento dell'interfaccia utente delle aree di testo / codice in Xcode 5 non mastica più un intero thread della CPU.


Ragioni per non farlo - Xcode 5 è piuttosto instabile al momento. Schiantarsi ogni ora per me. Anche alcuni strani problemi di posizione e problemi di colore in alcune viste (anche se non c'è molto lavoro da risolvere)
Nick H247,

2

Collegare l'SDK 6.1 in Xcode 5 come descritto nelle altre risposte è un passo. Tuttavia, ciò non risolve ancora il problema che vengono eseguiti su iOS 7 nuovi elementi dell'interfaccia utente, i controller di visualizzazione sono realizzati a grandezza naturale ecc.

Come descritto in questa risposta , è anche necessario cambiare l'interfaccia utente in modalità legacy su iOS 7:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

Attenzione: questa è una chiave non documentata e non consigliata per le build di App Store!

Inoltre, nella mia esperienza durante i test sul dispositivo ho scoperto che funziona solo la seconda volta che lancio l'app anche se sto eseguendo il codice abbastanza presto nel lancio dell'app, in +[AppDelegate initialize] . Inoltre ci sono sottili differenze rispetto a una versione costruita con Xcode 4.6. Ad esempio, le barre di navigazione trasparenti si comportano diversamente (facendo sì che la vista sia a grandezza naturale).

Tuttavia, poiché Xcode 4.6.3 si arresta in modo anomalo su Mavericks (almeno per me, vedi rdar: // 15318883 ), questa è almeno una soluzione per continuare a utilizzare Xcode 5 per il debug.


1

Ho scaricato XCode 4 e ho preso iOS 6.1 SDK da esso a XCode 5 come descritto in altre risposte. Quindi ho anche installato iOS 6.1 Simulator (era disponibile nelle preferenze). Ho anche cambiato l'SDK di base su iOS 6.1 nelle impostazioni del progetto.

Dopo tutte queste manipolazioni il progetto con 6.1 base sdk viene eseguito in modalità comp abilità in iOS 7 Simulator.


1

Dal 1 ° febbraio Apple rifiuterà l'app sviluppata solo per iOS6 o versioni precedenti. Ecco anche la comunicazione ufficiale di Apple. Meglio iniziare a costruire per iOS7.

Per chiarire la mia affermazione: se costruisci per iOS6 o versioni precedenti, apple rifiuterà la tua app. Se costruisci per iOS7 e diminuisci tutto, questo significa:

  1. devi usare xcode5
  2. dovresti distribuire almeno su iOS7.

Il contenuto dell'email di Apple mi è abbastanza chiaro

"Assicurati che le tue app funzionino perfettamente con le tecnologie innovative di iOS 7. A partire dal 1 ° febbraio, le nuove app e gli aggiornamenti delle app inviati all'App Store devono essere realizzati con Xcode 5 e iOS 7 SDK."


Sì, ma iOS 6 SDK funziona bene anche con iOS 7. Alcune app sono davvero difficili da cambiare.
Aniruddh Joshi,

Credo che tu sia errato. Apple richiede (a) Costruito con l'ultimo Xcode 5 e (b) ottimizzato per iOS 7. Vedi il mio commento sulla risposta di Rob Napier per i collegamenti.
Basil Bourque,

Alcuni di noi sviluppano per la distribuzione Enterprise e devono rivolgersi a SDK (e dispositivi) meno recenti. Le app aziendali non passano attraverso il processo di revisione Apple e / o App Store e questa discussione è abbastanza utile, rimane pertinente e continuerà ad essere rilevante in futuro. Capisco la tua prospettiva, ma non è l'unica.
Kevin OMara,

Hai perfettamente ragione !!! Non ho pensato alla distribuzione aziendale. Ma non dimenticare che puoi ancora distribuire su iOS6 con il nuovo Xcode semplicemente impostando la destinazione di distribuzione, senza preoccuparti dell'ottimizzazione di iOS7 e del processo di revisione.
Andrea,

0

Al momento ho installato Xcode 4.6.3 e 5.0. Ho usato il seguente script bash per collegare 5.0 agli SDK nella vecchia versione:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

Devi solo fornire il percorso per il .app:

./xcode.sh /Applications/Xcode-463.app

Si noti che l'aggiornamento a 5.1 ha rimosso il mio SDK 7.0.x e lo ha sostituito con l'SDK 7.1. Ho una vecchia installazione di Xcode5-DP6cui sono stato in grado di recuperare 7.0.x, ma questo è un buon promemoria per eseguire il backup delle directory SDK (o rinominare completamente l'app) prima di aggiornare o installare la versione Xcode più recente.
Wayne,
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.