Descripción general de proyectos

Los proyectos de Android Studio contienen todo lo que define tu espacio 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 Project de Android Studio. Para abrir la ventana, selecciona View > Tool Windows > Project.

En esta página, se proporciona una descripción general de los componentes principales de tu proyecto.

Módulos

Un módulo es una colección de archivos de origen y parámetros de configuración de compilación que te permiten dividir tu proyecto en unidades de funcionalidad discretas. Tu proyecto puede tener uno o más módulos, y un módulo puede usar otro como dependencia. Puedes compilar, probar y depurar cada módulo por separado.

Los módulos adicionales 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 File > New > New Module.

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 los parámetros de configuración 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 módulo predeterminado de la app se llama "app".

Android Studio ofrece los siguientes tipos de módulos de apps:

  • Teléfono y tablet
  • Automotive
  • Wear OS
  • Televisión
  • Generador de perfiles de Baseline
  • Comparativas

Cada uno proporciona archivos esenciales y algunas plantillas de código 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
Representa una función modularizada de la app que puede aprovechar Play Feature Delivery. Por ejemplo, con los módulos de funciones, puedes proporcionarles a tus usuarios determinadas funciones de tu app a pedido o como experiencias instantáneas por medio de Google Play Instant.

Android Studio ofrece los siguientes tipos de módulos de funciones:

  • Módulo de funciones dinámicas
  • Módulo de biblioteca de la función Instant Dynamic Feature

Para obtener más información, lee sobre Play Feature 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 Create New Module, Android Studio ofrece los siguientes tipos de módulos de biblioteca:

  • Biblioteca de Android: Contiene todos los tipos de archivos admitidos en un proyecto de Android, excepto el código C++ nativo, incluidos el código fuente de Java y Kotlin, los recursos y 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 nativa de Android: Contiene todos los tipos de archivos compatibles con un proyecto de Android, similar a una Biblioteca de Android. Sin embargo, las bibliotecas nativas de Android también pueden contener código fuente C++ nativo. 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 o Kotlin: Contiene solo archivos fuente de Kotlin o Java. El resultado de compilación es un archivo de Java (JAR) que puedes agregar como dependencia a los módulos de tu app para Android, o bien otros proyectos de Kotlin o Java.

Los módulos a veces se denominan subproyectos porque Gradle también se refiere a los módulos como proyectos.

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:

Groovy

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

Kotlin

dependencies {
    implementation(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 del archivo en el disco. En cambio, 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.

Algunas de las diferencias estructurales entre la vista Android y la estructura en el disco son que ocurre lo siguiente en la vista Android:

  • 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 variantes 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 de código fuente de Kotlin y Java separados por nombres de paquetes, incluido el código de prueba JUnit.
res
Contiene todos los recursos sin código, como cadenas de IU o imágenes de mapa de bits, divididos en subdirectorios pertinentes. Para obtener más información sobre los tipos de recursos posibles, consulta Descripción general de los recursos de las apps.

La vista Project

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

Cuando seleccionas la vista Project, puedes ver más archivos y directorios, incluidos 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 Cómo realizar pruebas en Android Studio.
cpp/
Contiene código C o C++ nativo en el cual se usa la interfaz nativa de Java (JNI). Para obtener más información, consulta la documentación del NDK de Android.
main/
Contiene los archivos "principales" del conjunto de orígenes: 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 descripción general del manifiesto de la app.
java/
Contiene fuentes de código Kotlin o Java, o ambos, si tu app tiene código fuente Kotlin y Java.
kotlin/
Contiene solo fuentes de código Kotlin.
res/
Contiene recursos de aplicación, como archivos de elementos de diseño y de cadenas de IU. Para obtener más información, consulta la descripción general de los recursos de las apps.
assets/
Contiene archivos para compilar en un archivo APK tal como está. Por ejemplo, es una buena ubicación para texturas y datos de juegos. Puedes explorar este directorio como un sistema de archivos típico mediante URI y leer archivos como transmisiones de bytes con AssetManager.
test/
Contiene código para pruebas locales que se ejecutan en tu JVM host.
build.gradle o build.gradle.kts (módulo)
Este archivo define las configuraciones de compilación específicas para el módulo. build.gradle es el nombre de archivo correcto si usas Groovy como lenguaje de secuencia de comandos de compilación y es build.gradle.kts si usas la secuencia de comandos de Kotlin.
build.gradle o build.gradle.kts (proyecto)
Este archivo define tu configuración de compilación que se aplica a todos los módulos. build.gradle es el nombre de archivo correcto si usas Groovy como lenguaje de secuencia de comandos de compilación y es build.gradle.kts si usas la secuencia de comandos de Kotlin. 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.

Parámetros de configuración de la estructura de proyecto

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

  • Project: Fija la versión para Gradle y el complemento de Android para Gradle, y el nombre de la ubicación del repositorio.
  • SDK Location:Establece la ubicación del JDK, SDK de Android y NDK de Android de tu proyecto.
  • Variables: Te permite editar variables que se usan dentro de las secuencias de comandos de compilación.
  • Modules: Te permite editar configuraciones de compilación específicas del módulo, lo que incluye el SDK mínimo y de destino, la firma de apps y las dependencias de biblioteca. La página de configuración de un módulo se divide en las siguientes pestañas:
    • Properties: Especifica las versiones del SDK y de las herramientas de compilación del módulo.
    • Signing: Especifica el certificado que debe usarse para firmar tu app.
  • Dependencies: Ubica en una lista la biblioteca, el archivo y las dependencias para este módulo. Puedes agregar, modificar y borrar dependencias desde este panel. Para obtener más información sobre las dependencias de módulos, consulta Cómo configurar variantes de compilación.

  • Build Variants: Te permite configurar diferentes variantes y tipos de compilación para tu proyecto.

    • Flavors: Te permite crear múltiples variantes; cada variante especifica un conjunto de opciones 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 una variante que tiene un valor de versión de SDK mínimo de 21 y de destino de 29, y otra variante que tiene un valor de versión de SDK mínimo de 24 y de destino de 33.

    • Build Types: Te permite crear y modificar configuraciones de compilación, como se describe en Cómo configurar variantes de compilación. 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.