Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Descripción general de proyectos

Un proyecto de Android Studio contiene todo lo que define tu lugar de trabajo para una app: desde código fuente y recursos hasta código de prueba y configuraciones de compilación. Cuando comienzas un proyecto nuevo, Android Studio crea la estructura necesaria para todos los archivos y los hace visibles en la ventana Proyecto del lado izquierdo del IDE (haz clic en Ver > Ventanas de herramientas > Proyecto). En esta página, se proporciona una descripción general de los componentes principales de tu proyecto.

Módulos

Un módulo es un conjunto de archivos fuente y opciones de configuración de compilación que te permiten dividir tu proyecto en unidades discretas de funcionalidad. Tu proyecto puede tener uno o más módulos, y un módulo puede usar otro como dependencia. Cada módulo se puede compilar, probar y depurar de forma independiente.

Los módulos adicionales a menudo son útiles cuando creas bibliotecas de código dentro de tu propio proyecto o si deseas crear diferentes conjuntos de código y recursos para distintos tipos de dispositivos, como teléfonos y wearables, y al mismo tiempo mantener todos los archivos almacenados dentro del mismo proyecto y compartir código.

Para agregar un módulo nuevo a tu proyecto, haz clic en Archivo > Nuevo > Nuevo módulo.

Android Studio ofrece diferentes tipos de módulos:

Módulo de app para Android
Proporciona un contenedor para el código fuente de tu app, los archivos de recursos y las configuraciones de niveles de app, como el archivo de compilación de nivel de módulo y el archivo de manifiesto de Android. Cuando creas un proyecto nuevo, el nombre predeterminado del módulo es "app".

En la ventana Crear módulo nuevo, Android Studio ofrece los siguientes tipos de módulos de apps:

  • Módulo de teléfono y tablet
  • Módulo de Wear OS
  • Módulo de Android TV
  • Módulo de Glass

Cada uno proporciona archivos esenciales y algunas plantillas de códigos que son apropiadas para el tipo de dispositivo o app correspondiente.

Puedes obtener más información en Cómo agregar un módulo para un dispositivo nuevo.

Módulo de funciones dinámicas
Representa una función modularizada de la app que puede aprovechar la Dynamic Delivery de Google Play. Por ejemplo, con los módulos de funciones dinámicas, puedes proporcionarles a tus usuarios determinadas funciones de tu app on demand o como experiencias instantáneas por medio de Google Play Instant.

Para obtener más información, consulta Cómo agregar compatibilidad con Dynamic Delivery.

Módulo de biblioteca
Proporciona un contenedor para tu código reutilizable, que puedes usar como dependencia en otros módulos de app o importar a otros proyectos. A nivel estructural, un módulo de biblioteca es lo mismo que un módulo de app, pero cuando se compila, crea un archivo de código en lugar de un APK, por lo que no se puede instalar en un dispositivo.

En la ventana Crear módulo nuevo, Android Studio ofrece los siguientes módulos de biblioteca:

  • Biblioteca de Android: Este tipo de biblioteca puede contener todos los tipos de archivos admitidos en un proyecto de Android, como el código fuente, los recursos y los archivos de manifiesto. El resultado de compilación es un archivo Android Archive (AAR) que puedes agregar como dependencia a los módulos de tu app para Android.
  • Biblioteca Java: este tipo de biblioteca solo puede incluir archivos fuente Java. El resultado de compilación es un archivo Java (JAR) que puedes agregar como dependencia a los módulos de tu app para Android, o bien otros proyectos de Java.
Módulo de Google Cloud
Proporciona un contenedor para tu código de backend de Google Cloud. Este módulo tiene el código y las dependencias requeridas para un backend de Java App Engine que utiliza HTTP simple, Cloud Endpoints y Cloud Messaging para conectarse a tu app. Puedes desarrollar tu backend para proporcionar los servicios en la nube que necesite tu app.

Usar Android Studio para desarrollar tu módulo de Google Cloud te permite manejar el código de app y de backend en el mismo proyecto. También puedes ejecutar y probar tu código de backend localmente, y usar Android Studio para implementar tu módulo de Google Cloud.

Para obtener más información sobre la ejecución y la implementación de un módulo de Google Cloud, consulta Ejecuta, implementa y prueba el backend.

Algunos usuarios también hacen referencia a los módulos como subproyectos, y es correcto porque Gradle también hace referencia a ellos como proyectos. Por ejemplo, cuando creas un módulo de biblioteca y deseas agregarlo como una dependencia a tu módulo de app para Android, debes declararlo de la siguiente manera:

    dependencies {
      compile project(':my-library-module')
    }
    

Archivos de proyecto

De forma predeterminada, Android Studio muestra los archivos de tu proyecto en la vista Android. Esta vista no refleja la jerarquía real de los archivos en el disco, pero se organiza en módulos y tipos de archivos para simplificar la navegación entre los principales archivos fuente de tu proyecto, con lo cual se ocultan determinados archivos o directorios que no se usan con frecuencia. En comparación con la estructura en el disco, estos son algunos de los cambios estructurales:

  • Se muestran todos los archivos de configuración relacionados con la compilación del proyecto en un grupo de nivel superior Gradle Script.
  • Se muestran todos los archivos de manifiesto para cada módulo en un grupo de nivel de módulo (cuando tienes diferentes archivos de manifiesto para diferentes clases de productos y tipos de compilación).
  • Se muestran todos los archivos de recursos alternativos en un único grupo, en lugar de carpetas separadas por calificador de recursos. Por ejemplo, todas las versiones de densidad de tu ícono de selector son visibles en paralelo.

Dentro de cada módulo de app para Android, los archivos se muestran en los siguientes grupos:

manifests
Contiene el archivo AndroidManifest.xml.
java
Contiene los archivos Java de código fuente separados por nombres de paquetes, incluido el código de prueba JUnit.
res
Contiene todos los recursos sin código, como diseños XML, strings de IU y también imágenes de mapa de bits, divididos en subdirectorios pertinentes. Para obtener más información sobre todos los tipos de recursos disponibles, consulta Provisión de recursos.

Vista de proyectos de Android

Para ver la estructura de archivos real del proyecto, incluidos todos los archivos ocultos de la vista de Android, selecciona Proyecto en el menú desplegable de la parte superior de la ventana Proyecto.

Cuando seleccionas la vista Proyecto, puedes ver más archivos y directorios. Los más importantes son los siguientes:

module-name/
build/
Contiene resultados de compilación.
libs/
Contiene bibliotecas privadas.
src/
Contiene todos los archivos de código y recursos para el módulo en los siguientes subdirectorios:
androidTest/
Contiene código para las pruebas de instrumentación que se ejecutan en un dispositivo Android. Para obtener más información, consulta la sección de documentación de prueba para Android.
main/
Contiene los archivos de conjunto de fuentes "principales": el código y los recursos de Android compartidos por todas las variantes de compilación (los archivos para otras variantes de compilación residen en directorios del mismo nivel, como src/debug/ para el tipo de compilación de depuración).
AndroidManifest.xml
Describe la naturaleza de la aplicación y cada uno de sus componentes. Para obtener más información, consulta la documentación de AndroidManifest.xml.
java/
Contiene fuentes de código Java.
jni/
Contiene código nativo en el cual se usa la interfaz nativa de Java (JNI). Para obtener más información, consulta la sección de documentación de NDK de Android.
gen/
Contiene los archivos Java generados por Android Studio, como tu archivo R.java y las interfaces creadas desde los archivos AIDL.
res/
Contiene recursos de aplicación, como archivos de elementos de diseño, archivos de diseño y strings de IU. Puedes obtener más información en Recursos para aplicaciones.
assets/
Contiene el archivo que debe compilarse en un archivo .apk tal como está. Puedes explorar este directorio como un sistema de archivos típico mediante URI y leer archivos como transmisiones de bytes con el AssetManager . Por ejemplo, es una buena ubicación para texturas y datos de juegos.
test/
Contiene código para pruebas locales que se ejecutan en tu JVM de host.
build.gradle (módulo)
Este archivo define las configuraciones de compilación específicas para el módulo.
build.gradle (proyecto)
Este archivo define tu configuración de compilación que se aplica a todos los módulos. Es esencial para el proyecto. Por lo tanto, debes someterlo a control de revisión con todo el código fuente restante.

Para obtener más información sobre otros archivos de compilación, consulta Cómo configurar tu compilación.

Configuración de la estructura de proyecto

Para cambiar diversas opciones de configuración en tu proyecto de Android Studio, abre el diálogo Estructura del proyecto haciendo clic en Archivo > Estructura del proyecto. Contiene las siguientes secciones:

  • Ubicación del SDK: Configura la ubicación del JDK, SDK de Android y NDK de Android de tu proyecto.
  • Proyecto: Fija la versión para Gradle y el complemento de Android para Gradle, y el nombre de la ubicación del repositorio.
  • Servicios para desarrolladores: Contiene opciones de configuración para complementos de Android Studio de Google o de terceros. Consulta los Servicios para desarrolladores a continuación.
  • Módulos: Te permite editar opciones de configuración de compilación específicas del módulo, lo que incluye el SDK mínimo y de destino, la firma de la app y las dependencias de biblioteca. Consulta Módulos a continuación.

Servicios para desarrolladores

La sección Servicios para desarrolladores del cuadro de diálogo Estructura del proyecto contiene páginas de configuración para diferentes servicios que puedes usar con tu app. Esa sección incluye las siguientes páginas:

  • Google AdMob: Te permite activar el componente Google AdMob, que te ayuda a comprender a tus usuarios y a mostrarles anuncios personalizados.
  • Analytics: Te permite activar Google Analytics, que te ayuda a medir las interacciones de usuarios con tu app en diferentes dispositivos y entornos.
  • Authentication: Permite a los usuarios emplear el Acceso con Google para acceder a tu app con sus Cuentas de Google.
  • Cloud: Te permite activar los servicios basados en la nube de Firebase para tu app.
  • Notifications: Te permite usar Google Cloud Messaging para la comunicación entre tu app y tu servidor.

La activación de cualquiera de estos servicios puede provocar que Android Studio agregue dependencias y permisos necesarios a tu app. En cada página de configuración, se ubican estas y otras acciones en una lista que Android Studio toma si habilitas el servicio asociado.

Módulos

La sección de configuración Módulos te permite cambiar las opciones para cada uno de los módulos de tu proyecto. La página de configuración de un módulo se divide en las siguientes pestañas:

  • Propiedades: Especifica las versiones del SDK y de las herramientas de compilación del módulo.
  • Firma: Especifica el certificado que debe usarse para firmar tu APK.
  • Tipos: Te permite crear varios tipos; cada tipo especifica un conjunto de ajustes de configuración, como la versión de SDK mínima y de destino del módulo, y el código y nombre de la versión. Por ejemplo, puedes definir un tipo que tiene un valor de versión de SDK mínimo de 15 y de destino de 21, y otro tipo que tiene un valor de versión de SDK mínimo de 19 y de destino de 23.
  • Tipos de compilación: Te permite crear y modificar configuraciones de compilación, como se describe en Configuración de compilaciones de Gradle. De forma predeterminada, cada módulo tiene tipos de compilación de depuración y lanzamiento, pero puedes definir más según sea necesario.
  • Dependencias: Ubica en una lista la biblioteca, el archivo y las dependencias para este módulo. Puedes agregar, modificar y borrar dependencias desde este subpanel. Para obtener más información sobre dependencias de módulos, consulta Configuración de compilaciones de Gradle.