Dispositivos móviles y entorno de desarrollo
Evolución del hardware, las tres familias de tecnologías de desarrollo, y la puesta en marcha de Android Studio.
Evolución del hardware, las tres familias de tecnologías de desarrollo, y la puesta en marcha de Android Studio.
Evolución, tipos y limitaciones de hardware.
Nativo, multiplataforma y web/híbrido.
IDE, SDK, Gradle y ADB.
AVD, configuración, perfil, dp/sp.
Las cuatro entregas del tema.
Primer hito del proyecto continuo.
Un equipo informático de tamaño reducido, alimentado por batería, con conectividad inalámbrica y pensado para usarse en movimiento.
Cada una de estas cuatro características impone una restricción real al software que vamos a escribir durante el curso.
Antes, programar para un móvil era una excepción; después, un sector completo.
Apple controla hardware y software; alto rendimiento y consistencia.
Elegida por fabricantes para entrar al mercado smartphone; hoy a la par en rendimiento.
La gran demanda de desarrolladores Android del mercado es la razón por la que este curso se centra en Android nativo.
El caso mayoritario, el que usaremos en el proyecto.
Misma plataforma, pantalla mucho mayor → diseños adaptables.
Pantalla mínima, interacción de segundos, dependen de un teléfono cercano.
La pantalla cambia de tamaño durante la ejecución.
TV, automoción: sin táctil, control por mando o voz.
Dispositivos muy distintos entre sí → apps responsive. El acceso a funcionalidades depende también de la versión de API.
Programar para móvil no es programar para escritorio con una pantalla más pequeña: es programar bajo restricciones que en un PC no existen.
Consecuencia: nunca se posicionan elementos en píxeles absolutos; objetivos táctiles necesitan mínimo 48 dp.
Un cálculo intensivo sostenido acaba siendo más lento, no más rápido. Consecuencia: el trabajo pesado va fuera del hilo principal y, cuando es posible, se delega al servidor.
Esta es la razón de ser del ciclo de vida que veremos en el tema 2: una app móvil debe poder morir y resucitar sin que el usuario pierda datos.
Consecuencia: no se hacen sondeos periódicos al servidor "por si acaso"; se usan notificaciones push y trabajo diferido.
La red no es fiable. Toda operación de red necesita gestión de error y, preferiblemente, caché local (unidad 4).
A diferencia de un PC, un móvil sabe dónde está, cómo está orientado y qué le rodea.
Acelerómetro · Giroscopio · Magnetómetro
GPS · Luz ambiental · Proximidad
Cámara · Micrófono · NFC · Huella
Hablaremos de estos sensores en la unidad 6.
| Aspecto | Escritorio | Móvil |
|---|---|---|
| Energía | Ilimitada (enchufe) | Batería, recurso crítico |
| Memoria | Abundante | Limitada; el SO puede matar la app |
| Conectividad | Estable | Intermitente y con coste |
| Pantalla | Grande, fija | Pequeña, muy variable |
| Entrada | Teclado y ratón | Dedo (impreciso) |
| Ciclo de vida | Vive hasta que se cierra | El sistema la suspende y destruye |
No es una elección técnica sin consecuencias: afecta a lenguajes, herramientas, rendimiento y al coste de mantener la app en cinco años.
Cambiar de tecnología a medio camino es un proceso costoso: puede durar meses o años. La IA reduce parte de esa complejidad, pero trae consigo mantenimiento de código ajeno y más tiempo de testing.
Escribir una sola vez, ejecutar en muchos sitios. Cada framework lo intenta de una forma distinta.
| Tecnología | Lenguaje | Estrategia |
|---|---|---|
| Flutter | Dart | Dibuja todo desde cero con Skia (motor propio) |
| React Native | JS / TS | Traduce componentes a controles nativos reales |
| .NET MAUI | C# | Abstracción: MAUI traduce a cada plataforma |
| Kotlin Multiplatform | Kotlin | Comparte lógica; interfaz nativa por plataforma |
Un equipo web que sabe React puede ser productivo con React Native sin aprender dos SDKs nativos.
Web instalable desde el navegador. Sin tienda, sin revisión, se actualiza sola.
Cordova, Ionic, Capacitor: web dentro de un contenedor nativo con acceso a algunas APIs del dispositivo.
Reutilización inmediata del código web, pero rendimiento y acceso al hardware son los más limitados de las tres familias.
| Criterio | Nativo | Multiplataforma | Web / Híbrido |
|---|---|---|---|
| Rendimiento | Máximo | Alto | Medio-bajo |
| Hardware | Total | Alto (a veces plugin) | Limitado |
| Coste multiplataforma | Alto | Bajo | Muy bajo |
| Novedades del SO | Inmediatas | Con retraso | Mucho retraso |
No es una recomendación universal: saber argumentar tu elección forma parte del criterio de evaluación 1b.
| Recurso | Mínimo | Recomendado |
|---|---|---|
| RAM | 8 GB | 16 GB o más |
| Disco | 12 GB libres | 30 GB |
| Procesador | x86_64 con virtualización | Virtualización activada en BIOS |
El emulador necesita virtualización por hardware (Intel VT-x, AMD-V o SVM Mode). Si está desactivada, el emulador no arranca o va inutilizablemente lento.
| Propiedad | Qué significa |
|---|---|
compileSdk | APIs disponibles al escribir código; siempre la más reciente estable |
minSdk | Versión mínima de Android donde se instala; bajarla amplía el público |
targetSdk | Versión para la que la app declara estar preparada |
Android Studio muestra el porcentaje de dispositivos cubierto por cada nivel de API. minSdk 24 (Android 7.0) cubre casi todo el parque actual.
Coexistencia de muchas versiones de Android y modelos de dispositivo en el mercado a la vez.
Las bibliotecas AndroidX (Jetpack) existen para esto: una API única que resuelve internamente las diferencias entre versiones.
Tamaño de pantalla, densidad, RAM, sensores, cámara.
Versión de Android (API 30, 34, 35…) y arquitectura.
Orientación, memoria, aceleración gráfica, almacenamiento.
Device Manager → Create Device. Las imágenes con Google Play incluyen servicios de Google; x86_64 es mucho más rápido que ARM en PC.
«¿Qué clase de dispositivo es este?» Tamaño, densidad, memoria, sensores presentes. Se materializa en cualificadores de recursos (values-en, layout-land, drawable-xxhdpi).
Relación entre dispositivo y app: qué APIs hay, qué requisitos exige. Se define con minSdk/targetSdk y <uses-feature> en el Manifest.
Google Play filtra automáticamente el catálogo: un dispositivo sin cámara no verá una app que la requiere.
| Unidad | Uso | Definición |
|---|---|---|
dp | Tamaños y márgenes | 1 dp = 1 px a 160 ppp |
sp | Solo texto | Como dp, respeta el tamaño de fuente del usuario |
px | Casi nunca | Píxel físico real |
Usar sp en el texto no es cosmético: es accesibilidad. Si el texto está en dp, el ajuste de fuente del sistema se ignora.
| Emulador | Dispositivo real | |
|---|---|---|
| Variedad de configuraciones | Alta, gratuita | Limitada al hardware disponible |
| Sensores y red | Muy cómoda de simular | Difícil de controlar |
| Fidelidad de rendimiento | Engañosa | La única fiable |
| Cámara, Bluetooth, NFC | Limitados o ausentes | Completos |
Conclusión práctica: el emulador sirve para desarrollar y cubrir variedad; el dispositivo real es imprescindible para validar rendimiento y hardware. Se usan los dos.
adb devices que aparece en la lista.Tres tecnologías de familias distintas, comparadas. Criterios 1a, 1b.
Android Studio + 3 AVD con perfiles distintos. Criterios 1c, 1d, 1e, 1h.
Especificaciones de un dispositivo real + 3 conclusiones de diseño. Criterios 1a, 1d.
Primer hito del proyecto continuo del curso. Criterios 1a, 1b.
| Requisito | Tema |
|---|---|
| Persistencia de datos | 4 |
| Servicio web | 5 |
| Sensor o localización | 6 |
| Contenido multimedia | 7 |
Si alguna casilla queda vacía, la idea todavía no sirve para el proyecto: hay que estirarla o cambiarla. Vale más descubrirlo ahora que en febrero.
Es una plataforma con restricciones propias — y esas restricciones son el punto de partida de todo lo que programaremos este curso.