Gradle para Android (primera parte)

Este es el primero de una serie de artículos sobre Gradle y su uso en Android Studio, explicando que es y para que sirve. Adelante!

  • QUE ES GRADLE

Gradle es el sistema de compilación y construcción (builds) que Google ha elegido para Android. Es un sistema independiente, que se integra en Android Studio a través de un plugin. AS, por tanto, no se encarga de compilar y ejecutar los proyectos, sino que delega esa funcionalidad en Gradle.

El funcionamiento de Gradle se estructura en torno a unidades de ejecución autocontenidas, llamadas ‘task’ (tareas). Cada tarea incluye una o varias órdenes a ejecutar, y opcionalmente dependencias de otras tareas, inputs y outputs (archivos de entrada/salida de datos), etc.

  • EJERCICIO: GRADLE Y JAVA

Puesto que Android se programa en Java, te propongo un ejercicio muy sencillo para empezar con lo mas básico de Gradle, desde la terminal. Esto te será muy útil cuando te plantees poner tus proyectos bajo un servicio de Integración Continua (como Jenkins), por ejemplo. Asumo que tienes instalado Android Studio en tu ordenador ( y por lo tanto, Java y Gradle), y usas la terminal (si estás en Windows, puedes usar la que viene al instalar Git, que por supuesto también tienes instalado).

1-Crea una carpeta y dentro, crea a su vez el típico HolaMundo.java que devuelve “Hola Mundo” en su función main (por seguir la tradición, vaya):

2-Compila y ejecuta el archivo como cuando estudiabas java:

La ejecución debería devolver “Hola Mundo”. Ahora viene lo interesante, vamos a hacer que Gradle se encargue de realizar la compilación y ejecución de este ejemplo (borra cualquier archivo *.class generado).

3-Comprueba tu instalación de Gradle:

Deberías obtener algo como esto:

Para ver las tareas disponibles en Gradle por defecto, ejecuta el comando: gradle tasks  y obtendrás:

La tarea que nos interesa ahora es gradle init. Con ella creamos un nuevo build. Al hacerlo verás que han sido creados algunos archivos familiares (te sonarán de verlos en Android Studio) al proyecto. Para asegurar que los builds de proyectos Android son independientes de la versión de Gradle instalada en cada pc (una pesadilla de compatibilidad al trabajar en equipo, por ejemplo), Android Studio usa el ‘gradle wrapper’. Es algo así como un ‘gradle portátil’ que se empaqueta dentro del proyecto y lo hace independiente de la configuración de Gradle instalada. Está formado por:

gradle (carpeta) contiene las librerias .jar y los archivos de configuración del gradle wrapper.

gradlew (linux y mac) y gradle.bat (windows) los archivos ejecutables que usaremos.

settings.gradle contiene info sobre la configuración global del projecto, útil para incluir nuevos módulos (mas adelante)

build.gradle el mas importante, y donde se incluyen las tareas y parámetros con los que Gradle realizará el build.

Abre build.gradle con tu editor favorito (yo soy de Vim), verás una plantilla (la sintaxis es Groovy, muy fácil de entender), bórralo todo y escribe:

Como puedes ver hemos definido una tarea nueva, de tipo JavaExec. Al aplicar el plugin de Java, podrás usar tareas y plantillas predefinidas. Ejecuta  ./gradlew tasks (en windows, ‘gradle.bat tasks’), y (tras descargarse los componentes necesarios) verás tareas java añadidas a la lista, así como la tarea miTarea en Other Tasks. Antes de ejecutarla, mueve el archivo HolaMundo.java al directorio /src/main/java pues es donde Gradle espera encontrarlo (otro estándar de Java). Ahora si, ejecuta:

y deberías obtener:

Enhorabuena! Ya has compilado y ejecutado tu primer proyecto con Gradle.

En el siguiente post seguiremos profundizando en Gradle, comparte si te ha parecido interesante. Saludos!

Pedro Gonzalez

Google Carboard, primeras impresiones

Probablemente hayas oído hablar de las Google Cardboard. La Realidad Virtual está a la vuelta de la esquina, es el ‘next big thing’, según vemos por todas partes. Parece que los grandes nombres de la industria están inmersos en una carrera para posicionarse con ventaja en lo que se espera que sea la siguiente revolución en el campo de las nuevas tecnologías, que inundará campos tan diversos como el entretenimiento, la educación, la publicidad, etc.

Por lo que hemos visto hasta ahora, respecto al hardware hay dos segmentos claramente diferenciados, la gama alta y la opción económica. En el primero destacan Samsung, Oculus Rift o HTC, con rumores de que Apple y Microsoft preparan productos similares, mientras que en el segundo el fabricante mas avanzado es Google con sus Google CardBoard. Estas opciones parecen replicar los ecosistemas existentes en los dispositivos móviles, donde Apple opta por productos exclusivos de gran prestigio y Google por opciones para todos los bolsillos. En mi caso, siendo desarrollador Android, he decidido hacerme con una CardBoard para iniciarme en el desarrollo de aplicaciones de Realidad Virtual, y en este post os doy mis primeras impresiones al respecto.

Siguiendo su política ‘open source’ (discutible, pero eso para otro día), Google publicó los planos con los que cualquiera puede construirse su propio modelo de CardBoard. Existen ya multitud de fabricantes que producen modelos compatibles con el estándar de Google. Yo por mi parte elegí el fabricante alemán ZAAK, en concreto el modelo Dark Shader UV2. Aunque durante el tiempo que estuve esperando que me llegaran (2 semanas desde Alemania, me parece demasiado), he encontrado fabricantes en España, con lo que te llegan antes y te ahorras los gastos de envío.

El kit llega perfectamente embalado, y las gafas son muy sencillas de montar. Son de una única pieza de cartón, sólo es necesario doblar los laterales y presionar los velcros para que conserve la forma. Este modelo no lleva correa de sujección, algo que para un uso prolongado es recomendable.

google cardboardgoogle cardboard

El siguiente paso es instalar la aplicación oficial Cardboard de Google Play, para cargar en el móvil los ajustes propios del modelo de Cardboard que tengas. Además tiene demos, enlaces a aplicaciones de Google (recomiendo empezar probando la cámara en la calle o el parque).

Y que tal se ve? Pues si has estado alguna vez en el cine viendo una película en 3D, ya te haces una idea. Si no, te llevarás una sorpresa: la sensación de inmersión tridimensional está muy conseguida, apoyada por el audio (tengo pensada una serie de artículos sobre el audio en esto de la realidad virtual, para mas adelante) estéreo. El móvil que he utilizado en las pruebas es un HTC One M7, supongo que con modelos recientes la sensación es aún mejor. Lo bueno de este móvil es que tiene doble altavoz estéreo frontal, con lo que la sensación espacial del audio queda bastante realista.

En resumen, creo que Google Cardboard es la opción perfecta para iniciarse en el mundo de la realidad virtual, y un paso natural en la evolución de un desarrollador Android (por cierto, también se dice que Google planea una variante de Android específica para realidad virtual, veremos…). En artículos siguientes hablaré de los primeros pasos con Android Studio y Unity3D en el desarrollo para Cardboard. Suscríbete para recibir alertas de nuevos artículos. Hasta pronto,

Pedro Gonzalez