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.