web-dev-qa-db-fra.com

Luttant entre native et phonegap, exigences d'application simples

Je vais créer une application mobile native (ce qui signifie; pas dans le navigateur). Étant donné que je suis développeur Web, j'ai du mal à décider si je dois ou non essayer Phonegap ou simplement créer une application native dans Java ou objective-c.

Les exigences de l'application sont simples. Localisation GPS/wifi, intégration Facebook et je suppose que j'aurai besoin d'une base de données pour gérer certaines des relations Facebook-amis spécifiques à l'application. Comme les meilleurs scores dans un jeu, par exemple - des trucs comme ça.

Je suis développeur Web, et je ne sais pas non plus Java ou objective-c, pour l'instant. Je n'ai jamais utilisé Phonegap auparavant, donc je ne sais pas s'il est capable de répondre mes exigences.

Ma question est donc la suivante; Puis-je utiliser Phonegap pour mon application ou dois-je plonger dans une nouvelle langue?

75
Henrik Skogmo

En relation:

Une version plus grande de cet article peut également être trouvée ICI , pour être transparent il est mon blog personnel.

Applications hybrides vs natives

Applications hybrides:

Pro:

  • Développement plus rapide, surtout si vous êtes un développeur Web de longue date.
  • 1 langue peut être utilisée sur toutes les plateformes disponibles. Cela, bien sûr, nécessite un wrapper Phonegap. Vous n'avez pas besoin d'apprendre Objective C, Java ou C # pour effectuer un développement. Il vous suffit de comprendre les bases de la mise en œuvre de Phonegap. Vous devrez jouer un peu avec les langues mentionnées ci-dessus mais vous n'avez pas besoin de les comprendre.
  • Phonegap peut offrir certaines fonctionnalités natives comme la barre d'onglets native iOS ou Android barre d'onglets native et bien plus encore.
  • Des coûts budgétaires réduits et une énorme communauté de supporters et de développeurs.
  • Une application hybride offre de nombreux avantages des deux approches, un accès aux API d'appareils les plus courantes et une large couverture d'appareils sans nécessiter les compétences spécialisées, des budgets plus importants et un délai de commercialisation plus long qui sont plus typiques des applications entièrement natives.

Inconvénients:

  • Vous pisserez le sang après un certain temps, littéralement et métaphoriquement.
  • Les téléphones mobiles (même les tablettes d'aujourd'hui) ne sont pas assez rapides pour exécuter en douceur une application hybride, les capacités JavaScript mobiles sont au mieux au lit. Android est un cauchemar, les transitions de page ne fonctionnent pas sans problème, sans parler du manque d'implémentation CSS/CSS3. Si vous pensez que natif Android 2.X et 4) .X ont des différences jetez un oeil a Android 2.X mauvaise implémentation JavaScript/CSS. IOS se porte mieux mais a toujours une implémentation CSS3 manquante). ont toujours une meilleure expérience utilisateur et un sentiment général.
  • Vous passerez beaucoup plus de temps à réparer l'application qu'à la construire. La création d'une application pour chaque plate-forme est une douleur dans le cou. Les navigateurs sur différentes plates-formes ne prennent pas en charge de manière uniforme toutes les dernières fonctionnalités HTML et API, ce qui peut rendre le développement et les tests difficiles.
  • Si vous n'avez pas un bon concepteur, n'essayez même pas de créer une application; les regards sont tout.
  • Si vous ne savez pas ce que vous faites, il y a de fortes chances que votre application n'obtienne pas l'autorisation pour Apple app store. Même Google Play Store interdira votre application s'ils découvrent un Phonegap Paypal tiers. brancher.

Applications natives:

Pro:

  • Une application mobile native peut produire la meilleure expérience utilisateur - rapide et fluide, peut vous donner le meilleur accès aux fonctionnalités de l'appareil et peut être découverte dans les app stores.
  • Sans aucun doute, les applications natives ont un accès complet à la plate-forme mobile sous-jacente. Les applications natives sont généralement très rapides et raffinées, ce qui les rend idéales pour les applications ou les jeux haute performance. C'est plus que suffisant.

Inconvénients:

  • Plus gros budget, vous aurez besoin d'au moins une personne/s avec Java et connaissances Objective C, même C # si vous voulez une application mobile Windows. Oui, vous pouvez l'apprendre vous-même mais ne vivez pas sous l'illusion que vous le ferez en peu de temps. Si vous n'avez jamais fait de développement, choisissez Objective C (iOS est toujours une meilleure plate-forme). Dans d'autres cas choisissent Java. Java a une syntaxe similaire à d'autres langages disponibles, il est donc facile de passer de C # à Java et vice-versa. Objectif C est un monde à part. Il a une syntaxe assez rare.
  • Cela peut vous prendre plus de temps pour les développer tous et le temps c'est de l'argent. Cela dépend de la complexité des applications.

Dans votre cas, si vous avez de bonnes compétences en développement/conception Web et/ou si vous avez un bon concepteur, vous devez choisir une application hybride. Ne devenez natif que si cette application va être complexe. Tout ce que vous voulez peut être fait avec une application hybride. Et vous trouverez une communauté formidable et solidaire.

Applications hybrides

Ce que je n'ai pas mentionné précédemment, vous devez être particulièrement prudent ici. Même si vous êtes un développeur chevronné, vous trouverez de nombreux problèmes que vous ne pouvez pas résoudre. Le développement hybride ne doit pas être confondu avec un développement Web de base.

Chaque plate-forme mobile a son propre ensemble de problèmes, sans oublier que les téléphones mobiles se comportent différemment en fonction d'un appareil. Si possible, créez toujours une application qui fonctionne sur des appareils plus lents car l'application native fonctionnera avec succès sur presque tous les appareils.

Il y a une dernière chose, lors de la création d'applications hybrides, le développement d'applications vous prendra environ 30% à 50% de votre temps, le reste va au débogage et à l'apprentissage de plates-formes spécifiques. Croyez-moi, même après plusieurs années de développement mobile, je suis parfois confronté à des problèmes que je ne peux pas résoudre seul ou assez rapidement.

Soyez donc prudent lorsque vous choisissez un framework mobile, choisissez 2-3 et passez plusieurs jours à les lire.

Liens

Voici quelques liens pour vous aider à décider:

Tutoriel PhoneGap + jQuery Mobile 1.4 - Ceci est un tutoriel étape par étape pour PhoneGap et la dernière version de jQuery Mobile

Tutoriel PhoneGap + jQuery Mobile 1.4 - version MacOS - Ceci est un tutoriel étape par étape pour le déploiement de PhoneGap sur MacOS. La partie jQuery Mobile est traitée dans un article précédent, inutile de répéter les choses.

jQuery Mobile vs Sencha Touch - Comparaison jQuery Mobile Sencha Touch

jQuery Mobile vs Kendo UI - Comparaison jQuery Mobile Kendo UI

7 frameworks mobiles HTML5 les plus connus - Le nom dit tout

7 frameworks mobiles HTML5 moins connus - Le nom dit tout

158
Gajotres

si votre application n'a pas d'effets d'animation et simple, je préfère créer dans un site Web (Phonegap) cz à moins de temps, nous pouvons lancer dans plusieurs types d'OS mobiles. si votre application contient plus d'effets d'interface utilisateur et d'animation, il est préférable de choisir natif.

même si vous développez en vue Web (Phonegap), vous devez apprendre quelques étapes de base dans Android et iOS

Comment Phonegap fonctionne dans les appareils

Ios Les animations et le chargement des vues dans ios webview sont échoués et bons, les effets d'animation peuvent observer clairement

Android
Nous devons tenir compte de la version de l'appareil et de la société de l'appareil pour Android lors de l'exécution du code html. Certains appareils à haute configuration dans Android offrent un affichage d'animation plus clair et plus efficace, mais certains appareils (principalement ancienne version et certains appareils de l'entreprise) ne peuvent pas donner de bons effets d'animation, l'effet de rendu varie d'un appareil à l'autre dans Android,

16
Sandeep P

À mon humble avis avec Phonegap, vous pouvez simplement développer des applications simples, rien de plus. La documentation n'est pas suffisante et, comme d'autres l'ont dit, vous passerez beaucoup plus de temps à corriger des bugs et à trouver des plugins qu'à créer votre application. Je ferais l'effort d'apprendre Android ou iOS ou autre chose, regardez-le comme un investissement de votre temps. (Oui, mon commentaire est un peu biaisé).

7
Enrique Marcos

La dernière fois que je l'ai examiné, PhoneGap était entièrement en html, css et javascript. Ainsi, vous vous sentirez peut-être comme chez vous. PhoneGap peut gérer la localisation GPS, voir cet article de la documentation de PhoneGap. La décision de ramasser ou non l'Objectif C dépendra de la rapidité avec laquelle vous récupérez de nouvelles langues, car c'est un peu différent du Web. développement.

3
palmi

Cela dépend totalement de vos besoins

Après avoir publié ma première application plusieurs mois (Android natif, base de données, application de connexion reposante), j'ai décidé de réécrire mon application en utilisant phonegap (car je veux cloner l'application sur iOS, donc au lieu de le faire dans ObjC, pourquoi pas javascript ?)

Quand sur Android, cela m'a coûté, un Java, 3 semaines pour tout apprendre et tout coder à partir de zéro. Me frapper la tête au mur plusieurs fois pour savoir comment synchroniser ListAdapter avec le service Restful depuis mon serveur, comment thématiser l'application (assez difficile à mon avis, surtout en ce qui concerne les effets spéciaux comme transparent, border, ...), et aussi, comment structurer efficacement votre base de code (si vous êtes familier avec Java , vous constaterez que toutes les classes sont très couplées les unes aux autres, car c'est ce que la plupart des tutoriels écrivent)

Sur Phonegap, tout se fait en 1 semaine. Css, html, avec onsenui et angular rendent le développement de l'interface graphique comme le travail d'un élève de 1ère année et le thème n'est qu'un jeu d'enfant. Je n'ai pas besoin de l'exécuter sur le vrai appareil, il suffit d'utiliser le navigateur pendant le développement, le changement de code et le rafraîchissement suffisent. Angular fournit une liaison bidirectionnelle avec le DOM, ce qui crée une énorme impression lors de la collecte et de l'affichage des données. Par exemple:

<ul ng-each="for sentence in sentences" >
   <li>{{ sentence.title }} </li>
</ul>

Lorsque la variable sentences est modifiée (récupérée du serveur), le DOM est automatiquement modifié également. Cependant, javascript n'est que javascript. Je me suis retrouvé à plusieurs reprises en difficulté lors du débogage de l'application, en particulier lors de l'exécution des fonctions MapReduce avec PouchDB (grosse erreur, je dois revenir à cordova-sqlite-plugin ce soir) et la plupart du temps, je dois lire le journal pour comprendre le problème (les outils de Chrome et Firebug ne peuvent pas détecter le point d'arrêt). De plus, il est difficile de restructurer votre application (javascript, encore), donc si vous n'organisez pas soigneusement votre base de code au premier signe, vous risquez de vous retrouver avec un désordre (et le débogage est une vraie douleur, encore une fois). PhoneGap est également basé sur le Web, donc parfois, vous entendrez que "parce que sur cette plate-forme, il ne prend pas en charge ce bla bla bla" (par exemple, localStorage) et vous devez le défendre si vous ne trouvez aucun bon plugin.

Conclusion À l'exception de la limitation du stockage sur le Web, PhoneGap fonctionne assez bien avec l'application GUI simple basée sur la base de données (et la plupart des applications basées sur la base de données ont actuellement une interface graphique simple de toute façon). Si vous allez développer ce genre d'application, restez-y

3
Thai Tran

vérifiez en utilisant ionic , soutenu par angular.js pour compenser certains des inconvénients mentionnés dans la réponse acceptée. Tutoriel pour lancer une application d'annuaire d'employés: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/

2
Connor Leech

@Gajotres a écrit une excellente réponse, mais les performances des applications hybrides ont beaucoup progressé depuis 2012. J'ai répondu à une question connexe qui couvre la différence entre le développement d'applications hybrides et natives en 2017.

La morale de l'histoire est que le développement d'applications hybrides s'est considérablement amélioré au cours des dernières années, mais il ne peut toujours pas correspondre au natif pour certains cas d'utilisation.

Avec des outils comme Ionic (première sortie en 201 ) et React Native (première sortie en 2015 ) ), il est plus facile que jamais de créer des applications hybrides avec des composants de type natif. Les applications hybrides sont désormais plus rapides, moins boguées et capables d'interagir plus profondément avec l'interface utilisateur native.

Le seuil de performances des applications hybrides est considérablement plus élevé qu'il y a seulement quelques années, mais il y a encore un point où vous devrez peut-être développer votre application dans une langue maternelle.

Réponse originale:

Oui, le sentiment général est que les applications hybrides sont inférieures aux applications natives. Bien que cela puisse être frustrant pour les développeurs plus familiers avec les technologies Web, cela vient pour une bonne raison:

  1. Incapacité d'interagir avec les composants natifs : bien que des plugins tels que cordova-plugin-statusbar existe, il existe des limitations d'interaction et de manipulation des composants natifs à l'aide des technologies Web. Un problème important (et frustrant) que j'ai personnellement rencontré est l'impossibilité d'avoir une entrée en haut de leur clavier pendant que le clavier s'anime. Cela ressemble à une non-publication jusqu'à ce que vous regardiez une application où c'est une fonctionnalité essentielle telle que dans une application de chat comme Slack.
  2. Retard de 300 ms : Bien que les navigateurs modernes commencent à éliminer progressivement , la fraction de seconde de retard présente sur les applications hybrides fait l'application se sent lente et non native. Ce problème devient moins important car de plus en plus d'utilisateurs adoptent des solutions de contournement telles que FastClick.js et certains cadres tels que Ionic l'éliminent par défaut.
  3. Les ennemis ont raison (en quelque sorte) : Bien que le développement d'applications hybrides ait parcouru un long chemin, il y a encore des problèmes mineurs et des fonctions laggy qui ne sont tout simplement pas présents dans une application native. Les transitions d'écran, le changement d'application et la durée de vie de la batterie sont toujours des domaines communs pour l'apparition des bogues et le seront probablement pendant un certain temps, même s'ils commencent à devenir de moins en moins visibles.
  4. Il existe d'excellentes solutions natives : Avec les langages plus récents comme Apple Swift , il devient plus facile de coder dans une langue native. Cela étant dit, des outils tels que React Native tombent dans une zone grise entre Native et Hybrid en permettant aux développeurs de coder dans des technologies conviviales telles que JavaScript mais de compiler en code natif.

La morale de l'histoire est que cela dépend vraiment de ce qui est important pour votre cas d'utilisation spécifique. Les applications hybrides sont devenues une option viable et ne sont plus un spectacle secondaire embarrassant. À l'inverse, il existe encore des aspects mineurs d'interaction avec l'UX native qui ne sont pas encore possibles, sauf avec une application native.

Dans l'ensemble, je recommande de cartographier votre projet et de déterminer si votre application a besoin des avantages d'une application native. Avec des outils tels que l'application Ionic View , il est facile de rassembler une maquette de base de votre application et de tester sur un appareil réel si une application hybride fonctionnera pour vous.

1
Tyler

L'une des grandes options négligées ici est le développement avec Xamarin.

Bien qu'il n'aide pas à utiliser les compétences de développeur Web d'OP, il a de nombreux avantages par rapport à PhoneGap et presque aucun inconvénient.

Pros Xamarin vs PhoneGap:

  • Framework mature permettant d'accéder aux fonctionnalités natives les plus (sinon toutes) des appareils mobiles.
  • Apprenez une seule langue (C # pour la plupart des développeurs) pour toutes les plateformes mobiles.
  • Avoir des performances d'applications natives sur iOS/Windows Mobile (puisque l'application est compilée dans le code natif) et très proche sur Android (il compile toujours en APK natif, mais doit avoir un enveloppe mince qui traduit l'API de bibliothèque de classes .NET en Android lors de l'exécution).
  • Maintenu par Microsoft qui prend en charge la qualité généreuse globale de la plate-forme elle-même et des outils de développement. Par exemple, vous utiliserez Visual Studio et c'est probablement le meilleur IDE autour et a maintenant une édition communautaire gratuite avec toutes les fonctionnalités disponibles dont vous aurez besoin pour le développement de Xamarin.

Contre Xamarin vs PhoneGap:

  • Nécessite des investissements en temps pour que les développeurs Web purs passent à l'API de bibliothèque de classes C # et Xamarin.

Par conséquent, Xamarin est une option très solide pour le développement multiplateforme de nos jours.

0
Alexander Abakumov

Je trouve également un bon article ici http://www.comentum.com/phonegap-vs-native-app-development.html , il compare ces deux façons dans différentes catégories.

Le résumé est comme ci-dessous:

  1. Conception d'interfaces (Identique)
  2. Coût (l'hybride a un avantage)
  3. Chronologie de développement (Hybrid has Advantage)
  4. Expérience utilisateur et performances (Native a un avantage)
  5. Maintenabilité (Identique)
  6. Aucune limitation (Native a un avantage)
  7. Sécurité (Identique)
  8. Support et ressources (Native a un avantage)
  9. Outils et débogage (Native a un avantage)
  10. Indépendant de la plate-forme (l'hybride a un avantage)
  11. Popularité (Identique)
0
Alireza Fattahi

Il existe également des stéroïdes AppGyver qui unissent très bien PhoneGap et Native UI.

Avec les stéroïdes, vous pouvez ajouter des éléments tels que des onglets natifs, une barre de navigation native, des animations et des transitions natives, des fenêtres modales natives, un tiroir/panneau natif (menu latéral Facebook), etc. à votre application PhoneGap. Fondamentalement, partout où CSS + JS ne le coupe pas, les stéroïdes atteignent la couche native pour effectuer l'action.

De plus, avec les stéroïdes, vous pouvez (même si vous n'êtes pas obligé) utiliser une architecture de plusieurs pages (plusieurs vues Web) plutôt qu'une seule. Avec les applications d'une seule page, toutes les choses comme les transitions ne sont que des solutions de contournement CSS, et comme Mani l'a dit, même les tablettes et les téléphones modernes ne sont pas assez rapides pour les rendre fluides. C'est toujours évident quand il s'agit d'une application PhoneGap, en particulier lorsque vous avez un tas de processus en cours, ou si vous faites défiler car les processus JS sont entravés (corrigés dans iOS 8).

L'utilisation de l'architecture multi-pages signifie que vous obtenez des performances 100% natives (car ces parties sont natives). Et contrairement à PhoneGap, vous obtiendrez un comportement d'interface utilisateur cohérent et un débogage plus facile (avec une application d'une seule page, il est souvent difficile de recréer un état particulier dans votre application). Le multi-page facilite considérablement le développement et la maintenance de vos applications, car votre base de code reste plus propre.

Vérifiez la démo: http://youtu.be/oXWwDMdoTCk?t=20m17s

0
yoka