2009-12-17 6 views
10

Je suis un peu confus au sujet de la construction d'une application pour l'App Store et pour la bonne version du système d'exploitation SDK &. J'ai soumis mon application à l'App Store, et dans l'écran Détails de l'application de connexion iTunes, il dit:iPhone: OS minimum, cible de déploiement et base/SDK actif

« OS minimum: 3.1.2 »

Je n'ai vu aucune des applications sur le App Store qui ont 3.1.2 comme le min OS, ils disent tous 3.0. J'ai lu plusieurs choses ici avant de le construire et j'ai cru comprendre tout!

Fondamentalement, mon application n'utilise pas de code qui n'existe que dans la version 3.0, donc je voudrais que le système d'exploitation minimum soit 3.0. Mes paramètres de construction sont les suivants:

Infos cible

  • SDK de base: iPhone périphérique 3.0
  • iPhone OS cible de déploiement: iPhone OS 3,0

Xcode fenêtre principale

  • A ctive SDK: iPhone Device 3.1.2

J'ai entendu parler de la mise à jour d'une version minimale du système d'exploitation dans Info.plist, mais je n'ai rien de tel dans le mien.

Je construis l'application exactement comme ça et l'ai soumise. Les paramètres de mon application sont-ils corrects? Mon application affichera-t-elle 3.0 dans l'App Store ou 3.1.2? Je suis un peu incertain quant à la raison pour laquelle vous définissez le SDK actif à la dernière version (3.1.2) lorsque vous souhaitez cibler les périphériques 3.0, 3.1 & 3.12, mais c'est ce que j'ai lu!

Des conseils d'aide sont grandement appréciés!

+0

Vérifiez cette réponse à une question similaire: http://stackoverflow.com/questions/380138/which-iphone-active-sdk-version-should-i -use/385125 # 385125 –

Répondre

25

D'accord, je suis parvenu à comprendre après beaucoup de lecture!

Fondamentalement, le SDK actif est juste un remplacement de temps de construction du SDK de base. Par défaut, lorsque le SDK de base le modifie, la cible de déploiement est automatiquement modifiée sur le même système d'exploitation que le SDK. Donc, quand je voulais construire l'application sous le SDK 3.1.2, mais l'ai exécuté sur le système d'exploitation 3.0, j'ai changé le SDK actif en 3.1.2, mais cela avait automatiquement changé le système d'exploitation minimum (cible de déploiement). J'ai vu cela en regardant le fichier Info.plist dans le contenu du paquet dans mon fichier .app. Par conséquent, la meilleure chose à faire est de configurer le SDK de base sur le dernier SDK (actuellement 3.1.2), puis de définir manuellement la cible de déploiement sur le système d'exploitation 3.0. Une fois que les 2 sont différents, ils ne changeront plus automatiquement. Toutefois, cela signifie que votre application peut être installée sur un périphérique 3.0 doté de SDK 3.0, 3.1 ou 3.1.2. Par conséquent, les frameworks, méthodes ou propriétés que vous utilisez et qui ne sont disponibles que dans les SDK supérieurs à 3.0, vous devrez utiliser conditionally.Lorsque vous développez l'application, assurez-vous que cette cible active est définie de la même manière que votre SDK de base, par exemple,

Dispositif 3.1.2. Mais n'oubliez pas de compiler votre application sous Device 3.0, Device 3.1 et Device 3.1.2 juste pour vérifier les avertissements du compilateur. Cela garantira que vous n'avez aucun code accédant aux méthodes/frameworks qui n'existent pas dans les SDK jusqu'à votre cible de déploiement.

J'espère que cela aide toute personne qui est dans ma position et n'a pas pu trouver une explication simple de la façon dont tout cela fonctionne. Le SDK Compatibility Guide était très utile et instructif. Cependant, il a fallu juste un peu plus de détails pour que je sois à l'aise avec le concept et comment tout fonctionne. Cette image du guide est utile:

alt text http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/cross_development/art/using_sdks.jpg

0

Aller au projet Info-> Construire et regarde la propriété IPHONEOS_DEPLOYMENT_TARGET En fait, je l'utilise 3.1.2 SDK et la construction d'une application qui fonctionne bien sur tous les OS 2.2.1 supérieur à

+0

Comment cela fonctionne-t-il? Si vous définissez votre SDK actif/de base à la version 3.1.2, votre cible de déploiement changera en 3.1.2, ne permettant pas l'installation sur un niveau inférieur à 3.1.2? –

+0

C'est une sorte de magie, ou d'exécution dynamique obj-c. Il est possible de construire une application qui utilise les fonctionnalités exclusives de l'OS 3.1, mais toujours compatible avec OS 2.0. Vous devez juste éviter les appels étiquetés avec "Disponible dans iPhone OS 3.0 et versions ultérieures" ou utiliser -respondsToSelector avant l'appel de méthode. – vaddieg

Questions connexes