← Nesim Apps

Uma lista remota sem servidor para "Mais jogos": um arquivo JSON no GitHub Pages

Por Nesim Razon, desenvolvedor Android independente · 2026-11-14

#Notas de desenvolvimento#Android

Cada um dos meus jogos tem uma janela "Mais jogos" que promove os outros. Por um tempo essa lista ficou embutida em cada app, o que significava que lançar um jogo novo obrigava a atualizar todos os antigos. Eu a troquei por um único arquivo JSON no GitHub Pages. Veja como funciona e quais limites o mantêm seguro.

O problema de uma lista dentro do app

Uma lista embutida no app é fácil de escrever e dolorosa de manter. Cada jogo novo significava código novo, ícones novos e uma versão nova de cada jogo antigo, e cada uma dessas versões passa por revisão. Com uma dúzia de jogos, a janela de promoção era a parte mais lenta de cada lançamento.

Um arquivo no GitHub Pages

A lista agora é um arquivo estático ao lado do meu site, mais um pequeno ícone por jogo. Cada entrada tem uma chave curta, o nome do jogo, o nome do pacote do Android, o caminho do ícone e uma descrição por idioma. Os apps leem a descrição no idioma do celular e recorrem ao inglês se faltar.

Um pequeno script monta o arquivo. Ele tem uma linha por jogo, redimensiona cada ícone para um tamanho pequeno fixo e escreve tudo. Adicionar um jogo é adicionar uma linha, rodar o script e enviar. Nenhum dos apps antigos precisa de uma versão para isso.

Como o app a usa

No máximo uma vez a cada 48 horas, o app baixa a lista em uma thread em segundo plano e a guarda no celular. A janela sempre lê a cópia guardada. Se o celular nunca ficou online, ou o arquivo está danificado, o app recorre a uma cópia da lista e dos ícones que vem dentro do próprio app.

Uma entrada cujo ícone não está disponível é ignorada em vez de mostrar um quadrado cinza, e o jogo nunca lista a si mesmo.

Verificações que o mantêm seguro

A lista só pode abrir uma página da loja, mas mesmo assim eu a trato como entrada não confiável.

Escrever na ordem certa

O app baixa e guarda primeiro os ícones e só depois guarda o arquivo da lista. Assim a lista guardada nunca aponta para um ícone que falta. Quando a lista nova é guardada, um pequeno contador muda para que uma janela aberta se atualize sozinha, o que resolveu o caso em que a primeira abertura mostrava uma janela vazia.

O que eu ainda mudaria

Um jogo novo aparece depois da próxima atualização, que pode levar até dois dias mais a próxima vez que a janela for aberta, então não é instantâneo. A lista não conta usos por conta própria; os cliques são contados pelos apps. E tudo depende de um único servidor, por isso a cópia embutida importa.

Perguntas frequentes

Adicionar um jogo novo exige atualizar os apps antigos?

Não. Os apps leem a lista de um arquivo JSON online, então basta adicionar uma linha ao arquivo e publicá-lo.

O que acontece quando o celular está offline?

O app usa a última cópia guardada, ou uma cópia embutida no app se nunca baixou a lista.

Com que frequência o app atualiza a lista?

No máximo uma vez a cada 48 horas, em uma thread em segundo plano.

A lista pode ser usada para abrir algo prejudicial?

Ela só pode abrir páginas da loja, e downloads, tamanhos, chaves e nomes de pacote são verificados antes de serem usados.

Mais do blog