>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Java

Como o NagramXF é estruturado e por que os forks do Telegram continuam prosperando

Se você já analisou o código-fonte do cliente oficial do Telegram para Android, provavelmente se lembra dessa sensação de leve perplexidade. Uma base de código massiva TMessagesProj, uma mistura de Java e C++, toneladas de Views customizadas e renderização de interface caseira. Apesar de toda essa complexidade arquitetural, um ecossistema inteiro de forks cresceu ao redor do cliente Telegram. Os desenvolvedores estão constantemente tentando reformular o aplicativo para atender às suas necessidades: alguns adicionam confirmações de leitura ocultas, outros removem anúncios ou anexam novos temas.

Recentemente, encontrei o repositório NagramXF no GitHub. É um fork do popular cliente Nagram X, cujo autor decidiu não se limitar a um único branch e empacotou recursos de vários projetos conhecidos nos bastidores: AyuGram, exteraGram, Cherrygram e OctoGram.

Vamos detalhar o que esse projeto é, como ele é estruturado internamente e como compilar seu próprio APK a partir do código-fonte.

Um Frankenstein dos melhores recursos de clientes de terceiros

A história dos clientes alternativos do Telegram para Android se assemelha a um kit de construção. Primeiro veio o fork Nekogram, depois Nagram, depois Nagram X, e agora chegamos ao NagramXF. O autor do projeto Keeperorowner teve um objetivo simples: pegar a estabilidade base do Nagram X e portar melhorias úteis de outros forks fechados e abertos para ele.

Aqui está o que entrou na compilação:

  • Recursos do AyuGram: salvar o histórico de mensagens editadas e excluídas diretamente no dispositivo, configuração flexível do status de "digitação" e confirmações de leitura ocultas para conversas.
  • Recursos de personalização do exteraGram e Cherrygram: fontes ajustadas com precisão, estilos de ícones, divisores de chat personalizados e um menu estendido de encaminhamento de mensagens sem o autor.
  • Pequenos ajustes de UI do OctoGram: cópia rápida de links, visualização simplificada de perfis e otimização de animações em listas.

Um detalhe interessante: na descrição do repositório, o autor adverte honestamente que alguns recursos foram obtidos por engenharia reversa de builds fechadas. O código mantém referências aos autores originais de vários patches, o que para forks de código aberto deste tipo é uma raridade bastante agradável.

Por baixo do capô e especificidades estruturais

O repositório é bastante pesado, cerca de 800 megabytes sem submódulos. Dentro há um projeto clássico TMessagesProj, mas com mudanças notáveis em módulos e auxiliares.

Se você olhar dentro do pacote tw.nekomimi.nekogram.helpers, a linhagem do Nekogram é imediatamente aparente. Por exemplo, o gerenciamento remoto de metadados e configuração do cliente está vinculado à classe BaseRemoteHelper, que lê parâmetros de um canal de serviço especial.

A arquitetura do fork repousa sobre três pilares:

  1. O código base do Telegram Android, periodicamente puxado do upstream do repositório oficial DrKLO/Telegram.
  2. Uma camada de interceptação de eventos: mensagens recebidas são armazenadas em cache em um banco de dados SQLite local antes do servidor enviar um comando para excluí-las ou editá-las (é assim que funciona a funcionalidade do AyuGram).
  3. Patches de UI: uma sobreposição sobre Activities e controllers padrão do Telegram, adicionando toggles ao menu de configurações.

Como compilar o projeto localmente

Compilar forks do Telegram sempre foi uma jornada separada, mas o NagramXF tem um guia bastante direto. Se você quiser mergulhar no código ou compilar um build limpo com suas próprias chaves, você precisará do Android Studio, um par de chaves do console de desenvolvedores do Telegram e cerca de 15 minutos de tempo livre.

Primeiro, clone o repositório junto com todos os submódulos:

git clone --recursive --shallow-submodules https://github.com/Keeperorowner/NagramXF.git NagramXF

Se você esqueceu a flag --recursive durante o clone inicial, você pode puxar os submódulos manualmente:

git submodule update --init --recursive --depth=1

Em seguida, vá para my.telegram.org, faça login e crie um novo aplicativo para obter seu TELEGRAM_APP_ID e TELEGRAM_APP_HASH. Sem eles, o cliente simplesmente não conseguirá autenticar com os servidores do Telegram.

Na raiz do projeto, crie um arquivo local.properties e adicione as credenciais que você recebeu:

TELEGRAM_APP_ID=1234567
TELEGRAM_APP_HASH=0123456789abcdef0123456789abcdef

Se você estiver compilando um APK de release para uso regular, você também deve adicionar seus parâmetros de keystore lá:

KEYSTORE_PASS=your_keystore_password
ALIAS_NAME=your_alias_name
ALIAS_PASS=your_alias_password

Agora você precisa configurar alguns parâmetros de sistema no código:

  • Em TMessagesProj/src/main/AndroidManifest.xml, especifique sua chave de API do Google Maps (se quiser que o compartilhamento de localização funcione corretamente).
  • No arquivo BaseRemoteHelper.java, especifique o ID do canal de metadados.
  • Coloque google-services.json em TMessagesProj/ se precisar de notificações push via Google FCM.

Após isso, o projeto abre no Android Studio e compila com a task padrão assembleRelease ou assembleDebug.

Quem pode achar este projeto útil

Clientes como o NagramXF são interessantes em dois cenários.

Primeiro, para desenvolvedores Android. Se você quiser ver como interceptadores de mensagens, armazenamento local e patches sobre o grande monólito legado do Telegram são implementados na prática, o NagramXF demonstra isso claramente. Aqui você pode espiar a implementação de menus customizados, substituições de eventos de rede e uso do NDK.

Segundo, para aqueles que acham a versão base do Telegram muito limitada em configurações. O NagramXF combina recursos que anteriormente exigiam escolher entre AyuGram e exteraGram. Tudo está reunido em um só lugar aqui.

Claro, você precisa considerar os riscos: usar clientes de terceiros com patches fechados requer confiança no autor do fork. Mas se você precisa de um cliente personalizável com um processo de build aberto, o NagramXF parece um experimento interessante.

Projetos relacionados