Relato ⑥: Ressuscitando com IA um aplicativo Android parado

Casos de adoção de IA

“O aplicativo funciona. Só as notificações é que não chegam há anos.” Foi assim que a conversa começou. Um aplicativo Android de um serviço B2C por assinatura. Estava publicado na loja e abria normalmente, mas em algum momento nenhuma notificação push saía mais. Desta vez pegamos um “aplicativo móvel intocável” — sem quem o tivesse criado, sem documentação — e herdamos integralmente os ativos dos membros e a chave de assinatura, reconstruindo-o com IA. Este é o relato.

O legado mais assustador não é o aplicativo que trava.
É o aplicativo que nunca trava, mas cuja função mais importante parou em silêncio.

Por baixo do “ele ainda funciona”, as notificações estavam mortas havia anos.

O que esse aplicativo realmente era: uma casca nativa que exibe um serviço web existente — um invólucro WebView somado a notificações push. As telas reaproveitavam ativos web existentes, então estavam vivas. O problema eram as notificações: o mecanismo de envio dependia de uma plataforma de entrega da geração anterior e, no momento em que essa plataforma foi descontinuada, a própria rota desapareceu. No banco de dados havia apenas uma coluna acrescentada para guardar os tokens do novo esquema, e nada nunca era gravado ali — a fiação ficou rompida no meio do caminho.

aprox. 14.000dispositivos registrados (total)
aprox. 3.200dispositivos Android
2016ano de emissão da chave de assinatura existente
1 vezrelançamentos necessários

Oitenta por cento do “intocável” era, na verdade, medo de reconstruir.

A parede que realmente enfrentamos não era a dificuldade do código, e sim o medo de herdar. No Android em especial, um passo errado o transforma em um aplicativo diferente que os usuários atuais não conseguem atualizar.

A plataforma de envio de notificações havia sumido com toda a sua geraçãoRota de comunicaçãoO serviço de entrega da geração anterior foi encerrado, e do lado do envio não existia mais rota alguma. Foi preciso começar migrando para uma “rota moderna”.
Sem quem o criou, sem documentos de projetoAplicaçãoSó restava o código-fonte antigo. Um agente de IA leu a estrutura, entendemos o esqueleto — casca + WebView + notificações — e só então redesenhamos. Não do zero, mas compreendendo o que existe de fato e reconstruindo — foi assim que conduzimos.
Sem herdar a chave de assinatura, nenhum usuário consegue atualizarAplicaçãoNo Android, só o pacote assinado com a mesma chave de assinatura chega como “atualização”. Localizamos a chave emitida em 2016, cerca de dez anos atrás, herdamos essa chave e confirmamos que a impressão digital do certificado batia exatamente — garantindo a entrega como atualização, e não como instalação nova.
A API de registro exigia comunicação criptografadaRota de comunicaçãoO servidor antigo estava configurado para recusar conexões em texto puro, e era aí que estava a maior parte das falhas de registro dos dispositivos. Em vez de desativar a verificação para contornar o problema, padronizamos o lado do aplicativo pressupondo comunicação criptografada.
O ambiente de build não acompanhava os requisitos atuais da lojaAplicaçãoA loja não aceita um ambiente de execução antigo. Elevamos a base de build (ferramenta de build, linguagem, ambiente de execução) para as versões atuais, até o ponto de conseguir gerar um pacote de distribuição assinado.

Separamos com clareza o que manter e o que reconstruir.

A tarefa não é “deixar tudo novo”. Os ativos aproveitáveis continuam sendo aproveitados. Decompondo, fica assim.

ItemAntesDepois da reconstrução
Rota das notificaçõesuma plataforma de entrega da geração anterior
(descontinuada – não envia)
Migrada para a plataforma de entrega atual (FCM)
Casca do aplicativoImplementação nativa de geração antigaRegerada com implementação nativa atual
Telas (conteúdo)Exibem o serviço web existenteContinuam iguais (ativos dos membros preservados)
Chave de assinaturaEmitida em 2016Mesma chave herdada (entregue como atualização)
Dados de membros e dispositivosAprox. 14.000 dispositivos registradosHerdados sem alteração

A reconstrução em si foi tocada de uma vez por um agente de IA. Em um dispositivo virtual, rodamos o aplicativo reconstruído por toda a sequência obter o token de notificação → registrá-lo no servidor → a notificação realmente chegar, confirmando que a ida e volta funcionava. A saída é um pacote assinado, pronto para distribuição.

Projete a reconstrução e o relançamento no menor tamanho possível.Na verdade, preparamos a volta das notificações de modo que ela pudesse ser acionada apenas pela migração do lado do servidor. O aplicativo é relançado uma única vez e, daí em diante, as notificações voltam à operação sem tocar em nenhum dispositivo — “não pedir ao usuário que atualize repetidas vezes” pesa cada vez mais quanto maior for a base de membros.

A maioria dos aplicativos dados como mortos não é perda total. Basta garantir os poucos fios rompidos e as chaves que precisam ser herdadas para trazer o que existe de volta a uma base moderna sem descartá-lo. Na parte de iOS (Relato ⑦) escrevemos sobre a outra plataforma, onde está a maioria dos membros, e sobre o que vale para os dois sistemas: modernizar as notificações mantendo o servidor antigo.

* Este artigo generaliza um projeto real na medida em que nem a empresa nem o serviço possam ser identificados. Os números são aproximados, com base em medições de agosto de 2026. Prazo e escopo do trabalho variam conforme a estrutura do aplicativo.

Tags:

🌐 Português