web-dev-qa-db-fra.com

Xcode 8 avec un SDK de base plus ancien

Je rencontre des problèmes de compatibilité pour certains frameworks externes que j'utilise dans mon projet. Existe-t-il un moyen de changer le SDK de base sur Xcode 8? Actuellement, dans les paramètres du projet, ne me montre que le dernier SDK.

J'ai essayé de copier l'ancien SDK d'une autre version de Xcode mais cela ne fonctionnait pas:

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

26
tonik12

À partir de Xcode 7.3, en plus de la copie dans le SDK, vous devez également éditer un certain fichier Info.plist, comme décrit ici pour macOS dans le message de agx . On dirait qu’il existe un fichier similaire pour iOS, à

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist

Essayez de remplacer la valeur de MinimumSDKVersion de 10.0 par la version de SDK de votre choix.

Je n'ai pas essayé cela avec iOS, mais cette solution de contournement m'a permis de créer une cible macOS avec macOS 10.6 à l'aide de Xcode 8.0 (8A218a) (le "GM").

METTRE À JOUR

Le hack décrit ci-dessus a cessé de fonctionner pour moi dans Xcode 9. Si vous souhaitez utiliser Xcode 9+, consultez ma réponse la plus récente datée du 22 novembre 2017. 

31
Jerry Krinock

Ma réponse initiale, bien que cela fonctionne avec Xcode 8, pour une raison étrange qui ne mérite pas d'être expliquée, ne fonctionne plus avec Xcode 9 sur l'ancien projet d'un client particulier. J'ai donc utilisé un flux de travail alternatif qui n'est vraiment pas trop mauvais.

Pour travailler sur ce projet, je l'ouvre dans les deux _ l'ancien Xcode, qui peut le construire avec le SDK requis, ainsi que dans un Xcode récent. Je mets l'ancienne fenêtre Xcode en arrière-plan et fais mon travail dans le Xcode récent. Lorsque je suis prêt à tester les modifications, je fais un Fichier> Tout enregistrer ( S ), puis je passe à l'ancien Xcode et à Construction. _ ( B ). Lorsque la construction est terminée, je repasse au Xcode récent et à Produit> Exécuter l'action> Exécution sans construction ( R ). Le format de fichier dSYM n'ayant pas changé, les points d'arrêt fonctionnent comme prévu.

Les avantages sont qu'aucun piratage de Xcode n'est requis, et la seule chose dont je dois me souvenir à propos de l'ancien Xcode (Xcode 3 dans mon cas) est, heureusement: B .

Un petit avertissement: dans la cible de ce projet particulier, dans Paramètres de construction, il comporte un chemin d'accès aux produits de génération} personnalisé. Ceci est typique de la façon dont les applications Mac ont été construites il y a des années. Pour vous assurer que vos deux Xcodes fonctionnent avec le même produit, si vos anciens et récents Xcodes chevauchent la version qui a modifié la valeur par défaut Build Products Path, vous devrez peut-être définir Build Products Path. _.

Le flux de travail pourrait probablement être rendu encore plus facile en écrivant les outils en ligne de commande xcodebuild et xcode-select, mais cela suffit. L'annonce faite par Apple lors de la WWDC de cette année concernant la disparition de la prise en charge des applications Mac 32 bits au cours des deux prochaines années a forcé mon client à prendre des décisions difficiles.

5
Jerry Krinock

Il vous suffit de modifier les paramètres "Cible de déploiement". Vous utilisez essentiellement le dernier SDK disponible comme SDK de base, mais sélectionnez une version cible d'OS X . Cela dépend bien sûr de la raison pour laquelle vous souhaitez utiliser un SDK plus ancien?

0
walteronassis