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

19nov/110

Pocket Agile – Une application AIR multi-plateforme connectée au cloud

Il y a quelques semaines lors de Back From MAX Paris, j'ai pu découvrir l'application Pocket Agile pendant un lightning talk de 10 minutes. 10 minutes, ce n'est pas beaucoup et contrairement à moi, Guillaume a réussi a nous montrer son application ainsi que quelques détails croustillants sur sa conception.

J'ai été assez impressionné par cette application, qui malgré son aspect simple, va bien plus loin qu'un prototype.

Pour pouvoir le laisser en parler un peu plus, et pour ceux qui n'étaient pas là à BFM, on a décidé de faire cela sous forme de petite interview.

Salut Guillaume, tout d'abord, peux-tu te présenter, ainsi que Axones par la même occasion?

Bonjour à tous, dur de ne pas passer directement à la dernière question concernant l’annonce d’Adobe sur Flex. Je suis architecte chez AXONES au sein de l’équipe Etudes Avancées. Après l’obtention de mon master en informatique j’ai développé en Java/JEE pendant 1 an. Et cela fait maintenant 2 ans que je fais du Flex avec comme back-end du Java. AXONES est une SSII de 200 personnes qui possède un important pôle de R&D en technos Web et Mobile. Autour de nos communautés d’experts, nous réalisons régulièrement des soirées de rencontres techniques. La recherche de meilleures solutions techniques est une des valeurs importantes d’Axones. C’est cet état d’esprit qui m’a permis de développer toute notre activité Flex avec de très belles réussites à la clef. D’ailleurs, AXONES recrute … avis aux intéressés …

L'application Pocket Agile que tu as présenté lors de BFM Paris permet de réaliser un planning poker. Pour ceux qui ne connaissent pas, peux-tu expliquer le concept?

La démo de Pocket Agile :

Il s’agit d’une étape dans la réalisation de projet en méthodes Agile. L’ensemble des intervenants sur le projet (clients, architecte, développeurs, …) se réunissent puis évaluent la complexité des tâches les unes après les autres. Pour plus de détails le planning poker :

Le wiki http://en.wikipedia.org/wiki/Planning_poker

Ainsi qu’une vidéo très sympa: http://youtu.be/0FbnCWWg_NY

Pocket Agile t'as permis de participer au Adobe Mobile Challenge et de finir dans le top 15 des applications récompensées. Le but était de publier son application sur Android / iOS / Playbook. Quelle a été la plateforme la plus difficile à dompter selon ton expérience?

Je pense que la Playbook est ce qui est le plus problématique. Mais j’avais participé au concours pour gagner une tablette (mon application : PriorityFeed) ce qui m’a permis d’avoir une première approche et de faire face aux difficultés qui peuvent intervenir.

Voici un schéma d’architecture de Pocket Agile :

 

Pour la synchronisation des "rooms", tu as utilisé LCCS (LiveCycle Collaboration Services), un service proposé par Adobe dans le cloud. Pour l'avoir testé, je trouve que LCCS n'a pas été assez mis en avant par Adobe. Que penses-tu du potentiel de ce produit? de son pricing?

Pour moi, il y a un énorme potentiel pour cette solution. Le travail collaboratif et social est une des avancées majeures à laquelle devra faire face le monde des intégrateurs et des logiciels sur mesure. Mais je pense que le marché n’est pas encore prêt pour repenser sa manière de travailler dans ce sens. Il est troublant de voir les difficultés que l’on peut rencontrer chez certains client pour passer d’un fichier Excel à une application. Il faudra attendre que de grands éditeurs montrent au plus grand nombre les possibilités et le confort qu’amènent ce push de data. Lorsque l’on ne devra plus faire F5 sur Facebook ce sera génial. Concernant les tarifs je n’ai jamais atteint les 15$ par mois, alors pour l’instant cela me convient.

Pour le back-end, tu as utilisé des services REST sur Google App Engine. Comment s'est passé cette partie server-side?

Super bien ! Je reste un très gros utilisateur de Java, mais je m’attendais à plus de difficultés pour prendre en main la nouvelle API à utiliser. La première approche sur la persistance des données est assez troublante mais une fois que l’on a compris c’est très agréable à manipuler.

As-tu utilisé des librairies / frameworks pour la réalisation de Pocket Agile ? Quels sont tes outils privilégiés?

En ce qui concerne le back-end, Restlet prévoit une librairie pour Google App Engine et Google propose GSON pour la manipulation en JSON : cela fait parfaitement  ce qu’on attend très simplement, que demander de plus ! Pour le front, j’utilise Parsley que j’aime beaucoup pour les commandes et l’inversion de contrôle. J’ai sauté de joie le jour où j’ai découvert l’annotation [Init] (pas très mise en avant dans la documentation) qui permet de lancer des traitements après que les éléments aient été injectés à la vue.

Quel futur pour Pocket Agile? D'autres projets?

Une refonte graphique ! Antoine Villieu, un de nos designers, étudie un nouveau design, et peut-être ajouter une notification pour prévenir du daily scrum (point quotidien rapide). Le code est accessible sur pocket-agile.googlecode.com. Sinon je travaille actuellement à plein temps sur une boutique en ligne mobile en Flex. Et plus personnellement, j’ai des idées de projets mobiles pour gens/sites comme « norman fait des vidéos ».

Pour finir, car difficile de ne pas évoquer cette question, que penses-tu de l'avenir de Flex après les différentes annonces d'Adobe de la semaine dernière?

Quelles annonces ? J’étais à fond sur BattleField 3 la semaine dernière, je n’ai pas vu grand-chose.

Plus sérieusement.

Pour Flash Mobile, je me demande pourquoi cela n’a pas été abandonné plus tôt. A l’annonce de Microsoft que Windows mobile 8 ne supportera pas Flash, je ne suis pas le seul à avoir réalisé que Flash sur mobile n’était pas intéressant.

Pour Flex, cela fait un bon moment que je me demande pourquoi ce n’est pas un projet complètement open source. Le SDK devient tellement énorme et les demandes tellement diverses (industrialisation, performance, nouveaux composants, etc.) que je ne voyais pas Adobe continuer tout seul longtemps. Lorsque j’ai vu la nouvelle cela m’a semblé tout à fait naturel et une bonne chose. Ils ont racheté PhoneGap et l’ont transmis directement à la fondation Apache, je trouve normal que Flex suive le même chemin.

La phrase de Deepa que tu cites :« In the long-term, we believe HTML5 will be the best technology for enterprise application development » ne m’a finalement pas tant surpris que ça puisque c’est ce que souhaite l’industrie. Cette phrase permet donc à Adobe de retrouver la place qu’elle mérite (par ses ingénieurs et son passé) d’acteur clé dans l’avancé et la mise en place des standards du marché.

Ce qui m’a réellement inquiété, c’était de savoir comment Adobe envisageait la donation de son Framework et de connaître son implication concrète dans la suite du projet. La nouvelle mise à jour de l’article de Deepa répond à ces questions et me rassure sur la viabilité  du Framework pour réaliser des applications en AIR pour mobile et pour desktop et encore pour quelques temps dans le navigateur.

Concernant le développement dans le navigateur à long terme, je me dis qu’avec un tel déploiement de ressources chez Adobe pour faire du HTML5, un bon Framework et des outils qui vont avec ne devraient pas tarder à arriver.

N’hésitez à me contacter : ggaulard@axones.fr

Petit résumé des liens

Pocket Agile : http://pocketagile.axones.com/

La démo à Back From Max : http://youtu.be/1UQSkoRvv9g

Et les sources : http://code.google.com/p/pocket-agile/

Le site d’axones : http://www.axones.com/

24sept/117

Sortie de Flash Player 11, AIR 3, Flex / Flash Builder 4.6 et Adobe MAX!

Si vous vivez dans une cave ou que vous n'êtes pas sur Twitter, vous n'avez peut-être pas entendu les dernières annonces faites par Adobe. Voici donc un petit récapitulatif.

Flash Player 11 et AIR 3 ont été annoncé pour "early October". Petit rappel en passant, Adobe Max, c'est du 1er au 5 Octobre. Même si vous n'êtes pas très fort en devinette, je pense que vous avez compris le message :) .

Flash Player 11

Même si les dernières versions de Flash Player (10.1, 10.2 et 10.3) étaient notées comme des versions mineures alors qu'elles apportaient de grosses modifications comme StageVideo, on a ici affaire à une version majeure qui vaut son pesant d'or.

Petit aperçu des fonctionnalités:

  • Player 64-bits sur Linux, Mac et Windows. Vous pouvez donc utiliser la version 64-bits de votre navigateur sur votre système 64-bits avec Flash Player. Il y avait eu la version "Square" sur les labs pendant un moment. Le support des systèmes 64-bits est maintenant direct
  • Stage3D "MoleHill": Des APIs bas niveau permettant de profiter de l'accélération graphique de votre GPU. Il devient ainsi possible de créer des jeux de qualité (démo http://goo.gl/DJKzs). Notez que vous n'allez pas vraiment utiliser MoleHill directement mais des API plus haut niveau comme Flare3D, Alternativa 3D et les autres qui finissent en 3D
  • Support natif du JSON: Amélioration (très importante) des performances de parse des données au format JSON.
  • … bien d'autres : http://www.adobe.com/devnet/flashplayer/articles/whats-new-flash-player11.html

AIR 3

  • Tout ce qui a été évoqué pour Flash Player 11
  • Stage3D pour le Desktop seulement (le mobile devrait arriver plus tard)
  • Extensions de code natif: Sûrement la plus grosse amélioration sur AIR depuis longtemps. Vous pouvez accéder aux API du système de manière directe, sans être bridé par les APIs proposées par AIR. Cela se passe en écrivant du code natif sur la plate-forme (C++ sur Windows, Objective-C sur iOS ou Java pour Android). Notez que ces librairies peuvent être partagées, il y aura donc bientôt de nombreuses librairies natives crées par la communauté et vous n'aurez qu'à les utiliser dans vos projets, sans jamais vous occuper du code natif qui est derrière. Les possibilités sont illimitées et vont repousser ce que AIR sait faire sur mobile. On peut ainsi penser aux notifications, à l'accès aux contact, au NFC, …
  • Captive Runtime: là aussi, grosse amélioration puisqu'il est possible de livrer une application avec le runtime AIR en un seul package. Plus d'installation nécessaire, plus de runtime partagé, vous pouvez donc transporter votre application sur un clé USB etc. Disponible sur Android et Desktop (déjà disponible sur iOS depuis la sortie de AIR 2.6)
  • Background Audio Playing sur iOS: Lecture d'audio en background sur iOS pour des applications de type station radio par exemple
  • StageVideo pour mobile
  • Support de la caméra frontale (iOS et Android)
  • Champ text natif (iOS et Android): Permet d'avoir de vrais champs texte natif, avec par exemple la gestion du copier/coller sur Android ou les réglettes de sélection
  • … bien d'autres http://www.adobe.com/devnet/air/articles/air3_whatsnew.html

Flex et Flash Builder 4.6

Au menu de ce Flex 4.6, principalement de nouveaux composants pour mobile:

  • SplitViewNavigator qui permet d'avoir deux ViewNavigator côte à côte pour des applications dédiées aux tablettes. Le SVN contient certaines APIs qui vous permettent d'automatiser certains comportements comme la gestion portrait / paysage ou l'affichage du VN de gauche dans un Callout (pop-up)
  • Callout & CalloutButton : Composant générique qui permet de faire une sorte de pop-up contextuelle (très utilisée sur iOS)
  • SpinnerList & SpinnerListContainer: Composant qui fait une liste avec un "wrap" c'est à dire une liste au défilement infini. Le composant SpinnerListContainer permet de skinner facilement la SpinnerList pour lui donner une forme de "rouleau"
  • DateSpinner: Composant à rouleaux permettant de choisir une date (très iOS). Possibilité de customiser facilement le composant, pour notamment le passer en français
  • ToggleSwitch: Sorte de CheckBox avec un état ON et un état OFF (très iOS)
  • … avec quelques screenshots http://www.adobe.com/devnet/flex/articles/whats-new-flex-flash-builder-46.html

Si vous étiez au Flex User Group à Bordeaux il y a quelques jours, vous avez pu voir ces composants en exclusivité !

Et sinon:

  • De meilleures performances
  • Compatibilité avec les prochaines versions des plateformes mobiles, notamment iOS5
  • Support des Native Extensions et de l'export en Captive Runtime directement sous Flash Builder
  • Support du Network Monitor pour les applications mobiles depuis Flash Builder ainsi que des tests unitaires avec FlexUnit
  • Une super Welcome page dynamique :)

Inscrivez-vous à la pre-release

Flex / Flash Builder 4.6 ne sont pas encore de la partie mais vous pouvez vous inscrire à la pre-release qui va démarrer bientôt. Pour tous les développeurs Flex, je vous conseille *très* fortement de vous inscrire, c'est une très belle opportunité de contribuer avec la communauté avec un forum très actif:

Inscription au programme de pre-release Flex et Flash Builder

Adobe MAX

Adobe MAX approche à grands pas (1-5 Octobre) avec certaines annonces un peu téléphonées et d'autres qui restent surprise. On a appris il y a quelques temps la sortie d'un framework nommé Starling, développé par Thibault Imbert (Chef Produit sur la Flash Platform) dont personne n'avait entendu parler. Juste pour en toucher 2 mots, ce framework permet de faire de la 2D (Sprites) accélérée par le GPU, avec donc de très bonnes performances.

Bref, préparez-vous à en prendre plein les mirettes!

Si vous voulez suivre l'évènement en streaming, veuillez vous inscrire à cette adresse:

http://www.max.adobe.com/online/

Perso, je serai en vacances au soleil (et oui), je ne pourrais donc pas vous faire un rapport live comme l'an dernier. Et si vous voulez tout savoir, vous pouvez aussi participer à "Back from MAX" le 27 Octobre à Paris:

http://www.backfrommax.com/paris

3juil/110

AIR Mobile – Application Pokémon (21) – Icônes pour Android et iOS

Les derniers tutoriaux de ce fil rouge ne sont pas vraiment dans l'ordre. On a vu comment déployer sur Android, déployer sur iOS et même publier sur l'AppStore alors qu'il nous manque quelques éléments esthétiques : par exemple les icônes de l'application. D'ailleurs, cela peut être un motif de refus sur l'AppStore par exemple. Ne loupez donc pas cette étape.

Une grande variété de taille et de formats

Vous allez vite le voir, si vous voulez être complet, il vous faudra beaucoup d'éléments, dans une grande variété de taille. Cela va du 16×16 au 512×512 pour l'icône de votre application. Il est donc préférable qu'il soit dans un format vectoriel ou à une grande taille de base (une image se réduit mieux qu'elle ne s'étend).

Vous pouvez trouver sur le net une multitude d'applications gratuite vous permettant de prendre une image en 512×512 par exemple et le programme va vous cracher toutes les images dans les divers formats. Attention, pour un petit icône, en 16×16, par exemple, il peut être judicieux de retoucher l'image car une image complexe de 512×512 réduite en 16×16 aura sûrement un mauvais rendu.

Mieux vaut donc avoir un Fireworks / Photoshop / Illustrator sous la main car vous allez devoir faire un petit paquet d'exports.

Eléments pour Android

Pour Android, assez simple, cela consiste en 3 tailles d'icônes pour toutes les densités d'écran (DPI):

  • 36×36 : low DPI
  • 48×48 : mid DPI
  • 72×72 : high DPI

Pour préciser ces icônes, cela se passe dans le fichier descripteur de votre application (*-app.xml). Le travail vous est déjà mâché, le code est déjà présent dans le fichier, vous n'avez qu'à le dé-commenter:

<icon>
	<image36x36>/icons/icon-36x36.png</image36x36>
	<image48x48>/icons/icon-48x48.png</image48x48>
	<image72x72>/icons/icon-72x72.png</image72x72>
</icon>

Vous verrez que vous devrez ajouter d'autres lignes avec d'autres dimensions. Si AIR ne trouve pas une certaine dimension, il va prendre l'image avec les dimensions les plus proches et faire un stretch. Pas idéal, dans tous les cas, pensez à préciser un maximum d'icônes.

30juin/110

AIR Mobile – Lancer une application native depuis une page web avec une Custom URI

Ce billet va parler des Custom URI. Sous ce nom se cache une fonctionnalité qui va vous permettre d'ouvrir une application native directement depuis un lien URL. Ce lien URL peut être présent dans une page web ou un email par exemple.

Un exemple dans la vraie vie : Doodle

Doodle est un service vous permettant de voir les disponibilités de vos amis pour décider d'une date. Service très intéressant qui dispose aussi d'une application mobile.

Quand vous accéder à Doodle.com > Exemple depuis votre mobile, vous arriverez sur une page comme celle-ci:

doo

On vous propose d'ouvrir ce Doodle directement dans l'application native, et pas sur le site HTML classique. Cela se fait grâce au mécanisme de Custom URI.

Custom URI? Ça me dit quelque chose …

Ce mécanisme n'est pas nouveau. En fait, si vous suivez flex-tutorial, vous vous souvenez peut-être de ces billets au moment où AIR pour Android était encore en beta:

AIR pour Android – Ouvrir une application Air sur Android depuis le navigateur web avec une custom URI

AIR pour Android – Ouvrir une application depuis une URI avec arguments

Voilà, depuis cette version beta, les fichiers descripteur (*-app.xml) n'ont plus la même structure et à l'époque, AIR pour iOS n'existait pas. Il est donc temps de faire un petit récapitulatif.

Custom URI = URI avec votre pseudo-protocole à vous

Une Custom URI, ce n'est rien d'autre qu'une URL qui utilise autre chose que "http" à la place du protocole. Vous allez en fait utiliser un préfixe à vous. Lorsque le système ne va pas reconnaître ce protocole, il va aller chercher dans la liste de ses applications, pour voir si l'une d'entres déclare que ce protocole est le sien. Si oui, il va lancer l'application en question en lui passant les éventuels paramètres que vous avez passé à votre URL (voir le tutorial sur URI avec arguments)

27juin/110

AIR Mobile – Application Pokémon (18) – Tester l'application sur Android

On a à présent une bonne version de notre application Pokémon, avec une vue liste, une vue de détail et la possibilité de naviguer entre les évolutions d'un certain Pokémon.

Il est venu le temps de tester notre application sur un vrai smartphone/tablette. En effet, cela peut nous permettre de détecter des erreurs dues à la taille de l'écran, à la résolution, au changement d'orientation, …

Pour commencer, on va tester sur un portable Android. Tout d'abord parce que c'est de loin le plus simple et parce que j'ai un Galaxy S sous la main :) .

Création d'un certificat .p12 pour Android

La principale raison pour laquelle la publication Android est simple, c'est que vous n'avez pas à créer N certificats en 48 étapes pour 8 types de développement. Vous créez un certificat vous-même au format .p12, directement dans Flash Builder et vous pouvez l'utiliser aussi bien pour le développement que pour la production. Vous verrez que c'est le jour et la nuit par rapport à d'autres plate-forme, notamment iOS qui est bien plus complexe à mettre en oeuvre.

Rendez-vous dans les propriétés du projet (clic droit > Properties) puis dans Flex Build Packaging > Google Android:

cert

Cliquez sur Create… puis entrez un publisher name et un password. Choisissez ensuite où sauvegarder ce fichier. Je vous conseille de le mettre dans votre application, dans un dossier "cert" par exemple et de ne pas le perdre.

C'est tout ce qu'il vous faudra comme certificat pour Android

Connexion d'un device Android par USB

Pour pouvoir effectuer le déploiement directement sur un mobile Android, il faut que celui-ci soit reconnu. Et pour qu'il soit reconnu, la plupart du temps il vous faudra installer les drivers "ADB interface". Testez quand même la ligne de commande d'après pour voir s'il y a besoin des drivers ou pas.

Ceux-ci peuvent être trouvés assez facilement sur le net, souvent sur le site du constructeur. Par exemple, pour un HTC Desire, les drivers sont là:

http://www.flex-tutorial.fr/2010/08/04/air-android-drivers-usb-pour-htc-desire-adb-interface/

Sinon, Flash Builder intègre certains des drivers dans :

C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\utilities\drivers\android

Donnez ce chemin quand Windows vous demande où sont vos drivers, cela peut fonctionner!

Pour tester si votre appareil est bien reconnu, ouvrez un invite de commande et naviguez vers:

C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\4.5.1\lib\android\bin

Puis tapez "adb devices". Si vous avez réussi votre coup, vous aurez un numéro de série qui va s'afficher:

adb

Lancement depuis Flash Builder

Une fois que votre device est bien détecté, rendez-vous dans Flash Builder. Sélectionnez votre projet puis Run > Run Configurations… Sélectionnez "Google Android" comme "Target Platform" puis "On Device":

run

Cliquez ensuite sur Run pour lancer l'application sur votre appareil Android. Idem pour Debug, rendez-vous dans Debug > Debug Configuration et suivez le même cheminement.

Si votre Debug n'arrive jamais à se connecter, pensez à ajouter Flash Builder aux exceptions de votre pare-feu.