android - tutorial - programacion phonegap
Luchando entre nativo y phonegap, requisitos simples de la aplicaciĆ³n (10)
Voy a hacer una aplicación móvil nativa (es decir, no en el navegador). Como soy desarrollador web, me cuesta decidir si debo probar Phonegap o simplemente crear una aplicación nativa en java u objetivo-c.
Los requisitos de la aplicación son simples. Ubicación de GPS / wifi, integración de Facebook y supongo que necesitaré una base de datos para manejar algunas de las relaciones de amigos de Facebook específicas de la aplicación. Al igual que las puntuaciones más altas en un juego, por ejemplo, cosas así.
Soy un desarrollador web, y aún no conozco ni Java ni Objective-c. Nunca antes había usado Phonegap, por lo que no sé si es capaz de cumplir mis requisitos.
Entonces mi pregunta es la siguiente; ¿Puedo usar Phonegap para mi aplicación, o necesito bucear en un nuevo idioma?
Relacionado:
La versión más grande de este artículo también se puede encontrar HERE , para ser transparente, es mi blog personal.
Aplicaciones Híbridas vs Nativas
Aplicaciones híbridas:
Pro:
- Un desarrollo más rápido, especialmente si usted es un desarrollador web desde hace mucho tiempo.
- Se puede usar 1 idioma en cada plataforma disponible. Esto, por supuesto, requiere un contenedor de Phonegap. No necesita aprender Objective C, Java o C # para hacer ningún desarrollo. Solo necesita comprender los conceptos básicos de la implementación de Phonegap. Tendrá que jugar un poco con los idiomas mencionados anteriormente, pero no necesita comprenderlos.
- Phonegap puede ofrecer algunas capacidades nativas, como la barra de pestañas nativa de iOS o la barra de pestañas nativa de Android, y mucho más.
- Menores costos de presupuesto y una gran comunidad de seguidores y desarrolladores.
- Una aplicación híbrida ofrece muchas de las ventajas de ambos enfoques acceso a las API de dispositivos más comunes y una amplia cobertura de dispositivos sin requerir habilidades especializadas, presupuestos más grandes y mayor tiempo de lanzamiento al mercado que son más típicos de aplicaciones completamente nativas.
Contras:
- Causarás sangre después de un tiempo, literal y metafóricamente.
- Los teléfonos móviles (incluso las tabletas de hoy en día) no son lo suficientemente rápidos como para ejecutar sin problemas una aplicación híbrida, las capacidades de JavaScript para dispositivos móviles son la mejor opción. La plataforma Android es una pesadilla, las transiciones de página no funcionan sin problemas, por no mencionar la falta de implementación de CSS / CSS3. Si crees que los nativos de Android 2.X y 4.X tienen diferencias, eche un vistazo a una implementación de JavaScript / CSS mala de Android 2.X. iOS tiene una mejor calidad, pero todavía tiene una implementación de CSS3 que carece de transiciones de página mucho mejores. Para hacer estas aplicaciones nativas cortas siempre tendrá una mejor experiencia de usuario y una sensación general.
- Pasarás mucho más tiempo corrigiendo la aplicación que edificándola. Crear una aplicación para cada plataforma es un dolor en el cuello. Los navegadores en diferentes plataformas no admiten uniformemente todas las características y API HTML más recientes, lo que puede hacer que el desarrollo y las pruebas sean un desafío.
- Si no tienes un buen diseñador, ni siquiera intentes construir una aplicación; las miradas son todo.
- Si no sabes qué estás haciendo, hay buenas posibilidades de que tu aplicación no obtenga permiso para la tienda de aplicaciones Apple. Incluso Google Play Store prohibirá su aplicación si descubren un complemento PayPal Phonegap de terceros.
Aplicaciones nativas:
Pro:
- Una aplicación móvil nativa puede producir la mejor experiencia de usuario, rápida y fluida, puede brindarle el mejor acceso a las funciones del dispositivo y puede descubrirse en las tiendas de aplicaciones.
- Sin lugar a dudas, las aplicaciones nativas tienen acceso completo a la plataforma móvil subyacente. Las aplicaciones nativas suelen ser muy rápidas y pulidas, lo que las hace ideales para aplicaciones o juegos de alto rendimiento. Esto es más que suficiente.
Contras:
- Presupuesto más grande, necesitará al menos una persona / s con conocimientos de Java y Objective C, incluso C # si desea una aplicación móvil de Windows. Sí, puedes aprenderlo tú mismo pero no vives bajo la ilusión de que lo harás en poco tiempo. Si nunca has hecho ningún desarrollo, elige Objective C (iOS sigue siendo una mejor plataforma). En otros casos, elija Java. Java tiene una sintaxis similar a otros idiomas disponibles, por lo que es fácil saltar de C # a Java y viceversa. El objetivo C es un mundo propio. Tiene una sintaxis bastante poco común.
- Puede tomarle un período de tiempo más largo para desarrollar todos ellos y el tiempo es dinero. Esto depende de la complejidad de las aplicaciones.
En su caso, si tiene un buen desarrollo web / habilidades de diseño y / o tiene un buen diseñador, debe elegir una aplicación híbrida. Vaya nativo solo si esta aplicación va a ser compleja. Todo lo que quieras se puede hacer con una aplicación híbrida. Y encontrarás una gran comunidad de apoyo.
Aplicaciones híbridas
Lo que no mencioné anteriormente, debes ser especialmente cuidadoso aquí. Incluso si eres un desarrollador veterano, encontrarás muchos problemas que no puedes resolver. El desarrollo híbrido no debe confundirse con un desarrollo web básico.
Cada plataforma móvil tiene su propio conjunto de problemas, sin mencionar que los teléfonos móviles se comportan de manera diferente dependiendo de un dispositivo. Si es posible, siempre crea una aplicación que funcione en dispositivos más lentos porque la aplicación nativa funcionará con éxito en casi cualquier dispositivo.
Hay una última cosa, cuando se crean aplicaciones híbridas, el desarrollo de la aplicación le tomará entre un 30% y un 50% de su tiempo, el resto se dedica a la depuración y el aprendizaje específicos de la plataforma. Créanme, incluso después de varios años de desarrollo móvil a veces me enfrento a problemas que no puedo resolver solo o lo suficientemente rápido.
Así que tenga cuidado al elegir el marco móvil, elija 2-3 y pase varios días leyendo sobre ellos.
Campo de golf
Aquí hay algunos enlaces para ayudarlo a decidir:
Tutorial de PhoneGap + jQuery Mobile 1.4 : este es un tutorial paso a paso para PhoneGap y la última versión de jQuery Mobile
Tutorial de PhoneGap + jQuery Mobile 1.4 - Versión de MacOS : este es un tutorial paso a paso para la implementación de PhoneGap en MacOS. La parte jQuery Mobile está cubierta en un artículo anterior, no tiene sentido repetir cosas.
jQuery Mobile vs Sencha Touch - comparación jQuery Mobile Sencha Touch
jQuery Mobile vs Kendo UI - jQuery Mobile Kendo UI comparación
Los 7 frameworks móviles HTML5 más conocidos : el nombre lo dice todo
7 frameworks móviles HTML5 menos conocidos : el nombre lo dice todo
@Gajotres escribió una gran respuesta, pero el rendimiento de la aplicación híbrida ha recorrido un largo camino desde 2012. Respondí una pregunta relacionada que cubre la diferencia entre el desarrollo de aplicaciones nativas e híbridas en 2017.
La moraleja de la historia es que el desarrollo de aplicaciones híbridas ha mejorado tremendamente en los últimos años, pero todavía no puede coincidir con el nativo para ciertos casos de uso.
Con herramientas como Ionic (lanzada por primera vez en 2013 ) y React Native (lanzada por primera vez en 2015 ) es más fácil que nunca crear aplicaciones híbridas con componentes similares a los nativos. Las aplicaciones híbridas ahora son más rápidas, menos problemáticas y pueden interactuar más profundamente con la interfaz de usuario nativa.
El umbral para el rendimiento de la aplicación híbrida es sustancialmente más alto que hace unos pocos años, pero todavía hay un punto en el que puede necesitar desarrollar su aplicación en un idioma nativo.
Respuesta Original:
Sí, el sentimiento general es que las aplicaciones híbridas son inferiores a las aplicaciones nativas. Si bien esto puede ser frustrante para los desarrolladores más familiarizados con las tecnologías web, es una buena razón:
- Incapacidad para interactuar con componentes nativos : aunque existen complementos como
cordova-plugin-statusbar
, existen limitaciones para interactuar y manipular componentes nativos utilizando tecnologías web. Una gran (y frustrante) cuestión con la que me he encontrado personalmente es la imposibilidad de tener una entrada en la parte superior de sus teclados mientras el teclado se activa. Esto suena como un no tejido hasta que miras una aplicación donde esta es una característica esencial como en una aplicación de chat como Slack.- Demora de 300 ms : a pesar de que los navegadores modernos están comenzando a eliminar esto , la fracción de un segundo retraso presente en las aplicaciones híbridas hace que la aplicación se sienta lenta y no nativa. Este problema se está convirtiendo en un factor cada vez menor a medida que más usuarios adoptan soluciones como FastClick.js y algunos marcos como Ionic eliminarlo de forma predeterminada.
- Los que odian tienen razón (más o menos) : si bien el desarrollo de la aplicación Híbrida ha recorrido un largo camino, todavía hay fallas técnicas menores y funciones lag que simplemente no están presentes en una aplicación nativa. Las transiciones de pantalla, el cambio de aplicación y la duración de la batería siguen siendo áreas comunes para que aparezcan errores y es probable que lo sean durante un tiempo, incluso si comienzan a notarse cada vez menos.
- Existen algunas excelentes soluciones nativas : con idiomas más nuevos, como Swift de Apple, cada vez es más fácil codificar en un idioma nativo. Dicho esto, herramientas como React Native caen en un área gris entre Native e Hybrid al permitir a los desarrolladores codificar en tecnologías amigables como JavaScript pero compilar en código nativo.
La moraleja de la historia es que realmente depende de lo que es importante para su caso de uso específico. Las aplicaciones híbridas se han convertido en una opción viable y ya no son un espectáculo secundario embarazoso. Por el contrario, todavía hay aspectos menores de interacción con Native UX que aún no son posibles, excepto con una aplicación nativa.
En general, recomiendo mapear su proyecto y determinar si su aplicación necesita alguno de los beneficios de una aplicación nativa. Con herramientas como la aplicación Ionic View , es fácil armar una maqueta básica de tu aplicación y probarla en un dispositivo real, ya sea que una aplicación híbrida funcione o no para ti.
Depende totalmente de tus necesidades
Después de publicar mi primera aplicación varios meses (aplicación de conexión nativa de Android, basada en bases de datos y descanso), decidí reescribir mi aplicación usando phonegap (ya que quiero clonar la aplicación a iOS, así que en lugar de hacerlo en ObjC, ¿por qué no javascript? ?)
Cuando estaba en Android, me costó, un desarrollador de Java, 3 semanas para aprender y codificar todo desde cero. Golpeando mi cabeza contra la pared varias veces para saber cómo hacer la sincronización de ListAdapter con el Servicio de Restful de mi servidor, cómo tema la aplicación (bastante difícil en mi opinión, especialmente cuando se trata de efectos especiales como transparente, borde, ... ), y también, cómo estructurar su base de código de manera efectiva (si está familiarizado con Java, encontrará que todas las clases están muy unidas entre sí, ya que es sobre lo que la mayoría de los tutoriales escriben)
Cuando está en Phonegap, todo se hace en 1 semana. Css, html, con onsenui
y angular
hacen que el desarrollo de la GUI sea similar a la asignación de un estudiante de 1er año y la temática es simplemente un pedazo de pastel. No necesito ejecutarlo en el dispositivo real, basta con usar el navegador durante el desarrollo, cambiar el código y actualizarlo. Angular
proporciona un enlace bidireccional con el DOM, y esto crea una gran maravilla cuando se recopilan y muestran datos. Por ejemplo:
<ul ng-each="for sentence in sentences" >
<li>{{ sentence.title }} </li>
</ul>
Cuando se modifican las sentences
variables (recuperadas del servidor), el DOM también cambia automáticamente. Sin embargo, javascript es solo javascript. Me encontré luchando muchas veces al depurar la aplicación, especialmente al hacer las funciones de MapReduce con PouchDB (gran error, tengo que volver a cordova-sqlite-plugin
esta noche) y la mayoría de las veces, tengo que leer el registro para poder resolver el problema (las herramientas de Chrome y Firebug no pueden atrapar el punto de interrupción). Además, es difícil reestructurar su aplicación (javascript, nuevamente) así que si no organiza cuidadosamente su base de código en el primer signo, puede terminar con un desastre (y la depuración es un verdadero dolor, de nuevo). PhoneGap también se basa en la Web, por lo que a veces, escuchará que "porque en esta plataforma, no es compatible con bla bla bla" (por ejemplo, localStorage
) y debe defenderlo si no puede encontrar un buen complemento.
Conclusión Excepto por la limitación del almacenamiento basado en la web, PhoneGap funciona bastante bien con la sencilla aplicación GUI basada en la base de datos (y la mayoría de las aplicaciones basadas en bases de datos actualmente tienen una GUI simple de todos modos). Si vas a desarrollar ese tipo de aplicación, entonces quédate con eso
En mi humilde opinión con Phonegap puedes desarrollar aplicaciones simples, nada más. La documentación no es suficiente y, como otros, han dicho que pasarán mucho más tiempo corrigiendo errores y buscando complementos que construyendo su aplicación. Me esforzaría por aprender Android o iOS o lo que sea, míralo como una inversión de tu tiempo. (Sí, mi comentario es un poco parcial).
La última vez que investigué PhoneGap fue html, css y javascript. Entonces, puede sentirse como en casa. PhoneGap puede manejar la ubicación del GPS, consulte este artículo de la documentación de PhoneGap. Si desea o no elegir el Objetivo C dependerá de la rapidez con la que elija nuevos idiomas, ya que se aparta un poco del desarrollo web.
También encuentro un artículo muy bueno aquí http://www.comentum.com/phonegap-vs-native-app-development.html , que compara estas dos formas en diferentes categorías.
El resumen es el siguiente:
- Diseño de interfaces (lo mismo)
- Costo (Híbrido tiene ventaja)
- Cronología de desarrollo (híbrido tiene ventaja)
- Experiencia de usuario y rendimiento (Native tiene ventaja)
- Mantenibilidad (lo mismo)
- Sin limitaciones (Native tiene ventaja)
- Seguridad (lo mismo)
- Soporte y recursos (nativo tiene ventaja)
- Herramientas y depuración (Native tiene ventaja)
- Plataforma independiente (híbrido tiene ventaja)
- Popularidad (Mismo)
También hay AppGyver Steroids que une PhoneGap y Native UI muy bien.
Con los esteroides puede agregar cosas como pestañas nativas, barra de navegación nativa, animaciones y transiciones nativas, ventanas nativas modales, panel / cajón nativo (menú lateral de Facebook), etc. a su aplicación PhoneGap. Básicamente, en cualquier lugar donde CSS + JS no lo corte, los esteroides alcanzan la capa nativa para realizar la acción.
Además, con los esteroides, puede (aunque no es necesario) utilizar una arquitectura de varias páginas (vistas múltiples en la web) en lugar de una sola. Con aplicaciones de una sola página, todo, como las transiciones, son solo soluciones provisionales de CSS, y como dijo Mani, incluso las tabletas y teléfonos modernos no son lo suficientemente rápidos como para hacerlos fluidos. Siempre es obvio cuando se trata de una aplicación de teléfono, especialmente cuando hay muchos procesos en marcha, o si se desplaza desde los procesos de JS (se soluciona en iOS 8).
Usar la arquitectura de varias páginas significa que obtienes un rendimiento 100% nativo (porque esas partes son en realidad nativas). Y a diferencia de Phonegap, obtendrá un comportamiento de interfaz de usuario consistente y una depuración más sencilla (con una aplicación de una sola página, a menudo es difícil recrear un estado particular en su aplicación). La página múltiple hace que sea mucho más fácil desarrollar y mantener sus aplicaciones, ya que su código base se mantiene más limpio.
Compruebe la demostración: http://youtu.be/oXWwDMdoTCk?t=20m17s
Una de las grandes opciones aquí es el desarrollo con Xamarin .
Aunque no ayuda a utilizar las habilidades de desarrollador web de OP, tiene muchas ventajas en comparación con PhoneGap y casi ningún inconveniente.
Xamarin vs PhoneGap Pros:
- Marco maduro que proporciona acceso a la mayoría (si no a todas) las características nativas de los dispositivos móviles.
- Aprenda solo un idioma (C # para la mayoría de los desarrolladores) para todas las plataformas móviles.
- Tener un rendimiento de aplicaciones nativas en iOS / Windows Mobile (ya que la aplicación se compila en el código nativo) y muy cercano en Android (todavía compila en una APK nativa, pero tiene que tener un envoltorio delgado que traduzca la biblioteca de la clase .NET API en API de clases de Android en el tiempo de ejecución).
- Mantenido por Microsoft que admite la generosa calidad general de la plataforma en sí y las herramientas de desarrollo. Por ejemplo, usará Visual Studio y es probablemente el mejor IDE que existe y ahora tiene edición comunitaria gratuita con todas las características disponibles que necesitará para el desarrollo de Xamarin.
Xamarin vs PhoneGap Contras:
- Necesita algunas inversiones de tiempo para los desarrolladores web puros para cambiar a la API de la biblioteca de clases C # y Xamarin.
Por lo tanto, Xamarin es una opción muy sólida para el desarrollo multiplataforma en la actualidad.
echa un vistazo usando ionic , respaldado por angular.js para compensar algunos de los inconvenientes mencionados en la respuesta aceptada. Tutorial para iniciar una aplicación de directorio de empleados: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/
si su aplicación no tiene efectos de animación y simplemente prefiero crear en un sitio web (Phonegap) cz en menor cantidad de tiempo, podemos iniciar en varios tipos de sistema operativo móvil. Si su aplicación contiene más efectos de IU y animación, entonces es mejor ir con nativos.
a pesar de que desarrollas en webview (Phonegap) necesitas aprender algunos pasos básicos en Android e iOS
Cómo funciona Phonegap en dispositivos
Ios Las animaciones y la vista de carga en ios webview está varado y bueno, los efectos de animación pueden observador claramente
Androide
Tenemos que considerar la versión del dispositivo y la compañía del dispositivo para Android mientras ejecutamos el código html. Algunos dispositivos de alta configuración en Android ofrecen una visualización de la animación más clara y eficiente, pero algunos dispositivos (principalmente la versión anterior y algunos de la compañía) no pueden dar buenos efectos de animación. el efecto de reproducción varía de un dispositivo a otro en Android,