En realidad, para empezar a programar aplicaciones Android, solo necesitamos una herramienta, que, además, es gratuita: el entorno de desarrollo Android Studio. El instalador de Android Studio se asegurará de que nuestro sistema dispone de una versión adecuada del JDK de Java y el SDK de Android. Podríamos elegir otros IDE, pero Android Studio es el estándar de Google, y quizá el mejor. Tiene tantas opciones que es posible que al principio solo necesitemos una pequeña parte.
Ya vimos algunas de sus funcionalidades en el tema anterior, y, mientras lo usamos, aprenderemos otras tantas. Pero aparte del entorno de desarrollo, o integrado en él, podemos hacer uso de otras herramientas muy útiles y, dependiendo del proyecto, imprescindibles. Hagamos un listado rápido:
Git
Un gestor de versiones podría considerarse imprescindible para cualquier proyecto, salvo para una aplicación de prueba sin importancia para mantenerla. El cualquier otro caso, un gestor de versiones te permite llevar la cuenta de todos los cambios que se han producido en el proyecto. De este modo, si en un momento dado queremos volver atrás o unir el código de varios programadores, será sencillo.
Un gestor de versiones permite desarrollar una app entre varios programadores, asegurando la integridad del código, es decir, que dos personas no modifican el mismo código y lo dejen inservible. Hay muchas herramientas de este tipo, pero Git es el control de versiones más usado hoy en día. Es potente y sus comandos son relativamente sencillos, solo hace falta un poco de práctica y entender bien la arquitectura de gestión de versiones que se monte en cada caso. Además, si no queremos usar la línea de comandos, existen aplicaciones gráficas, o incluso el propio Android Studio, que tienen incorporadas muchas funcionalidades de gestión de versiones.
Genymotion
Un emulador es una pequeña máquina virtual que emula el hardware de terminal real, al que podemos instalar una versión de Android y probar en él nuestras apps. Si nuestro ordenador soporta virtualización, la velocidad de ejecución de la máquina aumentará. De todos modos, los emuladores actuales son (afortunadamente) mucho más rápidos que antes. También son más realistas con respecto a las características de hardware. Si necesitamos comprobar si nuestra app se ve y funciona perfectamente en la mayoría de terminales del mercado pero no disponemos de ellos físicamente, usaremos emuladores. Desde Android Studio podemos crear un dispositivo virtual fácilmente con las características de memoria, pantalla y versión del
sistema, entre otras. Sin embargo, si el ordenador en el que desarrollamos no es muy potente y dispone de virtualización, el emulador de Android Studio puede ser algo lento. Si es así, puedes utilizar los de Genymotion, que parecen ser los más potentes. Lo mejor es descargarlo y comprobarlo en cada caso.
Postman

En un capítulo posterior, veremos qué es un servicio web y como acceder a él desde nuestra app, pero básicamente no es más que un programa instalado en algún servidor conectado a internet que nos permite obtener y/o enviar datos para ser procesados y almacenados. Para poder probar esos servicios web con facilidad, necesitamos una aplicación que permita definirlos y hacer pruebas sobre ellos. Estas aplicaciones pueden resultar de gran ayuda, sobre todo cuando los servicios no están bien documentados o quizá aún están en fase de desarrollo. Si queremos tener una idea de los que nos devolverá el servicio cuando lo usemos en nuestra app, necesitamos estas aplicaciones.
Postman es una de las más conocidas, pero existen otras, como SoapUI, Widzler o SoapSonar.
Axure
Para diseñar nuestra interfaz gráfica antes de empezar con el desarrollo, podemos usar papel y lápiz, pero si queremos un resultado más profesional y guardar los diseños junto con el resto del código, podemos utilizar una aplicación de diseño de pantallas, como Axure, MockPlus, Adobe XD, Mock Flow, JustInMind, Cacoo, Frame Box o muchas otras.
Estas aplicaciones nos permiten colocar los widgets de cada ventana, moverlos, cambiarlos de tamaño, etcétera. Algunas de ellas también nos permiten diseñar un flujo de ventanas, que será el camino que tome el usuario de una pantalla a otra mientras utiliza nuestra app.
Jira
Principalmente cuando se trabaja en equipo, una aplicación de gestión de trabajo como Jira, Redmine o Trello puede ser de gran ayuda. Estas herramientas nos permiten hacer un listado de tareas, de errores que depurar y de nuevas funcionalidades que desarrollar. De ese modo, podemos calcular el tiempo que se tardará en terminar el desarrollo y asignar las tareas entre los programadores en el tiempo disponible.
Estas son algunas herramientas básicas y es conveniente conocerlas, pero no significa que sean de utilidad en todos nuestros proyectos, y probablemente tendremos que utilizar otras diferentes para otros fines. Como comentamos, el desarrollo de aplicaciones en general, y móviles en particular, avanza a pasos agigantados, y pronto surgirán nuevas necesidades y nuevas herramientas que nos ayuden en cada uno de nuestros proyectos. Para estar al día, no hay más que leer blogs de desarrolladores de vez en cuando.