martes, 6 de noviembre de 2012

Recursos remotos en las aplicaciones Android (I)


Conforme se introducen nuevos dispositivos Android con resoluciones cada vez mayores en el mercado, necesitamos distribuir archivos de imágenes cada vez más pesados para soportarlas, con lo que la administración y distribución de recursos se convierte en un problema real.

Los usuarios tienden a quejarse sobre las aplicaciones que ocupan demasiado en sus dispositivos. ¿Qué sentido tiene almacenar gráficos en Alta Definición en un pequeño teléfono, que ni siquiera se puede conectar a una pantalla externa, con una modesta resolución QVGA?

Una de las formas de solucionar este problema, quizás la más "oficial", es crear múltiples archivos apk, cada uno con un subconjunto diferentes de imágenes para cada densidad de pantalla soportada.

Pero el propio Google recomienda el uso de un único archivo apk por varias razones:

  • La publicación y administración de la aplicación es más sencilla.
  • Sólo tienes una rama de código para todas las resoluciones
  • Tu aplicación puede adaptarse a cambios de configuración en el dispositivo
  • Permite la instalación de la aplicación entre dispositivos diferentes

Puedes encontrar información adicional sobre estos problemas en la página enlazada anteriormente (sólo en inglés, me temo).

Otra manera de afrontar este problema consiste en crear diferentes aplicaciones separadas, habitualmente dos, repartiendo los recursos entre ellas de tal manera que cada una tendrá sólo un subconjunto de las imágenes. En Google Play puedes encontrar aplicaciones "duplicadas" con nombres como "Juego Fantástico" y "Juego Fantástico HD", en donde la segunda es más grande porque contiene gráficos para dispositivos en Alta Definición.

Pero esto conlleva además de las desventajas de los múltiples archivos apk, la dispersión de toda la promoción social de tu app.

La mejor opción parece ser almacenar los recursos en un servido remoto, y cargarlos en la aplicación bajo demanda en tiempo de ejecución. No obstante este método tiene dos desventajas fundamentales:


  • Como los recursos son cargados dinámicamente en tiempo de ejecución, la clase R no estará disponible al compilar, con lo que ello conlleva. Además no hay ningún soporte oficial en el API para hacer cosas como esta, así que debes implementar un subsistema de gestión de recursos por tu cuenta.
  • Necesitarás un servidor remoto para almacenar y recuperar los recursos cuando los usuarios los requieran.

Como contrapartida tiene la gran ventaja de instalar en el dispositivo del usuario sólo los recursos que este necesite, así que es el método que he decidido seguir en el futuro al desarrollar juegos para Android y otras aplicaciones que requieran el uso de muchas imágenes prediseñadas.

lunes, 5 de noviembre de 2012


¡Hola!

Francisco Marzoa
Mi nombre es Francisco Marzoa, o solamente Fran para los amigos.

Soy un programador independiente de Android, español, que ha tenido éxito con mi primer juego titulado La Ruleta Afortunada, alcanzando más de 1,2 millones de instalaciones únicamente desde Google Play a los cuatro meses de su publicación.

Me gustaría compartir -y debatir sobre- las cosas que he aprendido sobre promoción de aplicaciones, y también sobre programación en Android con otros desarrolladores. Y esa es la razón por la que he creado este blog.

Intentaré mantenerlo en dos lenguajes, Inglés y Español, y actualizarlo con la mayor frecuencia posible.

Si sabes inglés, puedes aprender algo más sobre mí en esta entrevista en TechRepublic:

Indie developer hits number two on Amazon with his first Android app

También he sido entrevistado recientemente en La Nueva España, el diario regional más leído en Asturias. Por desgracia el artículo completo sólo puede encontrarse en la edición en papel y no en su versión online. Si os interesa, aquí lo tenéis escaneado:

Francisco Marzoa en La Nueva España

También puedes consultar mis perfiles en Google Plus y en Linked In, aunque no los mantengo demasiado actualizados, pero son mejor que nada... ;-)

¡Nos vemos!