No description
  • Java 52.9%
  • C++ 26.8%
  • C 11.6%
  • Assembly 4%
  • Go 1.4%
  • Other 3%
Find a file
2026-10-09 08:44:32 +03:00
.github Publish each main build as a GitHub pre-release for the beta update channel 2026-09-30 16:13:26 +03:00
assets Логотип в README — текущая иконка приложения 2026-08-18 23:05:58 +03:00
buildSrc update to 12.10.0 (7031) 2026-08-22 22:16:59 +09:00
gradle chore: update dependencies 2026-08-21 23:35:54 +09:00
tests Merge pull request #95 from omnizs38/main 2026-10-08 19:16:22 +03:00
TMessagesProj Leave profilers and the plugin toggle log out of builds without debugTools [skip publish] 2026-10-08 19:35:32 +03:00
TMessagesProj_Modules Update tlottie, media3 and the ffmpeg decoder from Telegram 12.10.4 2026-09-27 12:15:53 +03:00
Tools CI: не отправлять сборки в Telegram, оставлять артефактами 2026-08-16 15:57:24 +03:00
.gitignore Merge pull request #33 from 0niel/ignore-jvm-crash-dumps 2026-09-11 18:03:35 +03:00
.gitmodules Build the Chaquopy runtime libraries from the exteraless/chaquopy submodule 2026-10-07 23:08:35 +03:00
build.gradle Lower minSdk to 24, the floor Chaquopy requires 2026-09-17 21:31:41 +03:00
gradle.properties Port the Telegram 12.10.6 changes 2026-10-08 10:02:18 +03:00
gradlew chore: update dependencies 2026-06-21 16:21:52 +09:00
gradlew.bat chore: update dependencies 2026-06-21 16:21:52 +09:00
LICENSE Remove web translators & Fixes 2020-06-26 05:43:17 +00:00
README.md Update readme As it's my fork yeah 👍 2026-10-09 08:44:32 +03:00
settings.gradle update to upstream 12.10.2 2026-09-17 14:31:18 +03:00

exteraless

SnGram

Форк exteraless — без системы плагинов и с персонально необходимыми функциями.

Канал оригинала


Что это

sngram — форк Exteraless(который форк NagramX), в котором возможности exteraGram реализованы с открытым исходным кодом.

Проект-оригинал в бете: часть возможностей exteraGram ещё не перенесена. Если заметили, что каких-то функций не хватает, — откройте issue или напишите в канал.

  • Имя пакета: xyz.snfsx.sngram
  • Что перенесено: экраны настроек, оформление и параметры чатов, иконпаки, полоса пилюль (Pill Stack), боковое меню, движок Python-плагинов

Ссылки

Сборка

  1. Склонировать репозиторий вместе с подмодулями:

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

    Если репозиторий уже склонирован без подмодулей:

    git submodule update --init --recursive --depth=1
    
  2. Получить TELEGRAM_APP_ID и TELEGRAM_APP_HASH на my.telegram.org и создать local.properties в корне проекта:

    TELEGRAM_APP_ID=<ваш_app_id>
    TELEGRAM_APP_HASH=<ваш_app_hash>
    
  3. Для подписи APK положить свой TMessagesProj/release.keystore и дописать в local.properties:

    KEYSTORE_PASS=<пароль_хранилища>
    ALIAS_NAME=<имя_ключа>
    ALIAS_PASS=<пароль_ключа>
    

    Ключа в репозитории нет намеренно. Без него сборка не падает — APK подписывается отладочным ключом Android.

  4. Для push-уведомлений положить свой TMessagesProj/google-services.json (Firebase, имя пакета com.exteraless.app).

  5. Заменить метаданные проекта:

    • ключ Google Maps в записи com.google.android.maps.v2.API_KEY в TMessagesProj/src/main/AndroidManifest.xml;
    • BaseRemoteHelper.CHANNEL_METADATA_ID — числовой id вашего канала метаданных, без префикса -100.
  6. Собрать: ./gradlew :TMessagesProj:assembleDebug или открыть проект в Android Studio.

Про ABI. Собираются только 64-битные arm64-v8a и x86_64: Chaquopy собирает Python 3.12 лишь под них, и на armeabi-v7a конфигурация обрывается. Переменная NATIVE_TARGET задаёт цель: arm64-v8a (один ABI, быстрее), universal (оба), SKIP (без нативной части — только Java и ресурсы).

Сборка через GitHub Actions

Нужны два секрета репозитория:

  • LOCAL_PROPERTIES — содержимое local.properties в base64:

    base64 -w0 local.properties
    
  • RELEASE_KEYSTORE — файл ключа в base64:

    base64 -w0 TMessagesProj/release.keystore
    

Дальше запустить workflow Release Build. Готовый APK лежит в артефактах прогона.

Авторы дизайна

Иконки и оформление, унаследованные от exteraGram, созданы его дизайнером — @the8055u и студией @BlueprintDsgn. Права на эти материалы принадлежат авторам.

Благодарности


English

What this is

exteraless is a fork of NagramX that implements exteraGram's features open-source.

The project is in beta: some exteraGram features have not been ported yet. If you notice a missing feature, open an issue or write to the channel.

  • Package name: xyz.snfsx.sngram

Design credits

Icons and visual design inherited from exteraGram are the work of its designer, @the8055u, and the @BlueprintDsgn studio. Rights to those materials belong to their authors.

Building

  1. Clone with submodules:

    git clone --recursive --shallow-submodules https://github.com/exteraless/exteraless.git exteraless
    
  2. Get TELEGRAM_APP_ID and TELEGRAM_APP_HASH from my.telegram.org and put them into local.properties in the project root.

  3. For release signing, drop your own TMessagesProj/release.keystore and add KEYSTORE_PASS, ALIAS_NAME, ALIAS_PASS to local.properties. No keystore is shipped with the repository; without one the build is signed with the Android debug key.

  4. For push notifications, replace TMessagesProj/google-services.json with your own Firebase config for com.exteraless.app.

  5. Build with ./gradlew :TMessagesProj:assembleDebug or from Android Studio.

Only 64-bit ABIs are built (arm64-v8a, x86_64): Chaquopy ships Python 3.12 for those only, and armeabi-v7a fails at configuration time. NATIVE_TARGET selects the target: arm64-v8a, universal (both) or SKIP (no native part).

For CI, set two repository secrets — LOCAL_PROPERTIES and RELEASE_KEYSTORE, both base64-encoded — and run the Release Build workflow. The APK ends up in the run artifacts.