Faragiri

Aprender desarrollo móvilprogramación

Qué hace falta además de compilar: por qué el sistema cierra la app en segundo plano, las dos medidas de un botón y lo que exigen las tiendas en la UE.

7Secciones
7Min de lectura
2Profundidad

La decisión

Escribirlo una vez o escribirlo dos, y lo decide el aparato

Tres de las cuatro filas van al mismo sitio en casi cualquier app. La cuarta es la que da la vuelta a la decisión, y es la que nadie mira primero.

Un solo código compartidoLas dos tiendas desde un mismo proyecto, por cerca de la mitad del coste
Dos códigos nativosEscrito dos veces, en el lenguaje y con las herramientas de cada plataforma
Listas, formularios y textoIguales en los dos, escrito una vezLa misma pantalla construida dos veces
Empezar en la segunda tiendaUn objetivo de compilación más, en el mismo portátilUn Mac, y una cuenta que se paga todos los años
Una novedad que la plataforma sacó en otoñoDisponible cuando alguien escriba el puenteDisponible el día que la plataforma la publica
Ubicación en segundo plano y widgetsSe puede, y lo difícil es el puenteEl camino documentado, con los ejemplos de quien fabrica la plataforma

Las filas no están ponderadas, y en la práctica las dos últimas deciden solas. Falta una que no es de software: sin un Mac no hay forma de compilar para iOS, ni con un código común, y eso decide el orden antes que cualquier fila de esta tabla.

La app que escribió Sergio Villalón Puerto para el club de montaña de Albacete graba el recorrido de una ruta por la sierra de Alcaraz y lo guarda al llegar. En su mesa funcionó tres semanas seguidas. El primer domingo con veinte socios andando, once recorridos llegaron vacíos.

El código estaba bien. Lo que pasó es que el móvil se quedó en el bolsillo con la pantalla apagada, el sistema necesitó memoria para la cámara de otra aplicación y cerró la de Sergio sin decírselo a nadie, ni siquiera a ella.

Un aparato que alguien lleva encima retira permisos, corta la conexión, apaga la pantalla y reparte la batería, y ninguna de esas cuatro cosas ocurre en una mesa.

El sistema cierra la app en segundo plano y no avisa

Esta es la diferencia de fondo con una página o con un programa de escritorio. En el móvil, salir de una app no la termina y quedarse en ella no la garantiza: pasa a segundo plano y ahí es un recurso, no un proceso protegido. El sistema cierra la app en segundo plano y hay que restaurarla desde lo que se guardó.

Lo que no se ha escrito en disco no vuelve. La variable con el recorrido a medias, la pantalla en la que estaba el usuario y el formulario a medio rellenar desaparecen igual, y al abrirla de nuevo la app arranca desde cero como si fuera la primera vez. Para el socio que ha andado catorce kilómetros, eso es un fallo del club.

Las dos plataformas dan el mismo sitio para eso con nombres distintos: @SceneStorage en SwiftUI y SavedStateHandle en Android guardan ese estado, y solo lo que pasa por ahí sobrevive al cierre. Sergio pasó a escribir cada punto del recorrido en la base de datos local en cuanto llegaba, en vez de acumularlos en memoria hasta el final, y con eso la ruta sobrevive a que la app muera a mitad.

La forma de comprobarlo no es andar por la sierra. En las opciones de desarrollo de Android hay una casilla para no conservar actividades, que reproduce ese cierre cada vez que se sale de la pantalla, y en el emulador se prueba en diez segundos.

44 puntos y 48 píxeles independientes de densidad

La segunda cosa que la mesa no enseña es el dedo. Un ratón apunta a un píxel y un pulgar apoya un óvalo de unos nueve milímetros, así que las dos plataformas fijan un mínimo para cualquier cosa que se pueda tocar: 44 puntos en iOS y 48 píxeles independientes de densidad en Android.

Ni puntos ni píxeles independientes de densidad son píxeles de la pantalla, y ahí es donde se tuerce la primera maqueta. Son medidas que el sistema convierte según la densidad del aparato, de forma que el botón mide lo mismo en dedos en un móvil de gama baja y en uno de pantalla larga. Un botón de 30 píxeles medidos en la ventana del emulador cumple en la mesa y se falla en la calle.

El botón de parar el recorrido de Sergio estaba en 32 puntos, pegado al de descartar. Subirlo a 48 y separarlo ocho puntos del de al lado quitó de golpe las quejas de rutas cortadas por error, que él llevaba dos meses buscando en el código de la grabación.

La compilación es la primera de cinco puertas

El módulo termina cuando el fichero .apk sale del ordenador. Detrás hay cuatro puertas más y ninguna es de código. Contando de cada 100 compilaciones que salen bien, 71 pasan la revisión de la tienda, 34 llegan a aparecer en alguna búsqueda, 19 acaban instaladas y 6 se abren una segunda vez.

La revisión es la primera sorpresa. Un rechazo de la tienda te devuelve al final de la cola de revisión, así que un permiso mal justificado no cuesta una corrección de diez minutos, cuesta los días que tarde en volver a mirarlo alguien. La app del club pedía la ubicación nada más abrirse, sin haber enseñado para qué, que es el motivo de rechazo más repetido y el más fácil de evitar.

La segunda sorpresa es española y europea, y no sale en ningún manual en inglés. Desde 2025 las dos tiendas exigen declarar en la Unión Europea si publicas como profesional, y los datos de contacto de quien publica así aparecen en la ficha pública de la app. Para un autónomo eso significa que su nombre y su dirección van a estar en la tienda, junto al botón de instalar, y conviene saberlo antes de subir nada y no después.

La tercera es el precio. La tienda cobra al comprador con el 21 % de IVA dentro, así que una app de 2,99 € no deja 2,99 € menos la comisión: deja lo que queda después del impuesto y después de la comisión, y esa cuenta se hace entera en la monetización de una app.

Escribirlo una vez o dos, y la fila que no es técnica

La decisión que casi todo el mundo toma primero es con qué lo escribe, y es la que menos información tiene delante en ese momento. Para listas, formularios y texto, un código y dos tiendas sale mejor casi siempre, y la novedad de la plataforma llega tarde.

Lo que da la vuelta a la decisión son las cosas que tocan el aparato por debajo: ubicación en segundo plano, widgets, aportaciones a la salud, cualquier cosa que el sistema entrega por una puerta propia. Ahí el camino documentado, con los ejemplos de quien fabrica la plataforma, está en el lenguaje de la plataforma, y lo demás es escribir un puente y mantenerlo.

Y hay una fila que no aparece en ninguna comparativa porque no es de software: compilar para iOS exige un Mac, y el aula de un ciclo no tiene ninguno. Un código común no lo arregla, porque el que compila sigue siendo Xcode. Esa es la barrera real para empezar en la segunda tienda desde aquí, y es de ferretería. La comparación entera está en multiplataforma.

Una publicación

La compilación es la primera de cinco puertas y la única hecha de código

El ancho de cada banda es la cuenta del propio Sergio en una primera publicación, así que la caída es el dato: la pérdida más grande está entre instalada y abierta una segunda vez.

  1. Compila en la máquinaLa puerta en la que termina el módulo, y la más barata de las cinco100
  2. Pasa la revisiónRechazada una vez por pedir la ubicación nada más abrirse, y eso costó días de cola71
  3. Aparece en una búsquedaUna ficha es un resultado de búsqueda antes que una aplicación34
  4. Se instalaDonde para casi toda la medición, y donde todavía no ha pasado nada19
  5. Se abre una segunda vezEl primer número honesto, y el que destrozaba el recorrido perdido6

Son las cifras de una app pequeña llevadas a cien, no un dato del sector. La forma es la afirmación: cuatro de las cinco puertas se pasan cuando el código ya está terminado.

Dónde se para quien sale del ciclo

El módulo de móviles se da en el emulador, sobre una máquina del aula, y se evalúa cuando la app arranca y hace lo que pedía el enunciado. Todo lo que este tema acaba de contar ocurre después de ese punto, y por eso sale gente que ha escrito seis aplicaciones y no ha publicado ninguna.

El síntoma tiene una forma concreta: la app funciona perfecta en la demostración de clase y se rompe el primer fin de semana en manos de veinte personas. No es falta de nivel, es que el emulador nunca se quedó sin memoria, nunca perdió la cobertura en la sierra y nunca tuvo un dedo encima.

La señal de haber salido de ahí es que la primera prueba de una pantalla nueva ya no es abrirla, sino salirse de ella, matarla y volver.

Qué abrir en 2026, y lo que cuesta cada cosa

Android Studio es gratis, corre en Windows, en Linux y en Mac, y sustituyó a Eclipse con el plugin de Android, que es lo que enseñan los tutoriales anteriores a 2015. Con el emulador incluido cubre entero el primer año de este tema sin comprar nada.

Xcode también es gratis y solo existe para Mac, y es la única forma de compilar para iOS. Esa es la herramienta que este lector no siempre puede abrir, y la salida honesta no es un truco sino el orden: empezar por Android, que es donde está la mayoría de los móviles de aquí, y dejar iOS para cuando haya un Mac de por medio o alguien lo preste.

Las cuentas de publicación son la otra factura y no funcionan igual: la cuenta de Apple se paga cada año y la de Google una sola vez. Para un proyecto de club, esa diferencia decide el orden por sí sola.

Flutter y React Native son las dos formas serias de escribir una vez, las dos son gratis y de código abierto, y sustituyeron a meter una web dentro de una carcasa de app, que quien la usa nota enseguida.

Por dónde empezar dentro del tema

Lo primero es la plataforma que ya se puede abrir. Android se practica con el emulador que hay en el aula y con el móvil del bolsillo enchufado por cable, y ahí caben el cierre en segundo plano y las dos medidas de esta página. iOS entra después, con el Mac delante, y su recompensa es que la mitad que paga suele estar ahí.

El diseño para móvil conviene abrirlo antes de lo que parece, porque las dos medidas de arriba son suyas y porque una pantalla que se sostiene con una mano tiene una zona cómoda y otra que no lo es. Lo que este tema comparte con el resto, las peticiones y los formatos, sigue estando en el desarrollo web, y la sintaxis de Kotlin o de Swift, en los lenguajes de programación.

La pregunta que deja abierta la app del club no es de programación: si va a estar publicada con nombre y dirección de un profesional, alguien tiene que ser ese profesional y darse de alta. Eso se cuenta en el trabajo autónomo, y es la puerta que Sergio no vio venir.

Al lado de esto

Por encima de esto