Estructura de compilación de Android

Los proyectos de Android contienen muchos archivos relacionados con la compilación y estructuras de directorios para organizar el código fuente y los recursos de la aplicación. Antes de sumergirte en de la configuración de Terraform, veremos la estructura general y los conceptos básicos de lo que pertenece a cada parte.

En esta tabla, se muestran los archivos típicos de un proyecto de Android. Las descripciones de cada uno archivo o directorio incluyen notas sobre qué tipo de contenido pertenece allí. Recom. las prácticas evolucionan con el tiempo y es posible que estas descripciones no coincidan con un proyecto que haya heredado o descargado de Internet.

Cuando escribas tus archivos de compilación, usa un enfoque declarativo. lógica de compilación y tarea Las definiciones solo deben aparecer en complementos. Al limitar la lógica de compilación a complementos, los archivos de compilación se convierten en declaraciones de datos, que son más directas para la comprensión y edición. Las versiones futuras pueden incluir una especificación alternativa, como Gradle declarativa, que impedirá la lógica de compilación en la archivos.

Carpeta/Archivo

Usar

gradle/

Directorio de caché del proyecto de Gradle

Administrado por Gradle y contiene la distribución de Gradle descargada, la caché del proyecto y los archivos de configuración.

No modifiques los archivos de este directorio.

.idea/

Metadatos de proyectos de Android Studio

No modifiques los archivos de este directorio.

build.gradle(.kts)

Archivo de compilación raíz

Solo debe contener declaraciones de complementos para configurar una ruta de clase de complemento común en todos los subproyectos.

El resto del código debe residir en la configuración o en los archivos de compilación anidados a nivel de proyecto.

gradle.properties

Configuración de ejecución de Gradle

Contiene propiedades de Gradle y controla aspectos del entorno de compilación de Gradle, como el tamaño de montón, el almacenamiento en caché y la ejecución paralela.

Aquí se definen algunas propiedades temporales de Android para reducir los cambios en la DSL de AGP a medida que se agregan y, luego, se quitan.

gradlew (linux y Mac)

gradlew.bat (Windows)

Archivo de wrapper de Gradle

Para iniciar tu compilación, se descarga una distribución de Gradle y, luego, se le reenvía comandos. De esta manera, puedes ejecutar compilaciones sin tener que preinstalar Gradle.

local.properties

Configuración de máquinas locales

Contiene propiedades relacionadas con la máquina local, como la ubicación del SDK de Android.

Excluir este archivo del control de código fuente

settings.gradle(.kts)

Inicialización de compilación de Gradle

Contiene información de compilación global para la inicialización de Gradle y la configuración del proyecto, como

  • nombre del proyecto
  • lista de subproyectos que se incluirán en esta compilación
  • las especificaciones del repositorio para ubicar complementos y dependencias
  • de versiones externas de Cloud Storage.

Gradle

❯ libs.versions.toml

Catálogo de versiones

Define variables para dependencias y complementos que se usan dentro de tu compilación. Debes especificar las versiones que quieres usar aquí, lo que garantiza la coherencia en todos los subproyectos de tu proyecto.

❯ wrapper/

❯ gradle‐wrapper.jar

Inicio de Gradle ejecutable

Descarga la distribución de Gradle especificada (si no existe), la ejecuta y pasa los argumentos.

❯ gradle‐wrapper.properties

Configuración del wrapper de Gradle

Especifica dónde descargar la distribución de Gradle (incluida la versión que se usará).

app/

Directorio del subproyecto

Los subproyectos (conocidos como "módulos" en Android Studio) pueden compilar aplicaciones o bibliotecas, y pueden depender de otros subproyectos o dependencias externas.

app es el nombre convencional de un subproyecto de aplicación de nivel superior (pero no es el nombre obligatorio). Otros subproyectos tienen estructuras similares con nombres diferentes.

Cualquier directorio puede ser un subproyecto, debe contener al menos un archivo build.gradle(.kts) y debe incluirse en la compilación con settings.gradle(.kts).

❯ build.gradle(.kts)

Archivo de compilación a nivel de subproyecto

Declara cómo compilar este subproyecto. Cada subproyecto requiere un archivo de compilación independiente y debe contener

  • complementos utilizados para compilar este subproyecto
  • bloques de configuración requeridos por los complementos
  • las dependencias (bibliotecas y plataformas) incluidas al compilar este subproyecto

No debes incluir lógica de compilación (como condiciones o definiciones de funciones de Kotlin) ni declaraciones de tareas en tus archivos de compilación. La lógica de compilación y las tareas solo deben incluirse dentro de los complementos.

❯ src/

Archivos de origen del subproyecto

Agrupa los archivos fuente (recursos y código de la aplicación) en conjuntos de orígenes. El conjunto de orígenes main contiene archivos de origen comunes para todas las variantes, mientras que otros conjuntos de orígenes contienen archivos únicos de una variante.

❯ principal/

Conjunto de orígenes principal

Código fuente y recursos comunes en todas las variantes de compilación. Esta fuente actúa como base para todas las compilaciones y otros conjuntos de orígenes más específicos que se agregan a ella o la anulan.

❯ java/

❯ kotlin/

Código fuente de Kotlin y Java

El directorio java puede contener código fuente combinado de Java y Kotlin. Si este subproyecto solo contiene código Kotlin, puedes cambiar el nombre de este directorio por kotlin.

Android
es una plataforma que prioriza Kotlin. Se admite el código fuente Java, pero las APIs nuevas se orientan al lenguaje Kotlin. Recomendamos usar Kotlin para todo el código nuevo y las actualizaciones principales del código existente.

❯ res/

Archivos de recursos de Android

Contiene recursos de aplicación, como imágenes y archivos XML. Todas las aplicaciones utilizan algunos recursos básicos, como los íconos de selectores, pero muchos de estos recursos, como los diseños y los menús, solo se usan en aplicaciones basadas en vistas. Las aplicaciones de Compose usan recursos de String definidos en este directorio.

❯ AndroidManifest.xml

Metadatos de la aplicación para Android

Leer por el administrador de paquetes de Android para indicarle al sistema

  • componentes definidos por tu aplicación
  • los permisos necesarios
  • compatibilidad de dispositivos
  • Restricciones de la plataforma de Android

❯ androidTest/

Conjunto de orígenes de prueba del dispositivo

Contiene fuentes para las pruebas que se ejecutarán en un dispositivo o emulador con Android. Estas pruebas tienen acceso a un entorno de Android real, pero se ejecutan más lento que las pruebas de host.

Todos los archivos de origen del conjunto de orígenes main están disponibles para que los use el origen en androidTest.

❯ probar/

Conjunto de orígenes de prueba de host

Contiene fuentes para pruebas que se ejecutan localmente en una JVM, a diferencia de las pruebas que se ejecutan en un dispositivo. Estas pruebas se ejecutan mucho más rápido que las pruebas de dispositivos. Sin embargo, cualquier llamada al sistema (incluidos los ciclos de vida que ejecutan tu aplicación) debe ser simulada, falsa, con stubs o de algún otro modo simulada.

Todos los archivos de origen del conjunto de orígenes main están disponibles para que los use la fuente que se está probando.

❯ proguard-rules.pro

Reglas de configuración de R8

Define reglas para controlar la reducción, la optimización y la ofuscación de las aplicaciones. R8 quita el código y los recursos innecesarios, optimiza el rendimiento del tiempo de ejecución y minimiza aún más tu código cambiando el nombre de los identificadores.