web-dev-qa-db-fra.com

Est-il possible d'installer iOS 6 SDK sur Xcode 5?

Xcode 5 possède une sous-fenêtre de préférences permettant de télécharger le simulateur iPhone 6.1. Toutefois, je ne trouve pas d’endroit permettant le téléchargement du SDK iOS 6. Il est donc impossible de définir le SDK actif sur iOS 6 lors du développement avec Xcode 5. Existe-t-il une solution permettant à Xcode 5 d’installer iOS 6 SDK?

MODIFIER:

Les solutions de contournement ne devraient plus être nécessaires maintenant que Xcode 5 est généralement disponible et vous permet de télécharger les versions précédentes du SDK. 

enter image description here

246
Tony

EDIT: à compter du 1er février 2014, Apple n'acceptera plus les applications antérieures à iOS7 à soumettre à App Store. Ainsi, même si cette technique fonctionne toujours, elle ne sera pas utile pour la plupart des lecteurs.


Oui c'est bon. Je construis toujours avec iOS 4.3 pour un projet (cela fait un moment que nous avons mis à jour; mais ils l'ont toujours accepté après la sortie d'iOS 6) et je construis actuellement 10.5 applications avec Xcode 5.

Voir Comment pointer Xcode vers un ancien SDK afin qu’il puisse être utilisé comme "SDK de base"? pour plus de détails sur la façon de le configurer. Vous pouvez utiliser mon script fix-xcode Pour tout lier pour vous à chaque mise à niveau.

La seule astuce consiste à récupérer les anciens SDK. Si vous ne les avez pas, vous devez généralement télécharger les anciennes versions de Xcode (toujours disponibles sur developer.Apple.com ), ouvrir le package d'installation et rechercher le SDK dont vous avez besoin.

Les kits de développement logiciel peuvent être trouvés dans le package d'installation à l'adresse:

Xcode.app/Contents/Developer/Platforms/

202
Rob Napier

J'exécutais également le même problème lorsque j'ai mis à jour xcode 5, il a supprimé l'ancien SDK. Mais je ai pris la copie de l'ancien SDK à partir d'un autre ordinateur et le même, vous pouvez télécharger à partir du lien suivant.

http://www.4shared.com/Zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com compte de test [email protected]/test)

Il y a 2 façons de travailler avec.

1) Décompressez et collez ce dossier dans /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs et redémarrez le xcode.

Mais cela pourrait à nouveau être supprimé par Xcode si vous mettez à jour xcode.

2) Vous pouvez également décompresser et coller où vous voulez et accéder à /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs et créer un lien symbolique ici, afin que le SDK reste identique même si vous mettez à jour le Xcode.

Une autre modification que j'ai apportée, Paramètre de construction> Architectures> standard (et non 64), répertorie donc toutes les versions de la cible de déploiement.

Il n'est pas nécessaire de télécharger le fichier Zip si vous souhaitez uniquement modifier la cible de déploiement.

Voici quelques captures d'écran.enter image description hereenter image description here

60

Oui, je viens de résoudre le problème aujourd'hui.

  1. Recherchez le fichier SDK, tel que iPhoneOS6.1.sdk, dans votre ancien répertoire Xcode, celui de votre ou vos amis.
  2. Copiez-le et placez-le dans le répertoire Xcode 5: /Applications/Xcode.app/Contenu/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

enter image description here

Ensuite, vous pouvez choisir le SDK comme ci-dessous:

enter image description here

J'espère que cela vous aide.

34
Jason Lee

Trouvez et téléchargez l'ancien SDK. Les anciens SDK se trouvent ici .

J'ai copié le répertoire xcode.app en tant que Xcode_4.6.3.app.

Vous pouvez maintenant tester et déboguer dans les deux versions de xcode. Vous devez les exécuter à partir des dossiers correspondants ou créer des raccourcis sur votre bureau. Lors de la génération à partir de la ligne de commande, indiquez le paramètre iPhoneOS6.1 au lieu de iPhoneOS7.0.

Cela a très bien fonctionné pour moi sous Xcode5 et iOS. 

Allez dans le répertoire SDK de Xcode5. Il est généralement situé à:

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

Ajoutez un lien symbolique à l'ancien SDK comme ceci: 

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

Ou plus précisément de n'importe où dans la ligne de commande,

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
20
karim

Vous pouvez télécharger l’ancien SDK et l’installer dans 

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

dossier. Déconnexion + Connexion juste pour vous assurer que les modifications prennent effet et que vous devriez voir l'ancien SDK dans votre nouveau XCode

11
unspokenblabber

Pour ajouter, vous pouvez réellement télécharger les anciennes versions du simulateur avec Xcode 5 lui-même - il suffit d’aller dans les préférences et vous les trouverez dans Téléchargements: 

enter image description here

11
Smikey
  • Téléchargez Xcode 4.6.x à partir du Centre de développement Apple: https://developer.Apple.com/downloads/index.action
  • Créez un dossier appelé Xcode4 dans le dossier Applications et faites-y glisser le fichier téléchargé.
  • Ouvrir une fenêtre de terminal

    $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/
    
  • Vous serez invité à entrer un mot de passe puisque vous êtes dans un dossier système.

  • Ouvrez Xcode 5 et vous devriez maintenant voir les deux SDK
10
autremoi

Juste pour moi la solution la plus simple:

  1. Recherchez un SDK plus ancien, comme par exemple "iPhoneOS6.1 sdk" dans une version antérieure de xcode, par exemple . Si vous ne l'avez pas déjà fait, vous pouvez le télécharger depuis le serveur Apple Developer à l'adresse suivante: https: //developer.Apple.com/downloads/index.action?name=Xcode Lorsque vous ouvrez le fichier xcode.dmg, vous pouvez le trouver en ouvrant le fichier Xcode.app (clic droit et "afficher le contenu") et allez dans Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1 sdk enter image description here
  2. Simple Copiez le dossier iPhoneOS6.X sdk et collez-le dans votre xcode.app
    • faites un clic droit sur votre xcode.app dans le dossier Applications.
    • Aller au contenu/Développeur/Plateformes/iPhoneOS.platform/Développeur/SDKs /
    • Il suffit de coller ici.

enter image description here

  1. Fermez votre application xcode et rouvrez-la à nouveau.

Pour tester une application dans iOS 6 sur votre simulateur: - Il suffit de choisir iOS 6.0 dans votre forum actif .enter image description here

Pour créer votre application dans iOS 6, le design de votre application sera donc le même que sur l'ancien iPhone avec iOS 7: - Choisissez iOS6.1 dans Cibles - SDK de base

enter image description here

Remarque: lorsque vous modifiez le SDK de base dans vos cibles, iOS 7.0 ne sera plus disponible pour la construction sur le simulateur!

10
Daniel C.

Peut le faire, mais pas vraiment nécessaire

Comment faire ça

Jason Lee a eu la réponse. Lors de l'installation de xCode, j'ai préféré conserver les installations précédentes plutôt que de les remplacer. J'ai donc ceux-ci dans mon dossier d'installation

enter image description here

Donc, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs contient différents sdks. (Remplacez Xcode.app par le numéro correct) Copiez les sdks précédents dans 

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

Voici mon dossier après en avoir copié un.

enter image description here

Maintenant, redémarrez xCode et vous pouvez définir les versions précédentes de sdks en tant que sdk de base.

Pourquoi ce n'est pas nécessaire

Référence à Apple Documentaion

Pour utiliser un SDK particulier pour un projet Xcode, effectuez deux sélections dans les paramètres de construction de votre projet.

  1. Choisissez une cible de déploiement.

    Ceci identifie la version la plus ancienne du système d'exploitation sur laquelle votre logiciel peut s'exécuter.

  2. Choisir un SDK de base

    Votre logiciel peut utiliser les fonctionnalités disponibles dans les versions de système d'exploitation, y compris celle correspondant au SDK de base. Par défaut, Xcode définit ceci sur le dernier système d'exploitation pris en charge par Xcode.

La règle est Utilisation la plus récente en tant que SDK de base et définissez la cible de déploiement sur l'application de version minimale censée s'exécuter.

Par exemple, vous pouvez utiliser iOS 7 comme sdk de base et définir iOS 6 comme cible de déploiement. Exécutez-le sur un simulateur iOS 6 pour tester son fonctionnement sur iOS 6. Installez le simulateur s'il n'est pas disponible avec une liste de simulateurs.

enter image description here

De plus, vous pouvez utiliser inconditionnellement les fonctionnalités jusqu’à iOS 6. Et, conditionnellement, vous pouvez prendre en charge les nouvelles fonctionnalités d’IOS 7 pour les nouveaux appareils mis à jour tout en prenant en charge les versions précédentes.

Cela peut être fait en utilisant classes faiblement liées, méthodes faiblement liées, fonctions et symboles.

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

Lien faible

Supposons que dans Xcode, vous définissiez la cible de déploiement (version minimale requise) sur iOS6 et le SDK cible (version autorisée maximale) sur iOS7. Lors de la compilation, le compilateur liera faiblement les interfaces introduites dans iOS7 tout en liant fortement les interfaces précédentes. Cela permettrait à votre application de continuer à s'exécuter sur iOS6 tout en tirant parti des nouvelles fonctionnalités, le cas échéant.

9
MadNik

Les autres réponses ici sont également correctes, mais je trouve que les étapes suivantes sont les plus faciles:

Il suffit de télécharger Xcode 4.6.3 à partir du lien du centre de développement indiquant "Vous recherchez une ancienne version de Xcode?" (pointe actuellement ici ) et montez le dmg.

Ensuite, dans le terminal, copiez les fichiers du SDK sur:

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/

Enfin, relancez Xcode et vous avez terminé.

4
nioq

Mon application a été transférée de manière transparente vers Xcode 5, car elle peut toujours être construite avec la cible de déploiement iOS d'origine que vous avez définie dans le projet (5.1 dans mon cas). Si le nouveau SDK ne pose pas de problème insurmontable, pourquoi ne pas créer en l’utilisant? Il y a sûrement beaucoup d'améliorations sous le capot. 

Par exemple, je préférerais de beaucoup utiliser Xcode 5 au lieu de Xcode 4.6.3. Pourquoi? La durée de vie de la batterie sera beaucoup plus longue, car le défilement par l'interface utilisateur des zones de texte/code dans Xcode 5 ne détruit plus un thread complet du processeur.

3
Steven Lu

Lier le Kit de développement logiciel (SDK) 6.1 à Xcode 5 comme décrit dans les autres réponses constitue une étape. Cependant, cela ne résout toujours pas le problème suivant: sous iOS 7, les nouveaux éléments de l'interface utilisateur sont pris, les contrôleurs de vue sont agrandis, etc.

Comme décrit dans cette réponse , il est également nécessaire de basculer l'interface utilisateur en mode hérité sur iOS 7:

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

Attention: il s'agit d'une clé non documentée et déconseillée pour les versions de l'App Store!

De plus, lors de mes tests sur l'appareil, j'ai constaté qu'il ne fonctionne que la deuxième fois que je lance l'application, même si j'exécute le code assez tôt lors du lancement de l'application, en +[AppDelegate initialize]. Il existe également des différences subtiles avec une version construite avec Xcode 4.6. Par exemple, les barres de navigation transparentes se comportent différemment (ce qui fait que la vue est en taille réelle).

Cependant, depuis que Xcode 4.6.3 se bloque sur Mavericks (du moins pour moi, voir rdar: // 15318883 ), c’est au moins une solution pour continuer à utiliser Xcode 5 pour le débogage.

2
Ortwin Gentz

À partir du 1er février, Apple rejettera l'application conçue uniquement pour iOS6 ou version ultérieure. Voici également le fonctionnaire communication de Apple. Mieux vaut commencer à construire pour iOS7. 

Pour clarifier ma déclaration: si vous construisez pour iOS6 ou une version inférieure, Apple rejettera votre application . Si vous créez pour iOS7 ET une version inférieure, tout va bien, cela signifie: 

  1. vous devez utiliser xcode5
  2. vous devez au moins déployer sur iOS7.

Le contenu de l'e-mail d'Apple est assez clair pour moi 

"Assurez-vous que vos applications fonctionnent parfaitement avec les technologies innovantes Sous iOS 7. À compter du 1er février, les nouvelles applications et mises à jour d'applications soumises à L'App Store doit être construit avec Xcode 5 et iOS 7 SDK."

1
Andrea

J'ai téléchargé XCode 4 et pris iOS 6.1 SDK de celui-ci vers XCode 5, comme décrit dans d'autres réponses . Ensuite, j'ai également installé iOS 6.1 Simulator (disponible dans les préférences). J'ai également basculé le SDK de base vers iOS 6.1 dans les paramètres du projet.

Après toutes ces manipulations, le projet avec 6.1 base sdk s'exécute en mode compilateur dans iOS 7 Simulator.

1
OneSman7

J'ai actuellement Xcode 4.6.3 et 5.0 installé. J'ai utilisé le script bash suivant pour relier la version 5.0 aux kits de développement logiciel de l'ancienne version:

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;

Il vous suffit de fournir le chemin d'accès à l'application .app:

./xcode.sh /Applications/Xcode-463.app
0
Wayne Burkett