Estructura de Un Proyecto en Android Studio 2
Estructura de Un Proyecto en Android Studio 2
Estructura de Un Proyecto en Android Studio 2
El ritmo de actualizaciones de Android Studio es bastante alto, por lo que algunos detalles de este
artículo pueden no ajustarse exactamente a la última versión de la aplicación. Este artículo se
encuentra actualizado para la versión de Android Studio 2.0
Para empezar a comprender cómo se construye una aplicación Android vamos a crear
un nuevo proyecto en Android Studio y echaremos un vistazo a la estructura general del
proyecto creado por defecto.
Para crear un nuevo proyecto ejecutaremos Android Studio y desde la pantalla de
bienvenida pulsaremos la opción “Start a new Android Studio project” para iniciar el
asistente de creación de un nuevo proyecto.
La versión mínima que seleccionemos en esta pantalla implicará que nuestra aplicación
se pueda ejecutar en más o menos dispositivos. De esta forma, cuanto menor sea ésta, a
más dispositivos podrá llegar nuestra aplicación, pero más complicado será conseguir
que se ejecute correctamente en todas las versiones de Android. Para hacernos una
idea del número de dispositivos que cubrimos con cada versión podemos pulsar sobre el
enlace “Help me choose”, que mostrará el porcentaje de dispositivos que ejecutan
actualmente cada versión de Android. Por ejemplo, en el momento de escribir este
artículo, si seleccionamos como API mínima la 15 conseguiríamos cubrir un 94,0% de los
dispositivos actuales. Como información adicional, si pulsamos sobre cada versión de
Android en esta pantalla podremos ver una lista de las novedades introducidas por dicha
versión.
Por último, en el siguiente paso del asistente indicaremos los datos asociados a esta
actividad principal que acabamos de elegir, indicando el nombre de su clase java
asociada (Activity Name) y el nombre de su layout xml (algo así como la interfaz gráfica
de la actividad, lo veremos más adelante). No nos preocuparemos mucho por ahora de
todos estos datos por lo que podemos dejar todos los valores por defecto. Más adelante
en el curso explicaremos cómo y para qué utilizar estos elementos.
Una vez configurado todo pulsamos el botón Finish y Android Studio creará por nosotros
toda la estructura del proyecto y los elementos indispensables que debe contener. Si
todo va bien aparecerá la pantalla principal de Android Studio con el nuevo proyecto
creado.
En ocasiones Android Studio no realiza correctamente esta primera carga del proyecto y
es posible que os encontréis con un error del tipo “Rendering Problems…“. Para
solucionarlo no tenéis más que cerrar la ventana del editor gráfico y volverla a abrir
pulsando sobre el fichero “activity_main.xml” que podéis ver en el explorador de la parte
izquierda.
En la parte izquierda, podemos observar todos los elementos creados inicialmente para
el nuevo proyecto Android, sin embargo por defecto los vemos de una forma un tanto
peculiar que podría llevarnos a confusión. Para entender mejor la estructura del proyecto
vamos a cambiar momentáneamente la forma en la que Android Studio nos la muestra.
Para ello, pulsaremos sobre la lista desplegable situada en la parte superior izquierda, y
cambiaremos la vista de proyecto al modo “Project”.
Tras hacer esto, la estructura del proyecto cambia un poco de aspecto y pasa a ser
como se observa en la siguiente imagen:
Carpeta /app/src/main/res/
Contiene todos los ficheros de recursos necesarios para el proyecto: imágenes, layouts,
cadenas de texto, etc. Los diferentes tipos de recursos se pueden distribuir entre las
siguientes subcarpetas:
Carpeta Descripción
/res/anim/
Contienen la definición de las animaciones utilizadas por la aplicación.
/res/animator/
No todas estas carpetas tienen por qué aparecer en cada proyecto Android, tan sólo las
que se necesiten. Iremos viendo durante el curso qué tipo de elementos se pueden incluir
en cada una de ellas y cómo se utilizan.
Como ejemplo, para un proyecto nuevo Android como el que hemos creado, tendremos
por defecto los siguientes recursos para la aplicación:
Como se puede observar, existen algunas carpetas en cuyo nombre se incluye un sufijo
adicional, como por ejemplo “values-w820dp”. Estos, y otros sufijos, se emplean para
definir recursos independientes para determinados dispositivos según sus
características. De esta forma, por ejemplo, los recursos incluidos en la carpeta
“values-w820dp” se aplicarían sólo a pantallas con más de 820dp de ancho, o los
incluidos en una carpeta llamada “values-v11” se aplicarían tan sólo a dispositivos cuya
versión de Android sea la 3.0 (API 11) o superior. Al igual que estos sufijos “-w” y “–v”
existen otros muchos para referirse a otras características del terminal, puede
consultarse la lista completa en la documentación oficial del Android.
Entre los recursos creados por defecto cabe destacar los layouts, en nuestro caso sólo
tendremos por ahora el llamado “activity_main.xml”, que contienen la definición de la
interfaz gráfica de la pantalla principal de la aplicación. Si hacemos doble clic sobre este
fichero Android Studio nos mostrará esta interfaz en su editor gráfico, y como podremos
comprobar, en principio contiene tan sólo una etiqueta de texto con el mensaje “Hello
World!”.
Pulsando sobre las pestañas inferiores “Design” y “Text” podremos alternar entre el editor
gráfico (tipo arrastrar-y-soltar), mostrado en la imagen anterior, y el editor XML que se
muestra en la imagen siguiente:
servicios, …), o los permisos necesarios para su ejecución. Veremos más adelante más
detalles de este fichero.
Fichero /app/build.gradle
Contiene información necesaria para la compilación del proyecto, por ejemplo la versión
del SDK de Android utilizada para compilar, la mínima versión de Android que soportará
la aplicación, referencias a las librerías externas utilizadas, etc. Más adelante veremos
también más detalles de este fichero.
En un proyecto pueden existir varios ficheros build.gradle, para definir determinados
parámetros a distintos niveles. Por ejemplo, en nuestro proyecto podemos ver que existe
un fichero build.gradle a nivel de proyecto, y otro a nivel de módulo dentro de la carpeta
/app. El primero de ellos definirá parámetros globales a todos los módulos del proyecto, y
el segundo sólo tendrá efecto para cada módulo en particular.
Carpeta /app/libs
Puede contener las librerías java externas (ficheros .jar) que utilice nuestra aplicación.
Normalmente no incluiremos directamente aquí ninguna librería, sino que haremos
referencia a ellas en el fichero build.gradle descrito en el punto anterior, de forma que
entren en el proceso de compilación de nuestra aplicación. Veremos algún ejemplo más
adelante.
Carpeta /app/build/
Contiene una serie de elementos de código generados automáticamente al compilar el
proyecto. Cada vez que compilamos nuestro proyecto, la maquinaria de compilación de
Android genera por nosotros una serie de ficheros fuente java dirigidos, entre otras
muchas cosas, al control de los recursos de la aplicación. Importante: dado que estos
ficheros se generan automáticamente tras cada compilación del proyecto es importante
que no se modifiquen manualmente bajo ninguna circunstancia.
A destacar sobre todo el fichero que aparece desplegado en la imagen anterior, llamado
“R.java”, donde se define la clase R. Esta clase R contendrá en todo momento una serie
de constantes con los identificadores (ID) de todos los recursos de la aplicación incluidos