Flutter : une solution pour créer simultanément des apps iOS et Android natives, par Google

Stéphane Moussie |

Les solutions pour créer des applications mobiles multiplateformes ne manquent pas, mais elles sont souvent basées sur des technologies web, donnant à la fin des applications assez éloignées des standards d’iOS et Android.

Google entend améliorer ça avec Flutter, une technologie permettant de créer des apps à la fois multiplateformes et natives avec le même code. Le principe, c’est l’intégration dans chaque app d’un moteur de rendu qui fait le lien avec les fonctions des systèmes d’exploitation. C’est comparable au développement de jeux vidéo, où un moteur comme Unity permet de rendre compatible un jeu sur plusieurs plateformes sans devoir le réécrire.

L’intérêt de Flutter, récemment lancé en version 1.0 après un an de bêta publique, tient en quatre points, selon Google. Premièrement, la technologie permet de créer de « jolies » apps qui respectent les canons d’Android comme d’iOS et avec un contrôle au pixel près. Deuxièmement, les applications sont rapides. Elles fonctionnent à 60 i/s sur les deux plateformes, avec la promesse de performances natives.

Troisièmement, Flutter permet au développeur de voir ses modifications en temps réel. Pas la peine de compiler l’app pour voir le résultat, il suffit d’un ⌘S pour que le changement soit effectif dans le simulateur. Enfin, Google souligne l’aspect open source du projet.

Les applications Flutter doivent être écrites en Dart, un langage de programmation orienté objets, comme Swift. Flutter fonctionne avec les environnements de développement Visual Studio Code, Android Studio et IntelliJ.

Google utilise d’ores et déjà cette technologie pour son application Google Ads et pour Fuchsia, son nouveau système d’exploitation dont on ne connait toujours pas la mission — Google assure qu’il ne remplacera pas Android.

Néanmoins, Flutter n’est pas destiné à devenir le moyen privilégié pour créer des applications Android. Il ne peut pas non plus remplacer totalement les outils d'Apple, car il ne gère pas les apps watchOS, tvOS et d'autres éléments périphériques.

Le développeur Marco Bellinaso, qui a créé une app multiplateforme, Little Tales, avec Flutter, dresse un bilan encourageant :

Il y a beaucoup de potentiel, il est très facile de démarrer un projet et créer quelque chose de concret, et il y a beaucoup de bonnes idées. Cependant, la communauté est toujours petite et il y a des pièces manquantes en matière de plugins multiplateforme. Vous devez aussi vous satisfaire d’une interface qui n’est pas 100 % native. […] Créer ma première a été très agréable dans l’ensemble, et même si j’avais déjà conçu quelques apps iOS et Android natives par le passé, je suis sûr que cela m’a pris moins de temps avec Flutter que si j’avais dû développer deux apps séparées. Pas mal !

avatar Gu1k | 

Flutter vient directement concurrencer la solution de Facebook "React Native", qui propose la même chose mais dans un langage beaucoup plus connu et utilisé que le Dart : le javascript.

Du coup je suis curieux de voir le taux d'adoption de Flutter qui va demander aux développeurs d'apprendre un nouveau langage pour beaucoup d'entre eux !

avatar Enzo-Lyon | 

Et toujours la peur de voir Google abandonner (encore) une merveilleuse innovante et incroyable technologie au bout d’un an, parce qu’ils n’ont pas atteint les 30% d’utilisateurs attendus...
Mais par curiosité, voir ce qu’ils proposent.

avatar LaurentH | 

Je suis sur le coup!

avatar magic.ludovic | 

Allez y MacG ... faites nous une app pour Android ! Vous avez l'outils maintenant ! ;)

avatar MacTHEgenius | 

@magic.ludovic

Ils les ont déjà les outils, le problème est la pérennité des outils utilisés. Le jour où Google décidera d’abandonner le projet plusieurs développeurs devront réécrire leurs apps (iOS ET Android).

Le seul gage de sécurité dans le développement mobile est la disponibilité des outils natifs: on est à peu près certain qu’Apple n’abandonnera pas le SDK iOS et Google celui d’Android.

Il y a Xamarin et React Native, les deux se basant sur le même principe que Flutter, mais avec du C# pour le premier et du JavaScript pour le second.

avatar RedMak | 

J’ai essayé avec phonegape/cordova et xamarin et franchement j’ai arrêté!
C’est jamais facile, c’est jamais intuitif, il manque toujours des trucs, après une màj majeur tt ce casse la gueule et il faut attendre pour que la communauté fasse le nécessaire (ou le faire soi même mais ça prendra plus de temps), non merci.
Je reste sur l’objC et Swift mais je reste aussi attentif peut-être une solution miracle arrivera un un jour.

avatar MacTHEgenius | 

@RedMak

La seule solution miracle que j’attends est le support du Swift comme langage officiel sur Android. Pour la partie business model, ce serait génial. Après c’est au niveau UI que c’est spécifique à la plateforme.

Kotlin sur iOS, on en parle même pas ?

avatar RedMak | 

@MacTHEgenius

Si c’est ce que vous attendez, jetez un œil sur ce que Readdle a fait ;)

https://link.medium.com/LtEEedcJFS

avatar patchoulol | 

@MacTHEgenius

Pourtant, Kotlin sur iOS est une réalité, avec un support officiel des créateurs du langage : https://kotlinlang.org/docs/reference/native-overview.html

avatar Ded77 | 

HTML5, Xamarin, React Natif, Flutter…
Combien de fois allons-nous répéter la même erreur : si tu veux une app chouette, ça coûte chère et c’est en natif. Si t’as pas le budget, tu fais un site web et basta.

avatar Gu1k | 

React Native et Flutter génère bien du natif derrière car ça utilise les composant de l'OS, donc le rendu est très bon niveau qualité. La couche "métier" est en Dart ou JS, mais le rendu des vues dans l'app est natif.

Le désavantage par rapport au natif est que cela devient compliqué lors de la créations d'apps complexes, certains composants ne sont pas mutuels aux deux plateformes et dans ce cas il faut parfois mettre les "mains dans le camboui" en créant un composant en swift et en autre java (appelé des Native Modules en React Native)

avatar patchoulol | 

@Gu1k

C’est vrai dans le cas de React Native, mais pas dans le cas de Flutter. Les devs de Flutter ont réécrit chaque composant d’iOS en reprenant le même look&feel. Ce qui fait d’ailleurs que tu peux t’amuser à écrire une app Flutter avec un pur look&feel iOS sur Android et vice-versa !

avatar Gu1k | 

Y a qu'a voir les apps développées par Facebook (Messenger, Instagram, Whatsapp) utilisent toutes du React Native en grandes parties, le rendu est plutôt bon !

avatar Ded77 | 

@Gu1k

Vous avez raison : le code généré est bien natif.

La complexité est dans la formation/recrutement de dev qui connaissent les 2 plateformes et qui soient formés dans une des technos cross-plateforme.

Trouver un bon dev mobile est dur aujourd’hui, trouver un dev qui connaisse iOS et Android c’est une pépite. Alors si en plus il faut qu’il connaisse la techno cross plateforme du moment…

C’est d’ailleurs pour ça qu’AirBnB a lâché l’affaire avec React Natif. (Ils ont fait un super article sur ce sujet)

avatar fte | 

@Ded77

"Trouver un bon dev"

Ça, c'est difficile.

C'est d'autant plus difficile que les critères de recherche sont faux, la question mal posée. On ne trouve pas de bons développeurs X qui connaissent A et B et sont experts de C.

Un bon développeur sait coder intelligemment, s'adapter, et apprendre des environnements.

avatar RedMak | 

@Ded77

Merci pour l’article Airbnb je vais le(s) dévoré :)
Pour revenir au sujet,
Je développe pour ios depuis plus de 7 ans, j’en ai vu des technologies passées, et à chaque fois c’est la même chose: l’enthousiasme laisse ça place à des « oh pu c’est quoi cette mde ».
Récemment j’ai vu 2 gros projets dans ma boite codé en xamarin qui allaient être réécrits en natif ! Le problème était que les dev pouvaient codé l’app entièrement et la mettre en prod mais au moment du debuguage ça devient vite une galère et au moment des màj majeur des OS il fallait attendre lonnngtemps que les bug xamarin soi fixé, sans parler d’un bug specifique que seul toi et un gars en inde à eux! Là t’es dans la me
**!
Meme chose pour RXSwift qui est tellement une galère à debuguer que j’ai vite abandonné.

Et pour répondre à ceux qui dise que les app de Facebook sont en react et que ca marche, je réponds que c’est leur techno et il la connaisse au bout des doit et qu’ils on presque pas de limite de budget (il faut aussi rappeler que FB on à un moment utiliser du phonegape pour revenir au natif.

Pour finir les techno créer par ces géants du net sont devenu des outils « politiques » pour contrôler plus le net et faire en sorte que ça tourne tjrs en leur faveurs (Apple: swift, gg: Flutter, FB: react ..)

avatar FloMo | 

C’est du Hype Driven Development.
On nous a fait le coup avec Flash for Mobile, PhoneGap, Cordova, Ionic, React Native, Xamarin.
Ça finit en réécriture complète au bout de 2 ans.

avatar Ded77 | 

@FloMo

+1

avatar anton96 | 

@FloMo

J’adore le terme !
C’est devenu tellement ça ces dernières années surtout dans le web .

avatar MacTHEgenius | 

@FloMo

+1 000 000 000

Bamboozled Driven Development
The f*ck you’re doing? Driven Development
Sample app Or prototype but Let It go or you Die

J’ai manqué d’idée pour l’acronyme KISS (Keep It Simple, Stupid) ?

avatar Nicolas Furno | 

Ça a l'air franchement pas mal !

avatar foxot | 

Ça à l’air intéressant tout ça ^^

avatar Mr Bob | 

On dit "jouer de la flute".

avatar Ririii | 

Jamais été convaincu par les outils de développement multiplateforme. J’ai testé par curiosité carodova, ionic et xamarin résultat -> ? !
Ça ne vaut vraiment pas le développement natif. Alors certes ça coûte très cher, mais c’est le prix à payer pour avoir des apps de qualité et facilement maintenables !

J’essaierai sans doute flutter par curiosité mais je continuerai toujours d’utiliser Xcode et Android Studio pour développer mes apps !

avatar marenostrum | 

la qualité vienne de la connaissance de l'environnement que l'app s'occupe, et pas de la connaissance du code.
ils faut être analyste programmeur et pas que programmeur. analyser (un métier, un processus, etc) c'est bien plus dur que programmer (écrire correctement du code).

la plupart font des apps inutiles, parce que ne connaissent pas assez le milieu dont ils veulent s'occuper. le code c'est la partie la plus facile.

Pages

CONNEXION UTILISATEUR