Frequently Asked Questions

019_ Guía de buenas prácticas para desarrollar contenidos para iOS y Android

Este documento es una "Guía de buenas prácticas” para desarrollar contenidos para iOS y que funcionen en Android forma razonable.

También se abordan las diferencias sustanciales entre funcionalidades de Tablet Planet en IOS y Android, y otros aspectos a tener en cuenta en el desarrollo de contenidos para ambas plataformas

Minimizar el uso de la memoria RAM

Uno de los mayores inconvenientes que tienen las aplicaciones en Android es la gestión de memoria del propio sistema operativo Android. En el caso de iOS, Apple fabrica el hardware y software de los dispositivos, y utiliza tecnologías de desarrollo muy eficientes en la gestión de memoria. Por eso, los dispositivos Android suelen llevar mucha más memoria que los iOS; y aún así, en aplicaciones que mueven muchos datos en RAM como las apps de Tablet Planet, es más fácil que se cierre una app en un dispositivo Android, aunque tenga mucha RAM, a que lo haga en un dispositivo iOS.

Como ejemplo, el Samsung Galaxy S7 que es un modelo de gama alta en Android lleva 4GB de RAM. Y el modelo más alto de Apple equivalente, el Apple iPhone 6s Plus tiene solo 2GB de RAM.

Por lo anterior hay que tener en cuenta que en iOS, en un dispositivo moderno, es muy difícil conseguir cerrar una app de Tablet Planet por uso excesivo de memoria. Por eso hemos de probar nuestros contenidos en múltiples dispositivos Android para asegurarnos de que no se cierra nuestra app Tablet Planet por falta de RAM en la ejecución de los contenidos.

Estas son algunas pautas para entender como diseñar contenidos ahorrando RAM durante a fase de producción y que dichos contenidos funcionen bien en Android.

Nuestro objetivo es que las apps en Android funcionen fluidas y no se cierren inesperadamente.

1- Tablet Planet carga tres secciones en memoria a la vez
Para ser ágil, se carga el contenido de una sección, y el de la anterior y posterior para se rápido el paso de secciones.

Si se quiere evitar que las apps se cierren, sobre todo en Android pero también en iOS, las secciones deben combinarse de forma que si hay una muy “pesada” en contenido, la anterior y la posterior han de ser más sencillas.

2- Vigila el tamaño REAL en RAM de las imágenes que usas.
El tamaño de un fichero de imagen PNG o JPG en el disco que lo almacena es distinto del tamaño de esa imagen abierta en la RAM de un dispositivo. Y en la RAM normalmente ocupa mucho más.
Hay que tener en cuenta que una imagen al abrirse en la RAM de un dispositivo móvil ocupa como si fuera una imagen de 4 canales (RGB y transparencia).
Para entenderlo un ejemplo real:

Ejemplo en artículo
Imagen: pageItem_landscape_16062_hi@2x.png de 3,9 MB en disco.
Es de 7988 x 2048 pixels y ocuparía en RGB 46,8 MB si fuera un RGB de tres canales.
Pero realmente ocupa (ver abajo del pantallazo) 61,4 MB en la RAM del dispositivo. (4 canales)


Detalle tamaño

3- Limitaciones de tamaño de imágenes raster (JPG yPNG)
En Android las imágenes raster (JPG y PNG) no pueden tener mas de 4000 pixels de lado.
Android no las reconoce. Se recomienda ver las notas técnicas de esta sección de Preguntas frecuentes que pueden resultaros útiles:

http://soporte.tabletplanet.es/kb/faq.php?cid=1

Fundamentalmente estas notas:
http://soporte.tabletplanet.es/kb/faq.php?id=3
http://soporte.tabletplanet.es/kb/faq.php?id=21

4- Usar el texto como elemento vectorial
Para optimizar el uso de RAM de los dispositivos, Tablet Planet permite usar objetos independientes dentro de una página de una sección. Y combinar en una página elementos vectoriales y de imagen.

En vez de hacer que toda una sección sea un solo PNG, la gestión de la RAM de los dispositivos sería más eficiente si los textos fueran elementos vectoriales, y las imágenes ocupasen el menor espacio en pixels posible.

En el ejemplo del PNG anterior, lo ideal es que los textos sean cajas vectoriales, y las imágenes sean objetos independientes. Salvo en aquellos casos que por usar transparencias y efectos, sea necesario tener un objeto que sea un conjunto de imagen y texto como imagen.


5.-Videos
Si se incluyen videos en una sección, en Android no debería de haber nada mas que un video en funcionamiento por sección. Dos o más videos provocan problemas graves de memoria y rendimiento en Android.


6- Probar y probar.

iOS normalmente acepta cualquier widget que hagamos. Pero Android es mucho más delicado en cuanto a gestión de recursos internos (RAM incluida), a temas de tamaño de imagen, a funcionamiento de videos, de HTML …
Por eso, antes de cerrar el widget es necesario copiarlo al mayor número posible de dispositivos Android con la apk de TEST y probarlo. Así se tendrá una pista de como funciona un widget en Android antes de publicar.


Tema StepVideo

En el caso de querer usar la función “Step Video” (fastStepVideo) en Tablet Planet, hemos de tener en cuenta que los reproductores de video de iOS y Android tienen comportamientos distintos a la hora de reproducir este tipo de video. Por ello, si queremos que el mismo Step Video se reproduzca en iOS y Android, hemos de seguir las indicaciones de la nota técnica llamada "18_ Diferencias del Step Video en iOS y Android"

http://soporte.tabletplanet.es/kb/faq.php?id=28

En esa nota está explicado cono se han de crear los Step Video para iOS, para Android, para ambos entornos, y las limitaciones si queremos que funcionen en ambos entornos.


Tema HTML

En el caso de que nuestro proyecto incluya elementos en HTML, hemos de tener en cuenta que en el caso de iOS, los visualizadores de los webview están basados en webkit (el mismo motor de Safari), y que en cada versión de iOS las versiones de webkit implementadas varían, pudiendo variar la interpretación del HTML entre versiones de iOS.

El caso de Android es similar en cuanto a complejidad, solo que a partir de Android 4.4 el motor de renderización está basado en Chrome, y sus especificaciones varían entre las diferentes versiones de Android, y entre las diferentes implementaciones de los navegadores que hace cada fabricante de dispositivos móviles.

Debido a lo anterior, el código HTML que se incluya en los contenidos, y que se quiera que funcione en iOS y Android, deberá de ser lo más "limpio" posible y estar depurado al máximo. Y deberá ser probado en diferentes dispositivos en iOS y Android con diferentes versiones de sistema operativo.


Como medir el éxito de una app de Android a nivel técnico.


Android es un entorno en el que no se puede ir al 100% de éxito, es decir, una app o un contenido es prácticamente imposible que funcione bien en cualquier dispositivo Android, incluso si lo limitamos a versiones de Android superiores e 4.2 o superior.
Lo ideal es tener unas expectativas de éxito de un 60% a un 80% de los dispositivos que puedan descargar la app.
Lo primero, porque cada versión de Android de cada terminal la hace el fabricante del dispositivo a su criterio, no es un estándar de Google (salvo Nexus que es de Google …), e incluye diferentes codecs de video, de interprete javascript, versiones de navegador, etc.
Lo segundo es que las especificaciones técnicas de los dispositivos pueden variar tanto que en dispositivos de gama baja puede llegar a ser imposible técnicamente que funcionen ciertas aplicaciones, como las hechas con Tablet Planet y otras muchas.


Y además, un simple root del movil o tableta Android; una instalación de un “mod” o versión personalizada de Android (tipo Cyanogen); un antivirus; una app de limpieza de ficheros; un insuficiente espacio de almacenamiento; una ejecución de la app desde una memory card, etc, etc. … hacen que los dispositivos Android se puedan comportar de forma imprevisible.


 Last updated Sun, May 17 2015 11:58am

Por favor espera!

Será un segundo!