Saltar a contenido

Estructura de un proyecto

Un proyecto de Android se organiza en módulos. Cada módulo incluye el código fuente, los recursos y la configuración de compilación necesarios para generar una parte de la aplicación.

  • Un proyecto puede tener un único módulo (la app principal).
  • O varios módulos (bibliotecas que comparten código, recursos o funcionalidades entre apps distintas).

Carpetas principales de un módulo

  • Java: contiene el código fuente de la app en Java o Kotlin. Aquí encontramos:

    • Clases de controladores.
    • Funciones y lógica de negocio.
    • Pruebas unitarias.

    Todo organizado en paquetes.

  • Res: almacena los recursos de la aplicación (UI, imágenes, textos, estilos). Se subdivide en carpetas:

    • drawable: imágenes y gráficos (PNG, JPG, BMP o XML vectoriales).
    • layout: archivos XML que definen el diseño de pantallas.
    • values: estilos, colores y textos traducibles.
    • mipmap: iconos de la aplicación en varias resoluciones.
  • Manifests: contiene el archivo AndroidManifest.xml, donde se declara:

    • La configuración general de la app.
    • Los permisos que usará.
    • Los componentes (activities, services, etc.).
  • Gradle Scripts: ficheros de compilación gestionados por Gradle.

    • Uno para la configuración global del proyecto.
    • Uno para cada módulo.

Ejemplo

Ejemplo de árbol de proyecto (simplificado)

MyApp/
├── app/
│   ├── src/
│   │   └── main/
│   │       ├── java/        # Código fuente
│   │       ├── res/         # Recursos
│   │       │   ├── drawable/
│   │       │   ├── layout/
│   │       │   ├── mipmap/
│   │       │   └── values/
│   │       └── AndroidManifest.xml
│   └── build.gradle         # Configuración de compilación del módulo
└── build.gradle             # Configuración global del proyecto

graph LR
  A[Proyecto Android] --> B

  subgraph B[Módulo app]
    J[Java]
    R[Res]
    M[Manifests]
    G[Gradle Scripts]

    R --> RD[drawable - imágenes]
    R --> RL[layout - pantallas XML]
    R --> RV[values - textos y estilos]
    R --> RM[mipmap - iconos]

    M --> MX[AndroidManifest.xml]
    G --> GM[build.gradle del módulo]
  end

  A --> GP[build.gradle del proyecto]

La estructura de un proyecto Android separa claramente el código, los recursos y la configuración, lo que facilita el mantenimiento y la escalabilidad de las aplicaciones.

Actividades

  • AC 107 (RA1 / CE1a CE1f / IC1 / 1p) Busca en qué archivo Gradle se definen las dependencias externas de una app.
  • AC 108 (RA1 / CE1a CE1f / IC1 / 1p) Investiga qué ventajas tiene separar un proyecto Android en varios módulos y pon un ejemplo real de biblioteca que se podría utilizar.
  • PR 109 (RA1 / CE1f / IC1 / 3p) Sobre el proyecto de PR 103 debes analizar la estructura de carpetas.