← Nesim Apps

Una lista remota sin servidor para «Más juegos»: un archivo JSON en GitHub Pages

Por Nesim Razon, desarrollador Android independiente · 2026-11-14

#Notas de desarrollo#Android

Cada uno de mis juegos tiene una ventana «Más juegos» que promociona a los demás. Durante un tiempo esa lista estaba metida en cada app, lo que significaba que publicar un juego nuevo obligaba a actualizar todos los antiguos. La sustituí por un único archivo JSON en GitHub Pages. Así funciona y estos son los límites que lo mantienen seguro.

El problema de una lista dentro de la app

Una lista incorporada en la app es fácil de escribir y dolorosa de mantener. Cada juego nuevo significaba código nuevo, iconos nuevos y una versión nueva de cada juego antiguo, y cada una de esas versiones pasa por revisión. Con una docena de juegos, la ventana de promoción era la parte más lenta de cada lanzamiento.

Un archivo en GitHub Pages

La lista es ahora un archivo estático junto a mi web, más un pequeño icono por juego. Cada entrada tiene una clave corta, el nombre del juego, el nombre de paquete de Android, una ruta de icono y una descripción por idioma. Las apps leen la descripción en el idioma del teléfono y recurren al inglés si falta.

Un pequeño script construye el archivo. Tiene una línea por juego, redimensiona cada icono a un tamaño pequeño fijo y escribe todo. Añadir un juego es añadir una línea, ejecutar el script y enviar. Ninguna de las apps antiguas necesita una versión para eso.

Cómo la usa la app

Como máximo una vez cada 48 horas, la app descarga la lista en un hilo en segundo plano y la guarda en el teléfono. La ventana lee siempre la copia guardada. Si el teléfono nunca ha estado en línea, o el archivo está dañado, la app recurre a una copia de la lista y de los iconos que viene dentro de la propia app.

Una entrada cuyo icono no está disponible se omite en lugar de mostrar un cuadrado gris, y el juego nunca se lista a sí mismo.

Comprobaciones que lo mantienen seguro

La lista solo puede abrir una página de tienda, pero aun así la trato como entrada no fiable.

Escribir en el orden correcto

La app descarga y guarda primero los iconos y solo después guarda el archivo de la lista. Así la lista guardada nunca apunta a un icono que falta. Al guardarse la lista nueva cambia un pequeño contador para que una ventana abierta se actualice sola, lo que arregló el caso en que la primera apertura mostraba una ventana vacía.

Qué seguiría cambiando

Un juego nuevo aparece tras la siguiente actualización, que puede tardar hasta dos días más la próxima vez que se abra la ventana, así que no es instantáneo. La lista no cuenta usos por sí misma; los clics los cuentan las apps. Y todo depende de un único servidor, por eso importa la copia incluida.

Preguntas frecuentes

¿Añadir un juego nuevo exige actualizar las apps antiguas?

No. Las apps leen la lista de un archivo JSON en línea, así que basta añadir una línea al archivo y publicarlo.

¿Qué pasa cuando el teléfono está sin conexión?

La app usa la última copia guardada, o una copia incluida en la app si nunca ha descargado la lista.

¿Con qué frecuencia actualiza la app la lista?

Como máximo una vez cada 48 horas, en un hilo en segundo plano.

¿Se puede abusar de la lista para abrir algo dañino?

Solo puede abrir páginas de tienda, y las descargas, los tamaños, las claves y los nombres de paquete se comprueban antes de usarse.

Más del blog