AIR pour iPhone, iPad – Optimisation des performances
Le Packager For iPhone (alias PFI) n'a toujours pas été mis à jour pour fonctionner avec AIR 2.5 mais vous pouvez toujours l'utiliser dans le cadre d'applications ne nécessitant pas les APIs présentes dans AIR 2.5 ou les projets pur ActionScript 3. Pour l'instant, ce Packager a encore du chemin à faire car Adobe a perdu quelques mois de développements après les annonces d'Apple. La compilation est donc extrêmement longue, ce qui rend le développement laborieux.
Les plate-formes Apple sont certes puissantes pour des téléphones portables / tablettes mais bien moins puissantes que la plupart des PCs actuels. Les performances que vous avez pour votre application Desktop seront meilleures que celles sur iOS. Android, lui est plus optimisé (à ce que j'en ai ressenti) et offre une bonne vitesse d'exécution. Comme les ressources sont peu moins disponibles, l'application peut se mettre à "ramer" et le framerate peut descendre.
Pour éviter les ralentissements, il ne suffit pas de rejeter la faute sur les devices Apple. Celles-ci ne changeront pas, donc c'est vous (puisque le Packager n'évolue pas vite) qui allez devoir vous adapter. Même si cette étape peut sembler laborieuse, surtout à cause des temps de compilation, dites-vous que ces améliorations/optimisations que vous allez mettre en place vont aussi bénéficier à votre code qui sera joué sur d'autres plateformes, ce n'est donc pas du temps de perdu. J'ai du moi-même réaliser ces optimisations pour mon application pour iPad et cela fonctionne bien mieux désormais
Optimisation de votre code ActionScript 3
Avant d'aller plus loin dans l'optimisation, il faut déjà que votre code soit propre. En effet, votre code peut être écrit de différentes manières mais certaines sont plus rapides que d'autres. Les instanciations de classes par exemple sont très couteuses, il faut les réduire au minimum et ré-utiliser vos instances. Ce n'est qu'un exemple, vous trouverez plus d'informations sur ces articles que je conseille fortement à n'importe quel développeur Flex / AS3:
- Flex ActionScript – Optimiser votre code AS3
- Flex Debug – Garbage Collector AS3 et Flash Player 9
- Flex Debug – Garbage Collector AS3: Gestion des ressources
Mesurer les performances de son application
On ne peut pas faire d'optimisation sans comparer de résultat. En effet, comment savoir si une application est plus rapide, sans avoir le nombre de FPS par exemple, l'instinct ne suffit pas. Il existe cependant des outils permettant de mesurer les performances de votre application, aussi bien en terme de FPS, que de mémoire ou que d'instanciation.
Le plus puissant étant le Profiler intégré à Flash Builder Pro puisqu'il permet de visualiser facilement le nombre d'instances courantes par exemple. Voici quelques tutoriaux pour vous aider à l'aborder:
- Flex Profiler – Optimiser votre application Flex avec le Profiler de Flex Builder 3 (Partie 1)
- Flex Profiler – Optimiser votre application Flex avec le Profiler de Flex Builder 3 (Partie 2)
D'autres outils comme la classe Stats de Mr Doob vous permettront d'avoir beaucoup d'informations, directement dans votre application. Ce composant est donc visible sur votre iPhone car il fait partie de l'application pas comme le profiler qui est externe. Il existe de nombreux autres outils qui sont référencés dans cet article d'Elad Elrom:
Optimize Flash Content and Improving Usability on Mobile Devices – Part #1
Autres documents intéréssants
Voici d'autres liens qui vous donneront une bonne dose d'informations:
Articles similaires
- Apple retourne sa veste encore une fois, fausse joie ou vraie bonne nouvelle?
- Adobe confirme la reprise de dév du Packager for iPhone
- Adobe AIR 2.6 pour Android disponible sur le Market
- Adobe Air – Composant mx:HTML avec contenu SWF et Garbage Collection
- Adobe vs Apple – Adobe abandonne les plateformes Apple pour de bon
Aucun trackbacks pour l'instant






24 novembre 2010
Salut !
Est-ce que ton application iPad est disponible au public ?
Je travaille actuellement avec le PFI sur quelques projets, et malgré l'optimisation que j'ai apporté au code, ça reste relativement plus lent sur iPad (surement du à la surface à rafraichir ?). Sur iPhone cependant, on sent la différence en terme de rapidité d'exécution avant et après l'application des optimisations de code et de mémoire.
Ceci dit, quand je vois que cette meme application tourne encore mieux sur Android, je ne peux m'empecher de souhaiter qu'Adobe nous annonce avoir effectué un tour de magie dans le PFI sur la prochaine mise à jour
24 novembre 2010
Salut Dhaya,
L'application iPad n'est pas disponible au public et ne le sera sûrement pas au final. Pour l'instant, on est encore au stade du prototype (fonctionnel) assez avancé. Au final, l'application sera peut-être distribuée par un prestataire pour une utilisation privée et ne sera donc jamais publiée sur l'AppStore (d'autant plus qu'elle va contenir des données confidentielles), on aura donc un déploiement "Entreprise" selon le modèle Apple.
Pareil de mon coté, l'application sur iPhone est plus que fluide alors que j'ai du réduire la surface prise par la carte en modifiant la disposition de mes éléments (interface en 2 colonnes et pas un empilement de vues). Le résultat est correct, on passe peu souvent en dessous des 20 fps.
Effectivement, vivement la MAJ Adobe du PFI qui se fait attendre
Fabien
25 novembre 2010
Je fais du développement Flex mais jamais fais de flash, est ce que le PFI s'utilise d'une manière "facile" d'accès pour un flexeur ? comment coder vous les IHM sur iPhone/iPad ?
25 novembre 2010
Salut,
j'ai un article en préparation à ce sujet pour l'IHM avec les concepts que j'ai utilisé pour développer sans (trop) se soucier de la plate-forme de sortie. Tout est fait en Flex. Pour PFI, il s'utilise comme adt pour Android sauf qu'au lieu de 10 secondes, il met 7 à 10 minutes de compilation
Fabien