Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

2mai/1120

AIR Mobile – Adobe AIR est-il fait pour votre projet iOS, Android, …?

Voici un petit billet d'introduction pour une série d'article qui vont porter sur le développement d'applications mobiles avec Adobe AIR. Quand on parle d'applications mobiles, on parle bien sûr des smartphones mais aussi des tablettes tactiles qui se font de plus en plus nombreuses.

Mais avant de vous lancer dans ce genre de développement, il faut vous assurer que vous vous engagez sur la bonne voie. En effet, chaque technologie a ses avantages et ses inconvénients et Adobe AIR ne déroge pas à la règle. De nombreuses autres technologies peuvent vous aider à parvenir à vos fins, suivant vos aspirations (et votre patience) comme Titanium, PhoneGap ou même un bon vieux site en HTML.

On va ici parler des applications natives. Avant de décider quelle technologies utiliser pour faire du natif, regardez aussi si un simple site "HTML5" ne suffirait pas à vos besoins.

Les points forts d'Adobe AIR pour mobiles

Voici, selon moi (en essayant de rester objectif un maximum), les points forts de la technologie Adobe AIR pour Mobiles

Déploiement multi-plateformes

C'est sûrement un des plus grands avantages, Adobe AIR vous permettait déjà d'exporter pour Windows, Mac et Linux sans vous soucier  du packaging. Avec les projets mobiles, AIR vous permet de toucher davantage de plate-forme, toujours à partir d'une base commune. Ainsi, c'est Adobe qui fait le travail afin d'adapter le runtime pour chaque plateforme et pas le développeur qui doit apprendre à développer pour ces dernières.

L'univers du développement natif est plus fragmenté que celui du navigateur web. Chacun son implémentation, chacun son OS et chacun son langage de programmation. Si vous codez une application native en Java pour Android, vous ne pourrez ré-utiliser aucune partie de votre code, tout est à refaire pour chaque langage. Vous pensiez avoir tout vu avec le support d'IE6? Retour à la case départ, on prend les mêmes et on recommence.

De la même manière, si vous commencez avec une application AIR pour Mobile, vous aurez moins de mal à faire une application web par la suite.

Pour une entreprise comme celle pour laquelle je travaille, nous avons des ressources limitées en termes de développeurs. Ayant déjà fait l'expérience de se lancer sur plusieurs langages, nous savons que moins il y a de technologies différentes dans notre produit, plus la maintenance est aisée. Développer en natif sur chaque plate-forme vous impose de former votre équipe et de maintenir plusieurs bases de code. Chaque développeur ayant un niveau différent, vous allez avoir des différences de qualité dans votre produit final.

Ré-utilisation de votre code existant

Dans mon cas, c'est sûrement le point qui nous a fait choisir AIR. Nous développons actuellement des applications cartographiques en Flex, qui s'exécutent dans un navigateur web grâce à Flash Player. Notre composant cartographique par exemple(celui qui affiche les cartes et qui est le centre de l'application),  est écrit entièrement en ActionScript 3, aucune liaison avec le framework Flex. Nous avons pu réutiliser directement cette librairie dans notre projet AIR, sans aucune modification. Si nous avions du re-développer ce composant en Java et en Objective-C, cela nous aurait prit quelques mois (et encore, pas sûr d'y arriver au final).

Si vous avez déjà un existant en Flex ou (mieux) en ActionScript, vous allez sauver un temps précieux en utilisant à nouveau votre code.

La communauté des développeurs Flex et AIR

Un point qui n'est pas souvent pris en compte dans le comparatifs, c'est celle de la communauté qui entoure la technologie. Vous avez beau avoir la meilleure technologie du monde, si personne ne l'utilise et si personne ne partage ses connaissances à travers des forums et des tutoriaux.

Les autres technos / frameworks ont leur fans mais certains manquent de documentation / soutien.

De nombreux forums / blogs dont flex-tutorial.fr traitent des technologies Adobe et pourront vous aider dans votre développement.

Flash Builder pour le développement et le test

En même temps que AIR et Flex évoluent, Adobe fait aussi évoluer Flash Builder pour combler les attentes des développeurs d'applications mobiles. La dernière version vous permet de débugger votre application dans un émulateur ou directement sur votre téléphone (par USB ou Wifi). Le packaging / certification se fait grâce à des interfaces dédiées pouvant vous éviter de passer par la ligne de commande.

Le soutien d'Adobe

Là aussi, un point sous-estimé, le fait que derrière Adobe AIR, il y a Adobe. Derrière toutes les alternatives, il y a une entreprise plus ou moins solide. Pour Titanium ou PhoneGap, c'est souvent leur seul produit avec de nombreux développeurs derrière. Il faut donc qu'il fassent de l'argent d'une manière ou d'une autre. Plusieurs Business Model en l'occurence:

On parle ici des technologies vous permettant de faire du cross-platform. Si vous faîtes du natif sur chaque plate-forme, vous aurez moins de frais.

Adobe AIR est lui, gratuit et le restera de manière sûre. L'environnement de développement Flash Builder est payant (250$) mais même s'il est conseillé, il n'est pas obligatoire, vous pouvez utiliser une alternative gratuite. En vous engageant avec Adobe, vous avez l'assurance de ne pas avoir de surprise par la suite ce qui n'est pas forcement le cas pour les autres.

Un autre point à noter est le fait que ce soit Adobe qui réalise le développement sur le framework. Même si AIR a pris du retard par rapport aux autres, les versions release sont de qualité et évoluent régulièrement.

Les points faibles d'Adobe AIR pour mobiles

Maintenant que l'on a vu les points forts, voyons les points qui pourraient vous faire douter.

Application pas vraiment native

Même si au final, une application AIR est compilée en application native (IPA, APK ou BAR), le look & feel de ces applications ne sera jamais comme celui des "vraies" applications natives. Ainsi, un bouton sera par exemple toujours le même sur Android ou sur iOS. Cela peut troubler certains utilisateurs qui ne vont pas "retrouver leurs petits" et crier au scandale. Même si vous pouvez faire des skins avec Flex 4 et essayer de reproduire les composants natifs, cela n'est pas conseillé par cela représente une charge de travail supplémentaire.

De plus, sur Android, l'application est séparée du Runtime qui est dans une application à part. Cela peut rebuter certaines utilisateurs à l'installation (manque de place ou de volonté). Il n'est pas exclu que dans le futur, on ait la possibilité de packager son application AIR pour Android avec le runtime.

Bref, si vous voulez vraiment faire du natif pur et dur, Adobe AIR n'est pas pour vous.

Des APIs toujours en retard

Le premier à parler de ce point n'est pas moi, Steve Jobs l'avait déjà évoqué il y a quelques mois lorsqu' Apple avait pris la décision de bannir les outils de cross-compilation de son AppStore (avant de revenir sur sa décision de manière très chevaleresque). En effet, les OS évoluent et Adobe AIR a son propre cycle de développement et ses propres priorités. Vous n'aurez jamais accès à la dernière API iOS ou Android qui vient de sortir par exemple.

De la même manière, de nombreuses APIs ne sont pas encore disponibles avec AIR comme par exemple la boussole ou l'accès à la liste des contacts. Cela peut être un point bloquant pour votre développement. En effet, vous ne pourrez par exemple pas envoyer de notifications iOS ou Android comme le font les autres applications. Les notifications ne font pas partie de l'API de base et on ne sait pas si elles seront disponibles dans une prochaine release.

C'est aussi le cas pour les autres framework de cross-compilation qui permettent tous de faire des "extensions de code natif". C'est-à-dire que vous coder en langage natif (par plate-forme) une partie de votre fonctionnel (accès aux évènements de la boussole interne par exemple) et vous pouvez communiquer avec cette extension pour en récupérer un résultat.

Adobe AIR ne propose pas encore ces extensions natives et cela reste un point noir. Ces extensions natives sont sur la Roadmap, mais elles ne sont pas encore disponibles.

Restrictions sur les plate-formes supportées

Adobe AIR est supporté sur les Android version 2.2 et supérieur. Cela réduit donc le nombre de devices compatibles, même si les mise à jour des systèmes font qu'il y a désormais plus d'Android 2.2 que de versions non supportées. Ce point était une vraie contrainte au départ du lancement de AIR pour Mobile mais devient de moins en moins vraie au fur et à mesure que les systèmes et les machines évoluent.

Peut être victime de contraintes extérieures

L'expérience l'a prouvé, les frameworks comme Adobe AIR peuvent être victimes de contraintes environnementales par rapport aux eco-systèmes mobiles. Apple avait par exemple décidé de bannir toutes les applications crées avec AIR avant de revenir sur sa décision. Rien ne l'oblige à ne pas retourner sa veste une nouvelle fois. Chaque compagnie gère son éco-système et son market comme cela lui chante. Les décisions prises par ces entreprises peuvent impacter directement le déploiement d'application AIR.

Comme dernier exemple, le "Market Amazon Android" n'acceptait pas les applications AIR car celle-ci demandaient de télécharger le runtime qui ne se trouvait pas sur leur store (peut maintenant être contourné grâce au paramètre de compilation airDownloadURL).

Conclusion

Voilà, les points principaux que vous devrez connaître lorsque vous allez évaluer les différentes technologies pour votre application native. Peu importe la solution que vous allez prendre (Adobe AIR ou une autre), vous allez être contraint à suivre cette solution sans avoir de solution de sortie / migration. Il est donc important de se poser les bonnes questions avant de démarrer son projet pour ne pas le regretter par la suite.

Vous avez pesé le pour et le contre? Vous avez choisi Adobe AIR? Dans ce cas, on va être copains et vous allez être très intéressés par les articles qui vont suivre :)

Remplis sous: Adobe Air || Taggé comme: , , Laisser un commentaire

Articles similaires

Commentaires (20) Trackbacks (0)
  1. Excellent article, merci pour cette analyse.
    /David

  2. Bonjour,

    Voila j'ai un petit problème et j'aimerais savoir si ça te dit quelque chose, j'ai générer un ipa sous flashBuilder 4.5 et quand j'essaye de le mettre sur mon iphone, itunes indique que mes privilèges sont insuffisants pour déployer l'application.

    Une idée du problème ?
    Merci d'avance

  3. Salut Fred,
    Quel est le message d'erreur exactement? Cela me dit quelque chose, j'ai du le voir sur un forum. Peut-être un problème avec les certificats.

    Fabien

  4. Voila le message :)

    L'app "TestIOS" n'a pas été installée sur l'iPhone "IPhone" car les privilèges ne sont pas valides.

    Fred

  5. tu fais un déploiement ad-hoc ? Tu as mis le fichier de provision dans iTunes?

    Fabien

  6. J'ai choisi ad-hoc et j'utilise le fichier de provision de l'onglet development. Faut -il en faire un dans distribution ? Et Faut-il mettre me App ID dans le fichier xml de mon projet ? Merci encore de ton aide

  7. Pour cette partie, j'avais suivi la doc à la lettre et ça avait fonctionné. C'est toujours un peu obscur avec Apple de toutes manières. Pour l'App ID, il faut qu'il corresponde entre celui du XML et celui de ton certificat

    Fabien

  8. Ton fichier de provision a été créé dans l'onglet dev ou distrib ?

  9. Euh ça fait longtemps, dev je suppose

  10. Et le App ID c'étais dans le style com.domaine.applicationName ?

  11. ouaip. Sinon, refais toutes les étapes comme dans le PDF, tu seras tranquille :P

  12. Le pdf c'est le developing_mobileapps_flex.pdf ?

  13. C'est packagerforiphone_devguide.pdf. Mais avec les redirections de ce matin, plus moyen de le retrouver!

  14. Tu as une copie du pdf ?

  15. Non :/. Je demande à Adobe, voir s'ils l'ont mis quelque part.

    Fabien

  16. :) merci

  17. Bon je pense avoir trouvé mon problème, et je n'ai plus le méchant message :)

    Par contre, as partir de Projet Actionscript Mobile peut-on faire une vrai application (as-tu un exemple)? Y a t-il une date de disponibilité de l'IOS dans la section Projet Flex Mobile ? Merci

  18. Salut,
    si tu penses savoir pour quoi, précises le dans le commentaire, il se peut que d'autres aient le même problème :) .
    Pour la disponibilité de Flex sur iOS, c'est pour Juin !

    Fabien

  19. Alors je pense que j'avais pas installé le certificat que j'ai généré au début.


Leave a comment

(required)

Aucun trackbacks pour l'instant