iOS9 : Applications amincies ?

LeChatNoirLeChatNoir Membre, Modérateur

Visiblement, avec iOS9, le store va évoluer et les applis vont télécharger uniquement les ressources qui lui sont propres.


 


Par ex, les @3x ne seront téléchargées que sur les 6Plus, etc...


 


Visiblement, on pourra "tagger" les ressources (ça, c'est utile que sur iPad).


 


C'est pas mal ce truc :D


Réponses

  • Bêtement j'étais persuadé que c'était déjà  le cas, et que les @3 n'étaient pas téléchargés sur mon iPhone 4. 

  • colas_colas_ Membre
    juin 2015 modifié #3


     


    Visiblement, on pourra "tagger" les ressources (ça, c'est utile que sur iPad).


     




     


    Qu'est-ce que tu entends par "tagger" les ressources ?


  • AliGatorAliGator Membre, Modérateur
    Voit la doc sur App Thinning


    Non ce n'était pas déjà  le cas car c'est loin d'être simple comme problème, avec la signature de ressources, le téléchargement de ressources à  la demande maintenant intégrée avec les tags, évidemment il faut indiquer ce que tu veux packager / grouper comme assets.


    Par exemple si tu fais un jeu tu vas créer des tags pour chaque niveau si chaque niveau a des images différentes. Si tu fais du in-App pas la peine d'intégrer des images ou sons dans l'app avant que l'utilisateur n'ait acheté ledit contenu. Etc.


    Tu vas donc pouvoir tagguer tes ressources pour dire indiquer à  quel pack elles appartiennent, genre ton contenu in-app-purshase ou les lèves 3,5 et 12 de ton jeu, ou le tutoriel que tout le monde ne ca pas consulter et donc que tu vas éviter d'inclure dès le premier téléchargement mais seulement à  la demande, etc

    voir la doc ici pour avoir un aperçu de ce que tu peux faire
  • C'est valable à  partir de quelle version d'iOS ? Parce que je doute que mon iPhone 4 tourne un jour sous iOS 9. Mine de rien, il reste des millions de ces petites bêtes en liberté dans la nature. C'est increvable ces trucs.

  • AliGatorAliGator Membre, Modérateur
    juin 2015 modifié #6
    C'est valable à  partir de iOS 9 puisqu'il faut utiliser NSBundleResourceRequest pour récupérer des ressources à  la demande que tu aurais choisi de ne pas inclure dans le download initial (mais tout ca est déjà  indiqué dans les liens que j'ai donné plus haut)


    Les iPhone 4 se sont arrêtés à  iOS7. iOS 8 nécessitait déjà  minimum un iPhones 4S. Cette année avec iOS9, contrairement à  d'habitude, Apple n'a PAS abandonné les anciens hardware et ceux qui supportaient iOS8 supporteront iOS9 aussi, donc y compris les 4S. Mais tout ça aussi a été expliqué dans la classique session State of the Union (si tu dois en regarder qu'une seule c'est bien celle là , comme chaque année, puisque c'est un résumé de toutes les nouveautés avec survol de chacune, mais bon j'espère que je ne t'apprend rien sur ce point depuis le temps que la WWDC existe)
  • Snif !


  • Je me suis mal exprimé. Je ne parlais pas de télécharger des ressources supplémentaires en cours d'utilisation, mais du téléchargement initial. Je me doute bien qu'une application iOS7 ne peut utiliser des fonctionnalités évoluées d'iOS9. Par contre le fait d'exclure les @3 du bundle avant de l'envoyer à  un iPhone 4/4S peut être fait entièrement à  partir de l'AppStore, sans modification de l'application.


     


    Ceci dis, j'imagine la frustration du joueur quand son jeu refuse de passer au niveau suivant. "Nous sommes désolé, mais le téléchargement du niveau suivant est impossible en l'absence d'une connexion internet".

  • AliGatorAliGator Membre, Modérateur
    Ah oui pour la partie "thinning" qui ne pousse que les données adéquates selon ton device (bonne résolution des PNG, bonne slice de l'architecture 32 vs 64 bits, etc) en effet je n'en mettrait pas ma main à  couper car je ne me suis pas renseigné sur la question, mais ça me semble tout à  fait raisonnable de penser que ça sera disponible y compris pour les anciens iOS.

    Après, il faudra peut-être recompiler ton appli avec le dernier SDK et le dernier Xcode (pour qu'il séparer les assets selon les résolutions et upload ça de façon bien isolée sur l'AppStore, même si pour toi c'est transparent in fine) et resoumettre pour en faire profiter tout le monde ? Ca je ne saurai le dire.
  • Je pense que ça va même plus loin que ça.

    Une des infos (et pas des moindres), serait l'utilisation du bytecode.

     


    Pour rappel le bitcode est une sorte d'assembleur haut niveau qui sert en réalité de traducteur pour un assembleur de processeur natif.


    Grossièrement, ça sépare chaque étape de la compilation d'un langage dans un bytecode.


     


    Donc Apple générerais le bytecode adéquat en meme temps que les assets histoire d'avoir une application la plus légère possible à  télécharger pour un device donné.


     


    Je me suis basé sur cet article: http://thenextweb.com/apple/2015/06/17/apples-biggest-developer-news-at-wwdc-that-nobodys-talking-about-bitcode/


     


    Je suis peut etre dans le faux, mais il y a là  une piste je pense. J'attends l'avis des pros :)


  • CéroceCéroce Membre, Modérateur
    juin 2015 modifié #11

    Si c'est bien ça. Le bitcode est une représentation intermédiaire générée par llvm.

    En gros, llvm fait ça:


    Code source -> [1] -> bitcode -> [2]-> code machine*.


     


    Ceci permet de séparer l'analyse syntaxique [1] de la génération et l'optimisation du code exécutable [2].


    Il est donc possible de transférer le bitcode à  Apple pendant la soumission, et c'est le serveur de l'App Store qui effectuerait la conversion bitcode -> langage machine. On peut ainsi ne compiler que pour un type de processeur, celui du dispositif iOS qui télécharge l'appli.


    *je parle de code machine, parce que c'est le cas général, mais par exemple, emscripten génère du JavaScript (optimisé pour Asm.js) à  partir du bitcode.


  • Oui c'est bien ce que je comprends.


Connectez-vous ou Inscrivez-vous pour répondre.