Vous pouvez faire cela, mais il nécessite quelques petites Xcode piratage, et quelques sacrifices. En fonction de ce que vous entendez par "support iOS 6", cela peut ou peut ne pas être suffisant pour vous. Si vous voulez que votre application de fonctionner sur iOS 6, alors cela devrait fonctionner. Si vous avez également besoin de votre app pour intégrer de nouvelles fonctionnalités d'iOS 6, alors il ne sera pas.
(Note pour les autres qui n'ont pas de problème d'utilisation de plusieurs versions de Xcode: cette question semblable a des réponses qui ne vous permettent également l'utilisation du nouvel iOS 6 Api et de cibler directement armv7s)
Voir les instructions de base sur chpwn blog ici (mais lisez le reste de cette ci-dessous, aussi!)
Fondamentalement, vous pouvez utiliser Xcode 4.5 à construire pour iOS 4 et au-dessus, mais vous ne pouvez pas profiter de la nouvelle iOS 6 ne dispose d'. Donc, vous êtes vraiment des capacités pour iOS 4 et 5, et en supposant que l'application fonctionne parfaitement sur iOS 6 (qui devrait être vrai, mais vous aurez besoin de tester vous-même).
Vous devez copier le dossier SDK iOS 5
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.*.sdk
à partir d'une ancienne installation de Xcode (que vous aurez besoin de garder autour brièvement, ou réinstaller à un emplacement non standard). Vous allez ensuite définir les Déployer Cible dans vos Paramètres de génération sous iOS 4.0 (ou quel que soit minimale du système d'exploitation que vous voulez). Vous pouvez avoir besoin d'ouvrir l' project.pbxproj
le fichier dans un éditeur de texte pour définir manuellement:
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
Vous aurez aussi besoin de définir les Architectures armv6
et armv7
. Vous ne pouvez pas directement également cible armv7s
. Mais, cela ne signifie pas que votre application ne fonctionne pas sur iPhone 5. armv7
exécutables devrait fonctionner sur l'iPhone 5, tout simplement, sans optimisations ajoutée en armv7s
. C'est juste que la compatibilité ne fonctionne pas dans l'autre sens (par exemple, armv7
exécutables ne pas exécuter sur un armv6
iPhone 3G).
Il y a aussi une étape qui peut être nécessaire, c'est pas mentionné dans chpwn blog. Vous pouvez obtenir ces mises en garde (qui sont vraiment des erreurs, parce que Xcode ne génère pas de votre exécutable correctement):
avertissement: pas de règle pour traiter le fichier '$(PROJECT_DIR)/main.m' de type de code source.c.objc pour l'architecture armv6
Pour remédier à cela, vous aurez besoin de l'installation d'un custom Règle de génération pour votre cible, qui raconte Xcode pour utiliser LLVM GCC 4.2 pour générer armv6 code. Définir la règle pour les fichiers correspondant au modèle *.[mc]
:
Ce sera un autre compilateur que Xcode par défaut, et vous pouvez avoir besoin d'ajuster certains de la syntaxe de votre code Objective-C. Même si beaucoup de gens veulent faire de cette a probablement écrit leurs applications avant d'ARC, il est important de noter que LLVM gcc 4.2 ne prend pas en charge l'ARC.
Enfin, vous aurez probablement encore voir mises en garde de Xcode sur iOS déployer les cibles à moins de 4.3, et armv6
n'étant pas pris en charge. Ceux qui, je trouve, n'étaient pas des problèmes, et peut être ignorée:
L'exécution lipo -info
sur mon application exécutable après cela montre le résultat souhaité:
lipo -info MyAppName
Architectures in the fat file: MyAppName are: armv6 armv7