Creación de aplicaciones Android escalables. Las aplicaciones móviles están creciendo enormemente… | de Rahul Ray | octubre 2022
Las aplicaciones móviles están aumentando enormemente en estos días. La mayoría de las empresas se centran en sus aplicaciones, ya que generan la mayor parte de los ingresos. A medida que aumentan los usuarios activos diarios de las aplicaciones, también aumenta su complejidad. Dada esta complejidad y el creciente número de usuarios simultáneos, es muy importante como desarrollador crear aplicaciones escalables. Al desarrollar aplicaciones para Android, la escalabilidad depende de algunos aspectos clave como 1. Arquitectura2. Modularización3. Pruebas4. Diseño de interfaz de usuario flexible5. estilo de código
Nota: ¡La mayoría de estos temas son recomendados por el mismo Google!
La arquitectura de la aplicación define el diseño de la aplicación. Puede variar según los casos de uso de la aplicación. No puede haber una arquitectura perfecta que funcione con todo tipo de aplicación. Sin embargo, se recomienda utilizar la arquitectura MVVM (Model View ViewModel) ya que funciona bastante bien y también ayuda con el escalado. En general, definimos dos niveles, denominados » capa de interfaz de usuario y capa de datos.Interfaz de usuario y capa de datos capa de datos recupera los datos de la aplicación y los pone a disposición como una transmisión a la capa de la interfaz de usuario, junto con la ejecución de alguna lógica empresarial. Que capa de interfaz de usuario recopila datos como un flujo para mostrarlos en la interfaz de usuario y responde a cualquier cambio en el flujo de datos. Al establecer un flujo de datos entre las dos capas, creamos un Interfaz de usuario receptiva. Solo tenemos que lidiar con diferentes estados de datos que pueden llegar aquí. No debe buscarse ni solicitarse datos de la interfaz de usuario, solo se deben recopilar datos. La capa de interfaz de usuario solo debe comunicarse con la capa de datos en forma de eventos. El nivel de datos maneja estos eventos para actualizar los datos y refleja los cambios en la interfaz de usuario. De esta forma, nuestra capa de datos se considera una Única fuente de verdad. Esto también asegura que tengamos un Flujo de datos unidireccional. Esto mantiene la coherencia en toda nuestra aplicación. Además, nuestra capa de datos se puede dividir en dos capas, Repositorio y fuente de datos.Capa de datosDeberíamos almacenar toda nuestra lógica comercial, como obtener los datos, mapearlos o exponerlos como arroyos (como arroyos) en el cual repositorio Además, nuestra fuente de datos puede ser de dos tipos local (habitación) o remoto (red). Es responsabilidad del repositorio decidir dónde recuperar los datos y en qué forma hacerlos disponibles. Ahora veamos cómo podemos mostrar estos datos en la interfaz de usuario.Capa de interfaz de usuario La capa de interfaz de usuario consta de dos componentes llamados Pantalla (Actividad/Fragmento/Componible) y un Ver modelo. ViewModel proporciona datos de pantalla en forma de estado de la interfaz de usuario. La pantalla observa estos estados de la interfaz de usuario y reacciona de acuerdo con el estado actual. ViewModel obtiene los datos del repositorio y los convierte en un estado de interfaz de usuario, es decir; Cargando, éxito y error. En función de estos estados, la pantalla lo representa utilizando los elementos de la interfaz de usuario en la pantalla. Primero, ViewModel crea un estado de cargaluego podemos obtener datos del repositorio y convertirlos a cualquier estado, es decir; éxito o error.Si hablamos de escalabilidad, nuestra base de código crecerá con ella. Por lo tanto, es una buena idea dividir su código en diferentes módulos según una función o responsabilidad, en lugar de mantener todo en el módulo de la aplicación. La creación de módulos separados para diferentes funciones también reduce bastante bien el tiempo de construcción. En líneas generales, existen tres formas de crear un módulo:tipos de modulos
- :módulo de aplicación actúa como el punto de entrada de la aplicación y reúne todos los demás módulos (como :característica especial o :Vena).
- :módulos de características son responsables de una sola área de funcionalidad del lado del usuario, es decir; En este módulo solo se escribe una parte específica del código de la aplicación. Por ejemplo podemos tener uno : inducción Módulo que consta únicamente de código relacionado con la incorporación de usuarios. esto depende de :módulo principal.
- :módulo principal es el módulo de biblioteca común que contiene componentes/clases/funciones comunes que se utilizan en toda la aplicación. También deberíamos limitar el alcance de este módulo a una sola área de responsabilidad si podemos tenerla :núcleo:modelo para clases de modelos comunes:núcleo:local para todas las cosas relacionadas con la base de datos local:red de núcleo para cualquier cosa relacionada con la red o la API
Ahora, con una base de código multimodular, también tendremos muchos archivos Gradle. Esto generalmente conduce a dos problemas comunes: 1. Dependencias y configuraciones duplicadas en archivos Gradle para cada módulo2. Mantener versiones consistentes de bibliotecas en todos los módulos. Podemos resolver el problema de la doble dependencia usando un complemento de convención. Podemos poner todas las dependencias comunes y bloques de configuración en un complemento e incluir ese complemento en todos los módulos que requieren esas opciones. Los complementos de la convención están en un separado :construir lógica Módulo que se construye antes que todos los demás módulos. Esto garantiza que cualquier cambio de configuración se refleje en todos los demás módulos antes de que se construyan. El segundo problema común es realizar un seguimiento de las versiones de la biblioteca en todos los módulos. Podemos resolver esto creando un archivo separado llamado catálogo de versiones y agregue todas las versiones de las bibliotecas allí. Entonces, siempre que necesitemos actualizar una versión de la biblioteca, podemos hacerlo en el catálogo de versiones y se mantiene constante en todas partes. Las pruebas garantizan que nuestras funciones funcionen según lo previsto. Ayuda a comprobar el funcionamiento de nuestras clases o de nuestra aplicación en su conjunto. Ellos le dirán si algo está roto antes de enviarlo a producción. Aunque escribir pruebas aumenta el tiempo de desarrollo, vale la pena crear una aplicación libre de errores. Es una buena práctica escribir la prueba antes de la implementación real, ¡pero es solo una opción! En general, escribimos pruebas unitarias y Pruebas de interfaz de usuario para comprobar el comportamiento de nuestra función. El desarrollo basado en pruebas consta principalmente de 5 pasos:1. Agregar una prueba2. Ejecútelo y observe cómo falla3. Escriba el código para pasar la prueba4. Tome las pruebas y vea cómo pasan5. Realizar una remodelaciónPara crear un tema de interfaz de usuario flexible para el nuestro, primero necesitamos nuestro tema. 1. Para definir el tema, primero necesitamos definir un conjunto de colores en nuestra app2. Entonces necesitamos definir un esquema de color para Modo claro y oscuro. 3. También podemos definir un conjunto de tipografía para definir nuestros estilos de texto. Después de configurar el tema, podemos configurar una buena biblioteca de carga de imágenes para cargar imágenes sin problemas en nuestra aplicación. También podemos crear una vista personalizada específicamente para nuestra aplicación, p. por ejemplo, vistas de texto personalizadas, cargadores personalizados, etc. El siguiente punto clave en la creación de una interfaz de usuario flexible es la compatibilidad con todos los tamaños de pantalla. La compatibilidad con diferentes tamaños de pantalla aumenta los dispositivos de destino junto con los usuarios de su aplicación. Para admitir tantos tamaños de pantalla como sea posible, debemos diseñar los diseños de nuestras aplicaciones para que respondan y se adapten. Los diseños receptivos/adaptables brindan una experiencia de usuario optimizada independientemente del tamaño de la pantalla, lo que permite que nuestra aplicación se adapte a teléfonos, tabletas, dispositivos Chrome OS plegables, modos verticales y horizontales, y configuraciones personalizables como el modo de ventanas múltiples. Sin embargo, a menudo ignoramos esto, ya que es una de las cosas más importantes al escribir código para proyectos más grandes. Deberíamos tener un conjunto de reglas que deben aplicarse al escribir código. Esto hace que el código base sea consistente y fácil de entender para todos los miembros del equipo. En Android usamos controles de pelusa para mejorar nuestro código. Aquí hemos analizado algunos aspectos fundamentales de la creación de aplicaciones escalables recomendadas por Google. También puedes consultar Google Ahora en Android Repositorio para implementaciones reales de estos conceptos. Entremos en LinkedIn y conectemos Gorjeo!Diviértete programando!