jueves, 21 de febrero de 2013

Crea aplicaciones y juegos para Android con AppInventor

Esta entrada la voy a dedicar a App Inventor, una herramienta muy interesante desarrollada por el MIT Center que nos permite desarrollar aplicaciones para teléfonos o tabletas con Android.

Tras adquirir hace poco una 'bq Edison', comencé a barajar la posibilidad de realizar alguna aplicación para este sistema, así que me lancé a la búsqueda de información. Tras googlear un poco encontré esta herramienta que te permite desarrollar aplicaciones a través del navegador, en cualquier sistema operativo y sin necesitar conocimientos de programación, ya que se trata de encajar bloques de funciones preprogramadas como si fueran las piezas de un puzzle (en cierto sentido recuerda al sistema de ‘logic bricks’ de Blender) .
Básicamente se trabaja a través de dos herramientas:
- App Inventor Designer, donde se introducen los elementos que componen tu app.
App Inventor Blocks Editor, donde se componen de un modo visual los bloques de programación. Pero al igual que un puzzle, no todas las piezas pueden encajar las unas con las otras existen limitaciones en función de su naturaleza. Cada uno de los elementos introducidos en el Diseñador tiene sus propios bloques, pero además puedes añadir otras funciones y variables para completar tu aplicación.

Además, puedes visualizar tu trabajo a tiempo real con un emulador Android o conectando tu propio teléfono o tableta al ordenador.

app app
App Inventor Designer App Inventor Blocks Editor

- Instalación:
Lo primero de todo es que necesitas tener una conexión de Internet y una cuenta de Gmail, ya que todo tu trabajo se encontrará alojado en la nube y asociado a dicha cuenta.
Además deberás tener java instalado e instalar el paquete de la aplicación en función de tu sistema operativo.
Una vez reúnas todos los requisitos, deberás acceder con tu navegador web a la siguiente dirección: http://beta.appinventor.mit.edu/

- Primeros pasos:
La primera vez que accedas, verás una página de proyectos vacía. Para empezar a trabajar, sólo has de añadir un nuevo proyecto haciendo clic en ‘New’.
En cuanto le asignes un nombre, aparecerá el ‘Diseñador’, desde donde podrás añadir, seleccionar o eliminar todos los elementos que componen tu proyecto. Aquí puedes editar su tamaño, posición, imagen, aunque también puedes hacerlo dinámicamente a través del ‘Editor de Bloques’.
Cuando abras este editor, a la izquierda verás tres paletas agrupadas en pestañas (Built-In, My Blocks, Advanced) donde se encuentran los juegos de bloques. Sólo has de ir seleccionandolos y arrastrandolos sobre el espacio de trabajo, para ir componiendo todo como en un gran puzzle.
Como podrás observar, en ‘Built-In’ se encuentran los bloques agrupados por tipo (Texto, Listas, Lógica, etc.) y en ‘My Blocks’, los relacionados con todos los elementos que has incorporado desde el ‘Diseñador’ a tu proyecto y que se irán actualizando automáticamente.
Explicarlo es más difícil que ponerlo en práctica, así que ya puedes jugar con ellos para comprobar la simplicidad de la idea.

- Comprobando tus progresos al momento:
Para ver de una manera interactiva el resultado de tus avances tienes dos opciones: abrir un emulador desde el Editor de Bloques o conectar tu propio dispositivo Android.
Para lo primero, sólo necesitas hacer clic en el botón ‘New Emulator’ que abrirá un dispositivo virtual al que conectarás cuando finalice su arranque pulsando en ‘Connect to Device’.
Para lo segundo, puede que necesites algo más de paciencia, aunque tampoco es excesivamente complicado y ganarás en ‘agilidad’. Existen dos modos: uno mediante wifi y otro a través de un cable usb que conecte tu dispositivo con el ordenador. El primero no lo he probado pero parece bastante sencilla de implementar. Para el segundo te tocará pelear algo más, ya que necesitarás instalar los drivers adecuados para tu sistema operativo y conectar tu tableta mediante ‘ADB’, para lo que necesitarás también instalar el SDK de Android.

PROS:
- Facilidad de uso y bastante intuitiva. La curva de aprendizaje es realmente rápida.
- El sistema de ‘puzzle’ es realmente ingenioso. Si has trabajado con ‘logic bricks’ de Blender podrás observar cierto paralelismo en el flujo de trabajo.
- Permite desarrollar tu aplicación con múltiples ‘Screens’.
- La ‘paleta’ de elementos con los que trabajar es realmente completa y permite tener un control bastante preciso sobre muchos de los componentes.
- Posibilidad de integrar Bases de datos Web con TinyWebDB

CONTRAS:
- Esta aplicación utiliza básicamente Java. Esto es algo a considerar, ya que últimamente este entorno ha sido protagonista de bastantes problemas de seguridad.
- El tamaño final de la aplicación desarrollada (.apk) resulta quizás demasiado grande para lo que suele verse en el Market de Android.
- Si eres poco organizado, la estructura de los bloques del puzzle puede tornarse caótica con los consiguientes quebraderos de cabeza a la hora de localizar determinados elementos.
- Además del caos anterior, el creciente número de bloques ralentiza bastante la aplicación y se pierde bastante fluidez tanto en la edición como, posteriormente, dentro del propio juego.
- Por el momento, no permite la duplicación o introducción dinámica de ‘sprites’: Todos los elementos que componen la app deben encontrarse desde el principio en tu espacio de trabajo y luego has de jugar a habilitarlos o deshabilitarlos a través de los bloques de código.
- Los ajustes automáticos (‘Fill parent’ en ‘Width’ o ‘Height’) de los distintos elementos que permiten adaptar su tamaño a los distintos dispositivos no tienen el resultado esperado: al activar estos ajustes en el Diseñador o ajustando el tamaño a través de bloques, los elementos visuales de tu App adquieren un aspecto borroso o poco definido que resta profesionalidad al resultado final. (La única solución que he encontrado de momento es editar el .apk resultante con alguna herramienta como ApptoMarket y  configurar la resolución en ‘any’ y ‘not resizable’.

De todos modos, algunas de las desventajas que enumero son temporales puesto que estas cuestiones, entre otras muchas, se encuentran ahora mismo en la lista de desarrollo.

Como todo movimiento se demuestra andando, aquí tenéis ‘Arkablocks’, un pequeño juego desarrollado con esta herramienta. Se trata de una versión simplificada del clásico ‘Arkanoid’ para el que también he empleado ‘Inkscape’ en la elaboración de los elementos visuales (‘sprites’, botones, fondos, etc.).

a a a

Todo el desarrollo del juego se ha realizado con el apoyo de una tableta 'bq Edison' de 10" y apenas he podido probarlo en un 'Samsung Galaxy Mini 3'. Por ello, si instalas este juego en un teléfono móvil seguramente encontrarás más de un problema con los tamaños de fuente o  la distribución de los contenidos (entre otros muchos 'bugs' derivados del cambio de tamaño).

La ausencia de fluidez en el vídeo (máximo de 3 fps) es debida a las limitaciones de la herramienta de captura que he utilizado (Android Screen Capture). Además, la fluidez con la que corre el juego una vez instalado tampoco es la ideal debido a que App Inventor todavía no está suficientemente optimizado para su uso en tabletas: la edición del .apk para mejorar su aspecto, así como el elevado número de bloques y la cantidad de 'sprites' son factores que restan velocidad al juego.

Con todo, App Inventor es una herramienta más que interesante, a la que habrá que seguir de cerca, puesto que si siguen en la dirección correcta puede ser otro paso más para ‘democratizar’ el software y permitir que gente con pocos conocimientos de programación pueda realizar sus propios programas.


7 comentarios:

  1. Vaya, veo que existen más contras que pro. Has encontrado algún programa similar más "cómodo" ?

    ResponderEliminar
  2. Ten en cuenta que, como ya comento arriba, muchos de los inconvenientes que describo serán resueltos en las próximas actualizaciones del programa. El número de contras puede parecer elevado pero es natural puesto que cuanto más le pidas a una herramienta de este tipo es cuando comenzarás a ver sus verdaderas limitaciones.
    Existen programas similares, pero bastantes de ellos son de pago y seguramente incurrirán en los mismos problemas derivados de la 'simplicidad' de la idea:
    Si googleas un poco verás algunos de ellos como 'Andromo', 'AppsGeyser', 'Snappii', 'Buzztouch'... pero ya te adelanto que no llegarán a tener la versatilidad y potencia de programar una aplicación desde cero a base de código.

    ResponderEliminar
  3. Buen articulo. Gracias por tu análisis. Hace poco que lo he empezado a utilizar. No tengo ni idea de programar pero me gusta la idea de poder desarrollar mis propias app. También me gustaría aprender a base de código pero siempre que me he asomado al mundo "fuente" me parece algo imposible. No se si podrías recomendarme por donde empezar.
    Un saludín.

    ResponderEliminar
    Respuestas
    1. Por fortuna existen miles de páginas especializadas y tutoriales que abordan los distintos lenguajes de programación para distintos niveles de aprendizaje. Nunca había sido tan fácil como ahora tener a nuestro alcance toda esa información.
      Con la ayuda de Google, busca documentación sobre las características de cada lenguaje y sus usos principales, de este modo tendrás una visión general de ellos y podrás decidirte por aquel que cumpla con tus necesidades. Por ejemplo: http://www.muypymes.com/2013/04/17/lenguajes-de-programacion-demandados-empresas/
      A partir de ahí, busca la información que se corresponda a niveles básicos para ir subiendo poco a poco. Yo no intentaría empezar con manuales avanzados, puesto que al no comprender nada, es fácil caer en el desánimo y abandonar sin haber logrado nada. Así que, ármate de paciencia y sé constante.
      Saludos y suerte con tu búsqueda ;)

      Eliminar
  4. A mi me mata java pero ahora que qt 5 soporta a android voy a ver que hago con c++ y c4droid parece una opción interesante.
    Por cierto he probado tu juego en un moto RAZR d1 xt 915 android 4.1.2 y el problema es la velocidad de la pelota es muy rápido comparado con el bloquecito... Espero que sigan puliendo app inventor ya que es poderosa para los que no nos llevamos bien con java

    ResponderEliminar
    Respuestas
    1. Dímelo a mí que ahora ando jugueteando con Jmonkey y en el que todo gira alrededor de Java :P
      Efectivamente, la velocidad de la pelotita fue un quebradero de cabeza, porque variaba mucho en función del dispositivo de prueba. Al final opté por dejarla en un supuesto punto intermedio que supongo que en algunos dispositivos se disparará como dices.
      Hace un tiempo que no sigo los avances de AppInventor, pero desde luego tiene un montón de posibilidades para adentrarse en la programación de este tipo de aplicaciones...
      Saludos

      Eliminar
  5. Hola Gracias buen aporte !!!! podrías pasar el código fuente

    ResponderEliminar

¡Me gusta conocer tu opinión! Pregunta si tienes alguna duda, sugerencia o encuentras algún error.

AddThis

Cookie Consent