jueves, febrero 25, 2016

Desarrollo ágil para móviles con Cordova

jueves, febrero 25, 2016

Hace unos pocos días quise comprobar cómo estaba progresando los desarrollos relacionados con Cordova. Hoy cuando hablas con una empresa que no sea pequeña te responden alegremente que sus soluciones de aplicaciones móviles se basan en Phonegap, y en que la gente que sabe del tema está migrando a Cordova (es lo mismo, Adobe donó Phonegap a Apache).


Algunos podrán pensar que sólo es cuestión de gustos (y puede que sí porque no hay nada que se pueda hacer en uno y en el otro no) pero lo mejor que he visto de Cordova es que mucho más fácilmente soporta ser modular (algo sumamente importante si trabajas en un equipo de desarrollo que sepa hacer las cosas).



Que nadie os engañe, este tipo de frameworks son soluciones para gestionar una "simulación" de aplicación móvil en los dispositivos. El funcionamiento es sencillo, los desarrolladores programan en HTML5, CSS3 y Jquery y el framework te lo introduce dentro de una app para la plataforma que se ordene (da igual iOS, Android, Windows, Linux, Mac... el proceso es el mismo, sólo hay que ordenar generar la misma app en diferentes sitios).


Todo empezó debido a una corta conversación (por mi parte) en la que la otra parte no parecía tener ni idea de qué estaba hablando (decía que un desarrollador Android y HTML son lo mismo, después de preguntar qué significa DB) me decidí a hacer algo simple sobre Cordova.

Su desarrollo fue muy ágil, no me costó nada de tiempo (y eso que sólo utilicé gedit) y con dos simples comandos me encontré todo funcionando realmente bien. Me sorprendió la facilidad que tiene de instalar módulos, y la disponibilidad que hay genérica de obtenerlos con una simple llamada por línea de comandos.

Mi sorpresa fue cuando la probé sobre un dispositivo móvil real, una Nexus 7 (2013) y también un Huawei P7. Me encontré que los efectos de Jquery que había utilizado para testear no estaban funcionando a la velocidad deseada (rateaban).

Leyendo por Internet quejas de la gente sobre este mismo hecho (ya lo había visto sobre iOS), la causa de todo ello (por qué sobre el PC y la VM de Android iba todo fluido y en el dispositivo real no) decían que era problema de que Jquery no aprovechaba al máximo la aceleración por hardware y CSS3 sí, así que decidí comprobarlo. Migré todos los efectos a CSS3 forzando la aceleración por hardware, y por supuesto noté una pequeña mejoría en el PC y en la MV en términos de velocidad (es la grandiosa ventaja de CSS3), pero en el dispositivo era mínima la mejora.

Verifiqué que AndroidManifest.xml contenía los atributos correctos en los lugares apropiados, android:hardwareAccelerated="true". Seguía obteniendo el mismo resultado sobre el dispositivo nativo.

Así que dije, y ¿por qué no hago lo que todos? Lo subí y lo utilicé bajo el navegador desde el dispositivo móvil (ya que el código es el mismo). Obtuve los mismos resultados, era lo esperado. De hecho añadí que según qué navegador haga un efecto u otro para ver la diferencia de rendimiento por si alguien quiere comprobar las ventajas de uno y otro (es bastante notable).

Conclusión, nada más costoso y eficiente como desarrollo nativo para cada plataforma, hasta el momento esta solución es universal, sí, pero deja mucho que desear en temas de rendimiento, aunque todo se puede mejorar por nuestra parte.
Bit
Hide Me!