Wie NagramXF strukturiert ist und warum Telegram-Forks florieren
Wenn Sie jemals den Quellcode des offiziellen Telegram-Clients für Android betrachtet haben, erinnern Sie sich wahrscheinlich an dieses Gefühl der leichten Verwirrung. Eine massive Codebasis TMessagesProj, eine Mischung aus Java und C++, unzählige benutzerdefinierte Views und selbstentwickeltes Interface-Rendering. Trotz der gesamten architektonischen Komplexität ist ein ganzes Ökosystem von Forks um den Telegram-Client gewachsen. Entwickler versuchen ständig, die App an ihre Bedürfnisse anzupassen: Einige fügen versteckte Lesebestätigungen hinzu, andere entfernen Werbung oder fügen neue Themes hinzu.
Kürzlich bin ich auf das NagramXF-Repository auf GitHub gestoßen. Es ist ein Fork des beliebten Nagram X-Clients, dessen Autor sich entschieden hat, sich nicht auf einen einzelnen Branch zu beschränken, und Funktionen mehrerer bekannter Projekte unter der Haube gebündelt hat: AyuGram, exteraGram, Cherrygram und OctoGram.
Lassen Sie uns aufschlüsseln, was dieses Projekt ist, wie es intern strukturiert ist und wie Sie Ihre eigene APK aus dem Quellcode erstellen können.
Ein Frankenstein der besten Funktionen von Drittanbieter-Clients
Die Geschichte alternativer Telegram-Clients für Android ähnelt einem Baukastensystem. Zuerst kam der Nekogram-Fork, dann Nagram, später Nagram X, und jetzt sind wir bei NagramXF angekommen. Der Projektautor Keeperorowner hatte ein einfaches Ziel: Die Basistabilität von Nagram X nehmen und nützliche Verbesserungen aus anderen geschlossenen und offenen Forks hineinportieren.
Hier ist, was es in den Build geschafft hat:
- Funktionen von AyuGram: Speichern des Verlaufs von bearbeiteten und gelöschten Nachrichten direkt auf dem Gerät, flexible Konfiguration des „Tippen“-Status und versteckte Lesebestätigungen für Unterhaltungen.
- Anpassungsfunktionen von exteraGram und Cherrygram: fein abgestimmte Schriften, Icon-Stile, benutzerdefinierte Chat-Trenner und ein erweitertes Nachrichtenweiterleitungsmenü ohne den Autor.
- Minor UI-Verbesserungen von OctoGram: schnelles Link-Kopieren, vereinfachte Profilansicht und Animationsoptimierung in Listen.
Ein interessantes Detail: In der Repository-Beschreibung warnt der Autor ehrlich, dass einige Funktionen durch Reverse Engineering geschlossener Builds erhalten wurden. Der Code behält Referenzen auf die ursprünglichen Autoren verschiedener Patches bei, was für Open-Source-Forks dieser Art eher eine angenehme Seltenheit ist.
Unter der Haube und strukturelle Besonderheiten
Das Repository ist ziemlich umfangreich, etwa 800 Megabyte ohne Submodule. Darin befindet sich ein klassisches Projekt TMessagesProj, jedoch mit bemerkenswerten Änderungen an Modulen und Helfern.
Wenn Sie einen Blick in das Package tw.nekomimi.nekogram.helpers werfen, wird die Abstammung von Nekogram sofort deutlich. Zum Beispiel ist das Remote-Management von Metadaten und Client-Konfiguration an die Klasse BaseRemoteHelper gebunden, die Parameter aus einem speziellen Service-Kanal liest.
Die Architektur des Forks ruht auf drei Säulen:
- Der Basis-Telegram-Android-Code, der periodisch vom Upstream des offiziellen Repositories
DrKLO/Telegramgepullt wird. - Eine Ereignisabfangschicht: Eingehende Nachrichten werden in einer lokalen SQLite-Datenbank zwischengespeichert, bevor der Server einen Befehl zum Löschen oder Bearbeiten sendet (so funktioniert die AyuGram-Funktionalität).
- UI-Patches: Eine Ebene über den Standard-Telegram-Aktivitäten und -Controllern, die Schalter zum Einstellungsmenü hinzufügt.
So erstellen Sie das Projekt lokal
Das Erstellen von Telegram-Forks war schon immer eine separate Quest, aber NagramXF hat eine ziemlich unkomplizierte Anleitung. Wenn Sie in den Code eintauchen oder einen sauberen Build mit Ihren eigenen Keys erstellen möchten, benötigen Sie Android Studio, ein paar Keys aus der Telegram-Entwicklerkonsole und etwa 15 Minuten freie Zeit.
Klonen Sie zunächst das Repository zusammen mit allen Submodulen:
git clone --recursive --shallow-submodules https://github.com/Keeperorowner/NagramXF.git NagramXF
Wenn Sie das --recursive-Flag beim initialen Clone vergessen haben, können Sie die Submodule manuell pullen:
git submodule update --init --recursive --depth=1
Gehen Sie als Nächstes zu my.telegram.org, melden Sie sich an und erstellen Sie eine neue Anwendung, um Ihre TELEGRAM_APP_ID und TELEGRAM_APP_HASH zu erhalten. Ohne sie kann der Client sich nicht bei den Telegram-Servern authentifizieren.
Erstellen Sie im Projektstammverzeichnis eine local.properties-Datei und fügen Sie die erhaltenen Zugangsdaten hinzu:
TELEGRAM_APP_ID=1234567
TELEGRAM_APP_HASH=0123456789abcdef0123456789abcdef
Wenn Sie eine Release-APK für den normalen Gebrauch erstellen, sollten Sie dort auch Ihre Keystore-Parameter hinzufügen:
KEYSTORE_PASS=your_keystore_password
ALIAS_NAME=your_alias_name
ALIAS_PASS=your_alias_password
Jetzt müssen Sie ein paar Systemparameter im Code konfigurieren:
- Geben Sie in
TMessagesProj/src/main/AndroidManifest.xmlIhren Google Maps API-Key an (wenn Sie möchten, dass die Standortfreigabe korrekt funktioniert). - Geben Sie in der
BaseRemoteHelper.java-Datei die Metadaten-Kanal-ID an. - Legen Sie
google-services.jsoninTMessagesProj/ab, wenn Sie Push-Benachrichtigungen über Google FCM benötigen.
Danach lässt sich das Projekt in Android Studio öffnen und mit der Standardaufgabe assembleRelease oder assembleDebug erstellen.
Wem dieses Projekt nützlich sein könnte
Clients wie NagramXF sind in zwei Szenarien interessant.
Erstens für Android-Entwickler. Wenn Sie sehen möchten, wie Message-Interceptor, lokale Speicherung und Patches auf dem massiven Legacy-Monolithen von Telegram in der Praxis implementiert werden, demonstriert NagramXF dies deutlich. Hier können Sie einen Blick auf die Implementierung benutzerdefinierter Menüs, Netzwerkereignis-Overrides und NDK-Nutzung werfen.
Zweitens für diejenigen, die die Basisversion von Telegram in den Einstellungen zu einschränkend finden. NagramXF kombiniert Funktionen, für die man zuvor zwischen AyuGram und exteraGram wählen musste. Hier ist alles an einem Ort versammelt.
Natürlich müssen Sie die Risiken berücksichtigen: Die Nutzung von Drittanbieter-Clients mit geschlossenen Patches erfordert Vertrauen in den Fork-Autor. Aber wenn Sie einen anpassbaren Client mit einem offenen Build-Prozess benötigen, sieht NagramXF nach einem interessanten Experiment aus.
Ähnliche Projekte