web-dev-qa-db-fra.com

Installez Xcode 3.2.3 avec le SDK iPhone 4, obtenez "Base SDK manquante", impossible de voir les autres SDK

J'ai créé ce wiki de communauté pour lier plusieurs autres questions/réponses que j'ai vues ici sur SO. Si vous êtes ici, vous avez probablement installé la version finale de Xcode 3.2.3 avec iPhone SDK 4 ( lien de téléchargement , reg reqd), puis vous avez rencontré l'un de ces problèmes, ou les deux:

  • Dans votre projet iPhone Xcode qui fonctionnait auparavant, vous obtenez "Base SDK manquant" quelque part. Quelque chose comme ça:

    Ruh-roh!

  • Dans une observation connexe, mais plus générale, aucune des panoplies précédemment disponibles de choix de SDK de périphérique ou de simulateur (par exemple, 3.0, 3.1, 3.1.3, ...) n’est disponible là où vous les utilisiez auparavant.

80
Clay Bridges

Vue d'ensemble

Je vais expliquer pourquoi cela se produit, puis comment résoudre le problème spécifique "Base SDK manquant". Vous pouvez aller directement au bas pour trouver le correctif, bien que je vous recommande de lire tout cela. Je recommande également l'excellent take de John Muchow sur cette question.

Si vous êtes spécifiquement intéressé par la mise à niveau Xcode 3.2.4, qui pose un problème étroitement lié, vous pouvez souhaiter conférer ici .

Un SDK pour les gouverner tous

Voici le problème: la version 4.0 du SDK est désormais la seule à autoriser la soumission d'applications nouvelles ou mises à jour pour iPhone uniquement. C’est directement à partir de la liste de contrôle d’Apple liste de contrôle de préparation d’iOS 4 (demande régulière):

Toutes les nouvelles applications et mises à jour d'applications existantes doivent être créées avec iPhone SDK 4. Veuillez noter que l'App Store ne prendra plus en charge les applications qui ciblent iOS 2.x.

Je suppose que les applications universelles et pour iPad devraient utiliser le SDK 3.2. C'est pourquoi 4.0 & 3.2 sont vos seuls choix pour les SDK.

C’est aussi la raison pour laquelle votre projet est maintenant interrompu, car le SDK sur lequel il était précédemment mappé est obsolète , gones-ville.

(Mais) 3 est un nombre magique

Se détendre. Vous pouvez toujours cibler les appareils exécutant iPhone OS 3.0 (mais pas plus bas). Le SDK que vous utilisez pour compiler ne limite pas - vers le bas - quelle version d'iOS vous pouvez programmer ou prendre en charge. Une fois que vous avez corrigé les éléments de votre projet, etc. (cf. section suivante), vous pouvez définir "Cible de déploiement iPhone OS" sur une version iOS inférieure. Pour un aperçu rapide de la procédure à suivre, cf. étape 7 de la section suivante.

Notez que vous entrez maintenant dans un terrain difficile. Votre compilateur Xcode 3.2.3 habituel n'appliquera plus votre conformité aux appels 3.0 uniquement, ni de simulateur pour ceux-ci. Et si vous souhaitez prendre en charge les fonctionnalités 4.0, vous devrez créer du code conditionnel pour éviter les plantages sur les périphériques 3.0. Amusement.

Vous pouvez toujours télécharger (chez Apple!) Et installer une version précédente de Xcode ou un SDK (cf. ici ). Oui, vous pouvez installer plusieurs versions de Xcode dans des répertoires différents, c’est-à-dire ne placer qu’une version dans/Developer. Vous pouvez utiliser l'ancien Xcode pour tester la conformité de votre application par rapport à un SDK 3.x, en déplaçant le travail acharné vers un compilateur sophistiqué et un simulateur. Mais vous ne pouvez plus utiliser les produits des SDK précédents pour les soumettre à l'App Store.

FWIW, je prévois de faire cette vérification avant d’expédier.

Dans quel état est ma condition

Matt Gallagher a publié un article sur Cocoa with Love dans la version du code conditionnel intitulé "Conseils et astuces pour le code conditionnel iOS3, iOS3.2 et iOS4" . Si vous envisagez d'utiliser des fonctionnalités 4.0 de manière conditionnelle, il est fortement recommandé de vérifier.

Correction de "Base SDK manquant"

  1. Chargez votre projet
  2. Dans le menu, sélectionnez Projet> Modifier les paramètres du projet ...
  3. Sous Architecture> Kit de développement logiciel de base, choisissez l'une des options de périphérique disponibles: iPhone 3.2 ou iPhone 4.0. Si vous êtes uniquement iPhone, 4.0 est le chemin à parcourir.
  4. Fermez cette fenêtre.
  5. Dans le menu, sélectionnez Projet> Modifier la cible active "Votre objectif".
  6. Sous Architecture> Kit de développement logiciel de base, choisissez l'une des options de périphérique ou de simulateur disponibles: iPhone 3.2 ou iPhone 4.0.
  7. Si vous souhaitez cibler des versions iOS antérieures, sélectionnez dans la même fenêtre, sous Déploiement> Cible de déploiement iPhone OS, la version la plus basse que vous souhaitez prendre en charge. Notez que la prise en charge des versions 2.x via l'App Store est obsolète. Voir la citation "Liste de contrôle de l'état de préparation" ci-dessus.

Emplacement du SDK de base pour Xcode 4 et supérieur

Suivez les étapes ci-dessus, mais pour l'étape 2, cliquez sur ce qui suit:

  • Sélectionnez le navigateur de projet à l'aide de l'icône de dossier située à gauche de la barre latérale du navigateur.
  • Sélectionnez le projet qui sera en haut de cette vue.
  • La configuration du projet apparaîtra dans le panneau de l'éditeur principal; sélectionnez "Paramètres de construction" en haut et ci-dessous sera la section "Architecture".

 Project navigator Build Settings

(Cette réponse est une version légèrement adaptée de Sherman Lo 's answer )

Addenda

Vous trouverez également des informations plus détaillées sur ce sujet dans la première réponse à cette question question . Il y a aussi quelques informations utiles ici .

165
Clay Bridges

Si vous corrigez vos paramètres et que vous voyez toujours "Base SDK manquant" et que vous ne pouvez pas créer, rechargez votre projet. J'ai quitté Xcode, mais fermer et rouvrir fonctionnerait probablement aussi.

8
John Stephen

Les liens fournis par Clay Bridges pour télécharger les versions antérieures de SDK pour Xcode et iPhone OS ne fonctionnent pas. Cependant, la modification de ces liens pour remplacer la première instance de "iphone" par "ios" fonctionne, du moins pour le lien Snow Leopard (en cours de téléchargement).

Les liens corrects, ainsi que des informations sur l'installation d'anciens SDK iOS dans de nouvelles installations Xcode, proviennent de cette entrée de blog de Chris Fletcher: comment installer iphone sdk 2.0.3.1 pour xcode 3.2 Fortement recommandé!

5
SteveCaine

J'ai eu ce même problème aussi. J'ai également eu un problème lors de l'utilisation de plusieurs cibles pour revenir à un xcode cible précédent. J'avais oublié de changer certaines choses, comme passer d'une cible iOS à une cible MacOS.

option/alt en cliquant sur la liste déroulante

a révélé des options supplémentaires très utiles.

3
user245019