Desarrollo Móvil
Investigación de los fundamentos del desarrollo de aplicaciones móviles modernas, comparando los enfoques nativo (Kotlin/Android) y multiplataforma (Dart/Flutter). Profundiza en arquitecturas de software como MVVM, prácticas de rendimiento y consumo eficiente de batería. Enfocado en el ciclo completo de desarrollo, desde las pruebas en emuladores hasta el empaquetado y publicación en las tiendas oficiales.
Panorama del ecosistema móvil
Aplicaciones nativas:
Son aplicaciones desarrolladas para un sistema operativo en específico,
ya sea Android o iOS. Utilizan lenguajes de programación específicos para
cada uno de los sistemas; Java o Kotlin para Android y Swift u Objective-C para iOS.
VENTAJAS
Tienen un rendimiento óptimo y pueden acceder a todas las funciones del dispositivo.
Le dan al usuario una experiencia más fluida.
DESVENTAJAS
Tienen mayor costo de desarrollo.
Ocupan equipo especializado para cada plataforma.
Aplicaciones Híbridas:
Son aquellas que nos permiten desarrollar para distintas plataformas usando un solo desarrollo.
VENTAJAS
Permiten subir la app en distintas Apps stores
DESVENTAJAS
El rendimiento es inferior y el acceso al dispositivo es menos permisivo.
Aplicaciones Web:
Son realizadas en un único desarrollo para todas las plataformas y se puede acceder desde un navegador web
a dichas aplicaciones.
VENTAJAS
El precio y el tiempo de desarrollo es bajo.
DESVENTAJAS
No se pueden subir a Apps stores, y requieren acceso a internet.
Sistemas operativos móviles
Apple iOS
Lanzado en 2007 llamado iPhone OS, promovió la característica
de tener la tecnología multitouch que los demás fabricantes de
smartphone acabarían adoptando.
Al inicio no se contaba con App Store, pero en 2008 se lanzó la
App Store y la posibilidad de instalar apps de terceros, en 2010
se renombró a iOS y en la actualidad se enfocan en la privacidad
del usuario, la optimización del hardware y ecosistema.
Arquitectura
1. Core OS → Kernel XNU, drivers, gestión de memoria.
2. Core Services → Servicios básicos: Core Foundation, SQLite, iCloud.
3. Media Layer → Frameworks gráficos, audio, video.
4. Cocoa Touch → Interfaz de usuario, gestos multitouch, notificaciones.
Android
Fundada en 2003 con un enfoque a cámaras digitales y en 2005
comprada por Google redirigiéndolo a los smartphones, en 2008
salió al mercado el primer dispositivo Android y hasta el 2011
Android superó en mercado a iOS.
En la actualidad se enfocan en la seguridad, velocidad y en inteligencia artificial.
Arquitectura
1. Linux Kernel → Manejo de hardware, drivers, seguridad.
2. Libraries y Android Runtime (ART) → Librerías C/C++ y máquina virtual para ejecutar apps (antes Dalvik).
3. Framework de Aplicaciones → APIs para UI, notificaciones, sensores, etc.
4. Aplicaciones → Apps del sistema y de usuario.
Ciclo de vida de una app
El ciclo de vida describe los estados que atraviesa una app desde que se abre hasta
que se cierra:
Android:
onCreate() → Inicialización de la app.
onStart() → App visible pero no interactiva.
onResume() → App en primer plano e interactiva.
onPause() → App parcialmente oculta (otra app encima).
onStop() → App ya no es visible.
onDestroy() → App finaliza y libera recursos.
iOS:
Not running → App no está en memoria.
Inactive → App visible pero no recibe eventos.
Active → App en uso y recibiendo eventos.
Background → App ejecutando tareas en segundo plano.
Suspended → App en memoria, sin uso de CPU.
Tiendas
Android → Google Play Store → permite instalar apps desde
la Play Store, tiendas de terceros o APKs manualmente.
iOS → App Store → Distribución controlada; las apps deben ser
aprobadas por Apple antes de publicarse.
Lenguajes y entornos de desarrollo
Kotlin-Android Studio
Es un lenguaje de programación moderno y estáticamente tipado que
tiene como objetivo principal el desarrollo nativo de aplicaciones Android.
Como resultado aplicaciones nativas de alto rendimiento con acceso completo a APIs de Android, además
de tener una máxima integración con el ecosistema Android, mejor rendimiento para aplicaciones
complejas y acceso inmediato a nuevas características de Android.
Dart-Flutter
Flutter es un kit de herramientas optimizado para aplicaciones rápidas multiplataforma (iOS, Android, Web, Desktop), Dart es un lenguaje desarrollado por Google con la finalidad de obtener aplicaciones con interfaz consistente en múltiples plataformas, además de tener las ventajas de widgets personalizables y atractivos, hot reload para desarrollo rápido y solo se necesita un código para varias plataformas.
¿Qué son los emuladores?
Los emuladores son software que simulan dispositivos reales (teléfonos, tablets) en tu computadora, permitiendo
probar aplicaciones sin necesidad de hardware físico.
- Android Emulator: Integrado con Android Studio
- iOS Simulator: Para desarrollo en macOS
- Emuladores de Flutter: Pueden usar ambos anteriores
Depuración Básica
La depuración es el proceso de identificar y corregir errores en el código.
Herramientas comunes:
- Logcat: Visualiza logs y mensajes de la aplicación
- Breakpoints: Pausa la ejecución en puntos específicos
- Inspector de layout: Analiza la interfaz de usuario
- Profiler: Monitorea rendimiento y uso de recursos
Proceso básico de depuración:
1. Identificar el error o comportamiento inesperado
2. Establecer breakpoints en áreas sospechosas
3. Ejecutar en modo depuración
4. Analizar variables y flujo de ejecución
5. Corregir el error y verificar la solución
Arquitecturas y paradigmas
MVC, MVP, MVVM
Son patrones arquitectónicos que se utilizan para estructurar aplicaciones de software. Cada uno tiene sus propias características y ventajas;
MVC: La View y el Controller suelen estar mezclados. Problema: Código difícil de mantener.
MVP: El Presenter es el "jefe". La View es tonta y solo obedece. Ventaja: Fácil de testear.
MVVM: La View se actualiza automáticamente al observar los datos del ViewModel. Ventaja: Menos código, muy moderno.
Event-Driven y Reactiva
Programación Event-Driven: El flujo del programa está determinado por eventos (clic de botón,
llegada de datos de red, un temporizador). La aplicación reacciona a estos eventos.
Programación Reactiva: Es una forma específica y poderosa de programación event-driven, se centra en el flujo de datos y
la propagación del cambio.
Capas Lógicas
1. UI (Capa de Presentación): Pantallas, ViewModels. Solo muestra datos y envía eventos.
2. Dominio (Capa de Negocio): Contiene las reglas centrales de tu app (Use Cases/Interactors).
3. Datos (Capa de Acceso a Datos): Obtiene y guarda información (Repositorios, APIs, Base de datos).
Buenas prácticas
- Separación: La capa de Dominio debe ser independiente y pura (sin código de Android/Flutter).
- Dependencias: Las dependencias van hacia el centro: UI -> Dominio <- Datos.
- Interfaces: La capa de Dominio se comunica con la de Datos a través de interfaces
(abstracciones), no implementaciones concretas. Esto lo hace todo testeable y flexible.
Diseño responsivo para la web
Mobile first
Es un enfoque de diseño y desarrollo web que se centra en la creación de una experiencia óptima para dispositivos móviles y después en dispositivos más grandes, lo que incluye diseño responsivo, contenido prioritario y interacción táctil, para una experiencia óptima en los dispositivos. Esto da como resultado que tengamos imágenes que se adaptan a la pantalla del dispositivo, la navegación sea fácil en cualquier dispositivo haciendo uso de media queries y flexbox.
Media queries
Son fragmentos de código CSS que permiten aplicar estilos específicos según ciertas características del dispositivo, como por ejemplo el ancho de la pantalla, colores, formas, etc. que hacen el diseño responsivo.
Flexbox
Son poderosas herramientas de diseño CSS que permiten crear layouts flexibles y responsivos en el desarrollo web.
Flexbox se utiliza para alinear y distribuir elementos en una sola dirección, lo que lo hace ideal para menús, barras de navegación
y listas de elementos.
Grid
Grid es un sistema de diseño bidimensional que permite crear layouts complejos con filas y columnas. Es perfecto para diseñar estructuras más elaboradas y controlar el posicionamiento preciso de los elementos en la página.
Accesibilidad y usabilidad
Semántica HTML5
El uso de etiquetas que describen claramente el propósito y significado del contenido que contienen tanto para los desarrolladores como para las máquinas. Estas etiquetas no solo organizan el contenido, también mejoran la accesibilidad y la indexación por motores de búsqueda.
Alt en imágenes
Esta función proporciona un texto que describe las imágenes en caso de que no se logre cargar.
Ayuda a los usuarios con discapacidades visuales a entender el contenido visual.
Mejora la accesibilidad y el SEO de las páginas web.
Jerarquía de encabezados
Se refiere a la organización estructurada y ordenada del contenido de una página web mediante el uso de etiquetas de encabezado, que van desde h1 hasta h6. Estas etiquetas permiten definir la importancia y prioridad de cada sección del contenido, facilitando tanto la lectura para los usuarios como la interpretación por parte de los motores de búsqueda.
Foco
Se refiere al elemento activo en una página web, que puede ser seleccionado mediante el teclado (usualmente con la tecla "Tab") o el ratón. Es crucial para la navegación accesible.
Contraste
Se refiere a la diferencia de luminosidad entre el texto y su fondo, lo que afecta directamente la legibilidad.
Buenas prácticas
Lo principal es tener un texto legible y atractivo manteniendo una buena claridad visual, generalmente, un tamaño de fuente entre 16 y 18 píxeles es ideal para la lectura en pantalla, aunque puede variar según el dispositivo o el público objetivo. Además del tamaño, el interlineado (espacio entre líneas) y el espaciado entre caracteres juegan un papel fundamental.
Seguridad y privacidad
Permisos en apps móviles
Los permisos móviles son solicitudes de autorización que las aplicaciones deben hacer al usuario para
acceder a funciones sensibles del dispositivo o información personal, protegen tu privacidad y datos además de que
sabes exactamente qué información accede cada aplicación.
Ejemplos:
1. Acceso a la cámara
2. Acceso a la ubicación
3. Acceso al micrófono
4. Contactos
5. Almacenamiento
6. Notificaciones
HTTPS
El protocolo de transferencia de hipertexto seguro es la versión segura de HTTP, que es el principal protocolo utilizado para enviar datos entre un navegador web y un sitio web. El HTTPS está encriptado para aumentar la seguridad de las transferencias de datos. Esto es importante cuando se trata de transmitir datos confidenciales, como iniciar sesión en una cuenta bancaria o un servicio de correo electrónico.
Manejo responsable de datos
El manejo responsable de datos implica un compromiso ético y legal con la protección de la información personal. Esto incluye la implementación de medidas de protección de datos, la transparencia en el uso de datos y el consentimiento del titular.
Marco jurídico que regula la protección de datos personales
La normativa de datos personales en México está compuesta por varias leyes y reglamentos
que regulan el tratamiento de datos personales en el país. Entre las principales normativas
se encuentran:
Ley Federal de Protección de Datos Personales en Posesión de los Particulares (LFPDPPP):
Establece las bases, principios y procedimientos para el tratamiento de datos personales por parte de entidades privadas.
Ley General de Protección de Datos Personales en Posesión de Sujetos Obligados:
Regula el tratamiento de datos personales por parte de entidades gubernamentales.
Reglamento de la Ley Federal de Protección de Datos Personales en Posesión de los Particulares:
Detalla los procedimientos y especificaciones técnicas para la implementación de la LFPDPPP.
Datos y conectividad
APIs REST-JSON
Es una interfaz que permite la comunicación entre sistemas a través de internet, siguiendo principios arquitectónicos específicos o un formato de datos más comúnmente utilizado para intercambiar información entre el cliente (por ejemplo, una aplicación web o móvil) y el servidor.
Almacenamiento local
Permite guardar datos directamente en el navegador del usuario. Esto es útil para almacenar información que debe persistir entre sesiones de navegación, sin necesidad de enviar datos al servidor.
1. Persistencia: Los datos almacenados permanecen incluso después de cerrar el navegador.
2. Capacidad: Puede almacenar hasta 5 MB de datos (dependiendo del navegador).
3. Seguridad: Los datos no se envían al servidor, lo que mejora la privacidad.
4. Acceso Sencillo: Se accede mediante JavaScript usando la propiedad localStorage.
Consideraciones de Rendimiento y Batería en Móvil
Se basa en hacer menos trabajo: usar caché para evitar redes, ejecutar tareas pesadas en segundo plano, activar sensores solo cuando son necesarios y liberarlos rápido, priorizando la eficiencia para que la app sea rápida y no consuma batería innecesariamente.
Ciclo de vida del desarrollo
Control de versiones Git
Es una práctica esencial en el desarrollo de software que permite rastrear y gestionar
los cambios realizados en archivos a lo largo del tiempo.
Git, un sistema de control de versiones distribuido (DVCS),
es una de las herramientas que por
su diseño permite a los desarrolladores trabajar de
manera eficiente, colaborativa y segura.
Pruebas básicas en emulador-dispositivo
Las pruebas básicas requieren usar tanto el emulador para desarrollo rápido y verificar layouts en diferentes pantallas, como el dispositivo real para testear el rendimiento, sensores y comportamiento en condiciones reales. Siempre se debe probar los flujos principales, la respuesta sin conexión a internet, y cómo maneja la app interrupciones como llamadas o notificaciones, ya que el emulador no puede simular fielmente el hardware ni la experiencia de usuario final.
Empaquetado y publicación
El empaquetado implica compilar el código en un archivo instalable (APK/AAB para Android o IPA para iOS), firmarlo digitalmente para verificar su autenticidad y optimizarlo reduciendo su tamaño. La publicación se realiza mediante tiendas oficiales (Google Play Store o Apple App Store), donde se deben seguir lineamientos específicos, subir assets como descripciones y capturas de pantalla, y pasar por un proceso de revisión antes de que la aplicación esté disponible para los usuarios.
REFERENCIAS
Panorama del ecosistema móvil
Rosa, M., & Rosa, M. (2024, 30 junio). 7 tipos de aplicaciones móviles [CLASIFICACIÓN con ejemplos]. CleverTap - All-in-One Customer Engagement Platform.
Visitar sitioMiriam. (2022, 18 abril). Principales tipos de aplicaciones móviles: ventajas, desventajas y ejemplos. Profile Software Services.
hVisitar sitioSistemas operativos móviles
Gómez, B. (2022, 6 agosto). Sistemas operativos móviles, así definen la historia de los smartphones. Profesional Review.
Visitar sitioVidal, S. (2023, 27 septiembre). Sistemas operativos móviles ▷➡️. Tecnobits.
Visitar sitioLenguajes y entornos de desarrollo
Kotlin for Android | Kotlin. (s. f.). Kotlin Help.
Visitar sitioIntro to Dart. (s. f.). Flutter.
Visitar sitioArquitecturas y paradigmas
Cruzito. (2025, 15 septiembre). Patrones de arquitectura: MVC, MVP, MVVM y MVI | Estudyando. Estudyando.
Visitar sitioCodigo. (2025, 25 mayo). Programación reactiva explicado de forma clara y confiable. Codigo6.
Visitar sitioDiseño responsivo para la web
Mobile first: qué es, cómo reconocerlo y ejemplos. (2023, 20 octubre). Mobile-first.
Visitar sitioCyberstream. (2024, 29 mayo). Todo lo que necesitas saber sobre una medida Query: definición, usos y ejemplos. Byron Vargas.
Visitar sitioAccesibilidad y usabilidad
Castellanos, E. (2023, 6 marzo). Elementos semánticos HTML5 explicados. freeCodeCamp.org.
Visitar sitioCyberstream. (2024a, febrero 14). La estructura de una página web: Cómo organizar y optimizar tu contenido. Byron Vargas.
Visitar sitioTofiño, E. (2025, 3 febrero). ¿Qué es la etiqueta ALT en una imagen y cómo usarla en SEO? Online Zebra.
Visitar sitioSeguridad y privacidad
Wolf Agencia de marketing digital. (2024, 18 diciembre). Guía completa sobre el marco legal de las aplicaciones móviles: todo lo que necesitas saber. Wolf Agencia de Marketing Digital.
Visitar sitioDatos y conectividad
Ibm. (2025, 28 mayo). API REST. ibm.com.
Visitar sitioRendimiento y escalabilidad móvil: métricas de rendimiento móvil que toda startup debe monitorear - FasterCapital. (s. f.). FasterCapital.
Visitar sitioCasero, A. (2024, 10 mayo). Persistencia de datos en el navegador [2025] | KeepCoding. KeepCoding Bootcamps.
Visitar sitioCiclo de vida del desarrollo
empaquetado y publicación html - Bing. (s. f.). Bing.
Visitar sitioAtlassian. (s. f.). Qué es el control de versiones | Atlassian Git Tutorial./p> Visitar sitio
Desarrollado por el alumno Raúl Eleazar Rodríguez Carrera como proyecto universitario para la materia Programacion Móvil de la carrera Ingeniería en Redes y Telecomunicaciones.