Comment NagramXF est structuré et pourquoi les forks Telegram continuent de prospérer
Si vous avez déjà examiné le code source du client Telegram officiel pour Android, vous vous souvenez probablement de ce sentiment de léger désarroi. Une base de code massive TMessagesProj, un mélange de Java et C++, des tonnes de Views personnalisées et un rendu d'interface maison. Malgré toute cette complexité architecturale, tout un écosystème de forks s'est développé autour du client Telegram. Les développeurs cherchent constamment à remanier l'application pour répondre à leurs besoins : certains ajoutent des accusés de lecture masqués, d'autres suppriment les publicités ou greffent de nouveaux thèmes.
Récemment, je suis tombé sur le dépôt NagramXF sur GitHub. C'est un fork du populaire client Nagram X, dont l'auteur a décidé de ne pas se limiter à une seule branche et a regroupé les fonctionnalités de plusieurs projets bien connus sous le capot : AyuGram, exteraGram, Cherrygram et OctoGram.
Décomposons ce qu'est ce projet, comment il est structuré en interne, et comment compiler votre propre APK à partir du code source.
Un Frankenstein des meilleures fonctionnalités des clients tiers
L'histoire des clients Telegram alternatifs pour Android ressemble à un jeu de construction. D'abord le fork Nekogram, puis Nagram, ensuite Nagram X, et maintenant nous sommes arrivés à NagramXF. L'auteur du projet Keeperorowner avait un objectif simple : prendre la stabilité de base de Nagram X et porter les améliorations utiles d'autres forks fermés et ouverts dedans.
Voici ce qui a été intégré dans la build :
- Fonctionnalités d'AyuGram : sauvegarde de l'historique des messages modifiés et supprimés directement sur l'appareil, configuration flexible du statut « en train d'écrire », et accusés de lecture masqués pour les conversations.
- Fonctionnalités de personnalisation d'exteraGram et Cherrygram : polices affinées, styles d'icônes, séparateurs de chat personnalisés, et menu de transfert de messages étendu sans l'auteur.
- Ajustements UI mineurs d'OctoGram : copie rapide de liens, visualisation simplifiée des profils, et optimisation des animations dans les listes.
Un détail intéressant : dans la description du dépôt, l'auteur prévient honnêtement que certaines fonctionnalités ont été obtenues par ingénierie inverse de builds fermés. Le code conserve les références aux auteurs originaux des différents patches, ce qui pour des forks open source de ce genre est plutôt une rareté agréable.
Sous le capot et spécificités structurelles
Le dépôt est assez volumineux, environ 800 mégaoctets sans les sous-modules. À l'intérieur se trouve un projet classique TMessagesProj, mais avec des changements notables au niveau des modules et des helpers.
Si vous regardez dans le package tw.nekomimi.nekogram.helpers, la lignée de Nekogram est immédiatement apparente. Par exemple, la gestion à distance des métadonnées et de la configuration du client est liée à la classe BaseRemoteHelper, qui lit les paramètres depuis un canal de service spécial.
L'architecture du fork repose sur trois piliers :
- Le code de base Telegram Android, périodiquement récupéré depuis l'upstream du dépôt officiel
DrKLO/Telegram. - Une couche d'interception d'événements : les messages entrants sont mis en cache dans une base de données SQLite locale avant que le serveur n'envoie une commande de suppression ou de modification (c'est ainsi que fonctionne la fonctionnalité d'AyuGram).
- Les patches UI : une superposition au-dessus des Activities et contrôleurs standard de Telegram, ajoutant des interrupteurs dans le menu des paramètres.
Comment compiler le projet localement
Compiler des forks Telegram a toujours été une quête séparée, mais NagramXF dispose d'un guide assez simple. Si vous voulez explorer le code ou compiler une build propre avec vos propres clés, vous aurez besoin d'Android Studio, de quelques clés depuis la console développeur Telegram, et d'environ 15 minutes de temps libre.
D'abord, clonez le dépôt avec tous les sous-modules :
git clone --recursive --shallow-submodules https://github.com/Keeperorowner/NagramXF.git NagramXF
Si vous avez oublié le flag --recursive lors du clone initial, vous pouvez récupérer les sous-modules manuellement :
git submodule update --init --recursive --depth=1
Ensuite, allez sur my.telegram.org, connectez-vous, et créez une nouvelle application pour obtenir votre TELEGRAM_APP_ID et TELEGRAM_APP_HASH. Sans eux, le client ne pourra tout simplement pas s'authentifier auprès des serveurs Telegram.
Dans la racine du projet, créez un fichier local.properties et ajoutez les identifiants que vous avez reçus :
TELEGRAM_APP_ID=1234567
TELEGRAM_APP_HASH=0123456789abcdef0123456789abcdef
Si vous compilez un APK release pour une utilisation régulière, vous devriez également y ajouter vos paramètres de keystore :
KEYSTORE_PASS=your_keystore_password
ALIAS_NAME=your_alias_name
ALIAS_PASS=your_alias_password
Maintenant, vous devez configurer quelques paramètres système dans le code :
- Dans
TMessagesProj/src/main/AndroidManifest.xml, spécifiez votre clé API Google Maps (si vous voulez que le partage de localisation fonctionne correctement). - Dans le fichier
BaseRemoteHelper.java, spécifiez l'ID du canal de métadonnées. - Déposez
google-services.jsondansTMessagesProj/si vous avez besoin de notifications push via Google FCM.
Après cela, le projet s'ouvre dans Android Studio et se compile avec la tâche standard assembleRelease ou assembleDebug.
Qui pourrait trouver ce projet utile
Les clients comme NagramXF sont intéressants dans deux scénarios.
D'abord, pour les développeurs Android. Si vous voulez voir comment les intercepteurs de messages, le stockage local et les patches sur le vaste monolithe legacy de Telegram sont implémentés en pratique, NagramXF le démontre clairement. Ici, vous pouvez observer l'implémentation de menus personnalisés, les surcharges d'événements réseau, et l'utilisation du NDK.
Ensuite, pour ceux qui trouvent la version de base de Telegram trop limitée en paramètres. NagramXF combine des fonctionnalités qui nécessitaient auparavant de choisir entre AyuGram et exteraGram. Tout est rassemblé au même endroit ici.
Bien sûr, il faut prendre en compte les risques : utiliser des clients tiers avec des patches fermés nécessite de faire confiance à l'auteur du fork. Mais si vous avez besoin d'un client personnalisable avec un processus de build ouvert, NagramXF ressemble à une expérience intéressante.
Projets similaires