Arquitectura de una aplicación en Android Studio

Arquitectura de una aplicación Android

Las aplicaciones Android se componen de una arquitectura General, que se conforma por librerías de código, archivos de recursos y vistas, código fuente y Android Manifest, este último declara los componentes como las actividades, fragmentos, servicios, proveedores de contenido y receptores de emisión que conforman una aplicación Android. Luego, el SO Android se encarga de usar ese archivo para decidir cómo integrar la aplicación a la experiencia del usuario.

El siguiente diagrama muestra como todos los módulos deben interactuar entre si una vez la aplicación sea diseñada.

Se puede observar que cada componente solo es dependiente del componente que se encuentra un nivel por abajo, como por ejemplo las actividades y los fragmentos solo dependen de los módulos de vista, pero también se puede observar que el repositorio es la única clase que depende de otras clases. En este ejemplo, el repositorio depende de un módulo de datos  persistente y de una fuente de datos de backend remota.

Con este diseño se busca crear una experiencia consistente y agradable para el usuario, sin importar que este vuelva a usar la aplicación después de varios minutos o incluso días después de haberla cerrado, el usuario vera al instante la información de la aplicación a nivel local. Si estos datos están inactivos, los módulos del repositorio comenzaran a actualizar los datos en segundo plano.

Configuración de un nuevo proyecto en Android Studio

Para comprender mejor la estructura, utilizaremos Android Studio y avanzaremos paso a paso por cada uno de los elementos que esta nos ofrece. Para ello, comenzaremos creando una aplicación por defecto y seguiremos el asistente de configuración de Android Studio, ya que esta se encarga de recopilar toda la información para el proyecto que el usuario desee crear.

Asistente de configuración 

Android Studio comienza por pedirnos la siguiente información para la configuración del nuevo proyecto:

  • Application name: se escribe el nombre de la aplicación.
  • Company Domain: se pone el Dominio de Empresa si aplica.
  • Project location: la ubicación donde estará la aplicación.

Al darle siguiente nos aparece una ventana llamada Target Android Devices o Dispositivos Android de destino con las opciones que nos ofrece para Teléfono y tableta, Tv, el sistema Operativo Wear o Google Glass. En esta ventana se configuran las plataformas y APIs que el usuario va a utilizar en su aplicación. Lo que Android Studio nos preguntará en siguiente ventana será:

  • Activity o Actividad: Seleccionar la ventana o pantalla que el usuario usará para su aplicación.

Para finalizar el asistente de configuración en la siguiente ventana llamada Customize the Activity o Personaliza la actividad nos pedir la siguiente información:

  • Activity Name: se indica el nombre de la clase Java asociada.
  • Layout Name: la interfaz gráfica de la actividad.
  • Title: el título de la actividad.
  • Menu Resource Name: nombre del recurso XML correspondiente al menú principal.

Interfaz Android Studio

Después de completar el asistente de configuración, veremos por primera vez la interfaz de Android Studio, ahora comenzaremos a enfocarnos en las estructuras de las aplicaciones que se realicen en Android Studio la cual se encuentra al lado izquierdo de la pantalla. Android Studio muestra por defecto la pestaña llamada Android, esta pestaña está compuesta por varios elementos que van incluidos en la carpeta app. Para poder visualizar toda la estructura del proyecto, el usuario deberá dar clic en esta pestaña en la cual se le desplegará una serie de opciones y darle en la opción Project, después de esto el usuario podrá evidenciar el proyecto por completo, encontrará los siguientes elementos:

  • Gradle: es una herramienta que permite automatizar la construcción de los Usa un Domain Specific Language (DSL) basado en Groovy para declarar la forma de construir el proyecto; además, su sintaxis es muy similar a Java esto le permitirá al usuario realizar tareas de compilación, empaquetado y testing.
  • Idea: Android Studio trabaja con IntelliJ IDEA y el sistema de compilación Gradle. IntelliJ IDEA es un entorno de desarrollo integrado en Java.
  • App: esta Contiene todos los archivos relacionados al proyecto.
  • External Libraries: como su nombre lo indica, son librerías externas.

Ahora el usuario al darle clic en la carpeta app que contiene los archivos del proyecto observara que esta se compone de otras tres carpetas las cuales son:

  • Carpeta build: en esta se encuentran los códigos generados automáticamente por Android Studio cada vez que se realiza la compilación del proyecto.
  • Carpeta libs: esta contiene las librerías Java externas que utiliza la aplicación. Android Studio hace referencia a estas librerías en el fichero build.gradle.
  • Carpeta src: contiene la información más importante y será la que estudiaremos para entender la estructura de una aplicación de Android.

Carpeta src

La Carpeta src contiene la información más importante del proyecto  y está compuesta de las siguientes carpetas:

Carpeta app/src/main/java: esta carpeta contiene el código fuente de la aplicación. Al explorar el contenido de MainActivity se podrá observar que Android Studio generó automáticamente un código básico para la actividad principal.

Carpeta app/src/main/res: esta carpeta contiene los archivos como imágenes, cadenas de texto, layouts, estilos, traducciones, menús e interfaz gráfica y cada elemento esta subdividido en dos carpetas, en la carpeta drawable en la cual se agregan las imágenes que se utilizan en la aplicación y las organiza por calidad de imagen en otras carpetas; y en la Carpeta layout en la que se encuentra el archivo activity_main.xml. Este contiene el diseño de la interfaz de la actividad principal.

Editores del archivo activity_main.xml

Android Studio permite editar el archivo activity_main.xml de dos formas. La primera es utilizando un editor estilo Drag and Drop, y la segunda forma es utilizando el método text es decir a través de nodos XML.

Al elegir la opción dos nos aparecerá un código que significa lo siguiente:

  • RelativeLayout: hace referencia al contenedor principal que define un orden, características y secuencias de todos los elementos de la aplicación. Además, se ubicarán por referencia y no por valores absolutos, esto nos permitirá que las aplicaciones se ajusten a cualquier tipo de pantalla.
  • android:layout_width=”match_parent”: es el ancho del layout dentro de la aplicación. Al utilizar match_parent se facilita el ajuste del ancho de la pantalla en cualquier dispositivo.
  • android:layout_height=”match_parent”: es la dimensión vertical o largo del layout. Dentro de la aplicación y si se utiliza match_parent esta facilitara el ajuste vertical de pantalla en cualquier dispositivo.
  • android:paddingLeft, Right, Top y Bottom: en esta se indicaran los espacios laterales y verticales entre el contorno del layout. El valor seleccionado será direccionado a dimens.xml dentro de la carpeta values. Este archivo contiene nodos XML de tipo dimensión <dimen> con valores densitiy-indepent en pixeles (dp).
  • tools:context=”.MainActivity”: es el nombre del archivo que contiene la actividad con el layout y las distintas características escogidas.

Archivo AndroidManifiest.xml y  Carpetas menú y values

  • Carpeta menú: esta carpeta es creada de forma automática y contendrá un menú básico para la actividad del proyecto. Es posible modificarla en caso de que el usuario quiera agregar un menú a la aplicación o eliminarla sin ningún problema. Su estructura está creada en un archivo XML.
  • Carpeta values: aquí se encuentran los archivos dimens.xml, styles.xml y strings.xml. Los dos primeros permiten modificar las dimensiones y estilos de la aplicación; y el último permite agregar controles, vistas, formas, botones, múltiples idiomas y otros elementos (widgets) en la aplicación.
  • Archivo AndroidManifiest.xml: toda aplicación para Android debe contener este archivo en su directorio raíz. Aquí se puede declarar todo lo que sucede o sucederá en el aplicativo; ya sea el nombre de la aplicación, actividades, íconos, servicios y otros elementos. Además, se debe agregar la forma en que interactúan entre ellos y con el sistema; e indicará qué actividad es la que aparecerá en el menú principal del dispositivo (launcher).

Esta es la estructura de un proyecto en Android Studio y la arquitectura básica de una aplicación para Android. Y así deberá el usuario desarrollar su aplicativo antes de comercializarla en cualquier tienda de aplicaciones.

Autor: Juan Sebastian Jimenez Tovar

Editor: Luz Adriana Muñoz

Código: UCP2-4

Lee mas artículos relacionados: http://www.niixer.com/

Fuentes:

Developers. (2020). Guía de arquitectura de apps. Developers. https://developer.android.com/jetpack/docs/guide?hl=es-419

Developers. (2019). Arquitectura de la plataforma. Developers. https://developer.android.com/guide/platform?hl=es-419

Reina Cardenas, CE. (2018). Arquitectura de una aplicación para Android. Platzi. https://platzi.com/blog/arquitectura-android-app/

Imagen: Developers. (2020). final-architecture [Imagen]. Developers. https://developer.android.com/topic/libraries/architecture/images/final-architecture.png?hl=es-419

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *