"Review the iOS4 Readiness Checklist"

NeoPhoenixNeoPhoenix Membre
Bonjour à  tous,

Comme beaucoup d'entre vous, je me suis levé ce matin avec un mail d'Apple qui m'attendait, intitulé "Review the iOS4 Readiness checklist".

Après avoir parcouru rapidement le document, mes yeux se sont arrêtés net sur la phrase "All new applications and updates to existing applications must be built with iPhone SDK4..."

>:( Et comment je fais moi pour faire des updates en iPhone OS 3.x ??

Même en supposant qu'un grand nombre d'utilisateurs updatera rapidement son OS, tout le monde sait pertinemment que ce ne sera jamais à  100%. D'ailleurs quelqu'un a t'il déjà  des stats à  ce sujet ?

Réponses

  • muqaddarmuqaddar Administrateur
    07:06 modifié #2
    On l'a déjà  dit plusieurs fois sur ce forum récemment.  :P

    Tu peux avoir le SDK 4 pour compiler en iOS 4 mais autoriser l'application à  marcher sur iOS 3.x.

    Pour cela, dans tes infos de projet, tu mets à  la ligne iPhone OS Deployment Target, la version que tu veux (moi j'ai mis 3.1.3 par exemple, mais rien ne t'empêche de mettre 3 tout court).
  • NeoPhoenixNeoPhoenix Membre
    07:06 modifié #3
    OUPS, on dirait que je deviens bigleux  :P

    J'avoue avoir été très surpris de voir l'OBLIGATION d'utiliser le SDK4...d'où mon post (trop) rapide.

    Je me demande si utiliser le précédent SDK pour la soumission peut être cause de rejet (je viens de lancer deux updates d'applis sans utiliser le SDK4  B) )
  • GreensourceGreensource Membre
    07:06 modifié #4
    Oui ça sera cause de rejet. Moi je trouve pas ça gênant finalement, autant utiliser la dernière version à  jour.
  • AliGatorAliGator Membre, Modérateur
    juillet 2010 modifié #5
    Oui cause de rejet, c'est indiqué à  divers endroit et confirmé par divers REx.
    Compiler avec le SDK4 ne t'empêche pas de garder une compatibilité avec anciens OS pour autant.
    Seul truc, si tu veux faire du cross-compatible, faut tester la disponibilité des APIs spécifiques à  une version avant de les appeler.

    Tout ceci est indiqué :
    - Dans le README.pdf qui accompagne le package d'installation de Xcode 3.2.3 et du SDK4 (autant je lis pas toujours tous les ReadMe, autant ceux qui accompagnent les DevTools je les lis toujours car ils sont concis mais te disent les conséquences de passer à  la nouvelle version, ce que tu vas avoir à  modifier, etc... bref ça répond à  des questions comme la tienne avant même que tu ne te la poses)
    - Dans le Compatibility Guide


    Ma seule interrogation pour l'instant (mais parce que j'ai pas testé ni encore lu toute la doc moi non plus) c'est de savoir s'il est possible de demander au compilateur de mettre des warnings si on utilise une API qui n'est pas dispo dans une certaine version de l'iPhoneOS. Par exemple dire au compilo ou à  l'analyseur syntaxique ou même à  Xcode (un "Check compatibility" ou un truc comme ça) de compiler dans l'optique d'exécuter pour une version X et d'afficher des warnings en conséquence. Forcer le MAX_VERSION_ALLOWED & co avant la compilation suffit peut-être d'ailleurs, j'ai juste pas eu le temps de tester.

    Parce que du coup on est obligés de faire les vérifications au runtime pour savoir si les APIs weak-linked sont dispo pour l'iOS de l'iPhone sur lequel on tourne... mais on est loin d'être à  l'abri d'en oublier quelques-unes (qui connait par coeur pour quelles versions de l'iOS est dispo telle ou telle méthode, quand elle est apparue et quand elle a disparu si elle est deprecated...?) donc un moyen de les relever à  la compilation pour vérifier qu'on a pensé à  placer tous les tests de dispo des APIs ça serait pas du luxe
  • GreensourceGreensource Membre
    07:06 modifié #6
    dans 1278059056:

    (qui connait par coeur pour quelles versions de l'iOS est dispo telle ou telle méthode, quand elle est apparue et quand elle a disparu si elle est deprecated...?)[/i]


    Quoi? Mais toi Ali tu dois connaitre toutes version d'iOS sur le bout des doigts! Nan mais je vous jure, les maà®tres de stage c'est plus ce que c'était  :P
  • AliGatorAliGator Membre, Modérateur
    07:06 modifié #7
    à‰videmment, je voulais dire "à  part moi", bien sûr. C'était sous-entendu.
    Par contre les stagiaires c'est plus ce que c'était, ça n'apprend rien, je suis sûr que toi tu ne les connais pas par coeur.

    (Je ferais sans doute un petit contrôle surprise en rentrant tiens)
  • NeoPhoenixNeoPhoenix Membre
    07:06 modifié #8
    Du coup est ce que la meilleur façon de bosser ne serait pas :
    1) Continuer à  avoir les deux iPhones SDKs installés sur son Mac,
    2) Faire tout le dev avec un ancien SDK 3.x,
    3) Faire les tests finaux et le build distribution avec le SDK4 ?
  • iSofTomiSofTom Membre
    07:06 modifié #9
    Ben, puisque il faudra forcément distribuer l'appli compilée avec le SDK 4, pourquoi ne pas faire les devs en compilant avec le SDK 4 ?

    ça ne t'empêche pas de tester sur un iPhone sous iOS 3.1 !!!
  • NeoPhoenixNeoPhoenix Membre
    07:06 modifié #10
    Oui oui, je comprends bien  ;)
    Le fait d'utiliser un ancien SDK te permettrais de trouver des erreurs d'APIs au moment de la compilation. Et non à  l'exécution en recevant une exception.
  • AliGatorAliGator Membre, Modérateur
    07:06 modifié #11
    Tester sur un iPhone 3.1 est loin d'être acceptable / suffisant comme solution.

    1) Rares sont ceux qui font des TestsU complets et surtout dont le coverage est total. C'est pas parce que tu lances ton appli et fait juste un peu joujou avec sur un iPhone sous OS 3.1 et que ça marche que t'es pas à  l'abri d'un bug de compatibilité, genre dans une méthode qui se trouve ne pas avoir été appelée dans ton test (parce que tu n'as pas appuyé sur tel bouton avant d'appuyer sur tel autre bouton), du coup tu passeras à  côté. Le fait que le test ait à  se faire au runtime implique qu'il est impossible d'être sûr de ne pas en avoir oublié un en chemin

    2) Et surtout tout le monde n'a pas d'iPhone sous OS 3.1. Tu es quasi obligé en tant que dev d'avoir un iPhone, en général c'est ton iPhone perso, passé sous iOS4, non seulement parce que tu t'en sers tous les jours donc tu le mets à  jour, mais parce qu'il faut bien que tu testes ton appli sous iOS4. Mais du coup faudrait un deuxième iPhone que tu laisses sous iPhone OS 3.x pour tester avec cet ancien OS... Et idéalement il en faudrait un pour chaque version de iPhoneOS également

    Alors que si, juste pour tester que c'est compatible, tu pouvais au moment de la compilation dire "attention l'iPhoneOS cible est le 3.x et pas au dessus, dis moi alors les erreurs/warnings de méthodes non supportées que j'appelle", ou encore demander de lister toutes les fonctions/méthodes que tu utilises qui sont "weak-linked" pour vérifier que tu les as bien testées avant de les appeler... et une fois que tu as vérifié ça, livrer ton appli à  Apple compilée avec le SDK4, tu es sûr que tu as le dernier SDK mais que c'est compatible sans risque de crash avec les anciens iPhoneOSes.
  • SmySmy Membre
    07:06 modifié #12
    dans 1278064926:

    2) Et surtout tout le monde n'a pas d'iPhone sous OS 3.1.


    J'ai gardé mon "vieil" iPod Touch 1ere génération, et il est très bien pour tester sur du 3.1, et surtout pour mesurer les problèmes éventuels de lenteur.

    Je ne peux que conseiller d'en trouver un sur eBay, ce ne doit pas être trop cher !
Connectez-vous ou Inscrivez-vous pour répondre.