# exteraless
Открытая версия exteraGram — с моделью разрешений для плагинов
[](https://t.me/exteraless)
exteraless — форк NagramX, в котором возможности exteraGram реализованы с открытым исходным кодом. Основа — Telegram для Android 13.1.1.
Отдельный упор — безопасность плагинов. В exteraGram плагин не ограничен ни в чём; здесь у него есть модель разрешений: плагин объявляет, что ему нужно, это видно на экране установки, и получает он только то, что вы разрешили.
Проект в бете: часть возможностей exteraGram ещё не перенесена. Если заметили, что каких-то функций не хватает, — откройте issue или напишите в канал.
com.exteraless.apparm64-v8a, x86_64)Плагины
.plugin, архивы .elyx/.eaf,
плагины с DEX и хуки Java-методов (Xposed API)Клиент
Понадобятся JDK 21, Android SDK с NDK и CMake, Python 3.11 на машине сборки.
Склонировать репозиторий вместе с подмодулями:
bash
git clone --recursive --shallow-submodules https://github.com/exteraless/exteraless.git exteraless
Если репозиторий уже склонирован без подмодулей:
bash
git submodule update --init --recursive --depth=1
Получить TELEGRAM_APP_ID и TELEGRAM_APP_HASH на my.telegram.org
и создать local.properties в корне проекта:
properties
TELEGRAM_APP_ID=<ваш_app_id>
TELEGRAM_APP_HASH=<ваш_app_hash>
Если python3 в системе не 3.11, указать нужный интерпретатор:
properties
CHAQUOPY_BUILD_PYTHON=/usr/bin/python3.11
TMessagesProj/release.keystore и дописать в local.properties:properties
KEYSTORE_PASS=<пароль_хранилища>
ALIAS_NAME=<имя_ключа>
ALIAS_PASS=<пароль_ключа>
Ключа в репозитории нет намеренно. Без него сборка не падает — APK подписывается отладочным ключом Android.
Для push-уведомлений заменить TMessagesProj/google-services.json своим
(Firebase, имя пакета com.exteraless.app).
Необязательно: свои ключи в local.properties — MAPS_API_KEY (Google Maps; ключ
привязан к пакету и подписи, поэтому чужой показывает пустую карту) и GLYPH_API_KEY
(Nothing Glyph). Для канала метаданных — его числовой id без префикса -100
в BaseRemoteHelper.CHANNEL_METADATA_ID.
Собрать: ./gradlew :TMessagesProj:assembleDebug или открыть проект в Android Studio.
Среда выполнения Python собирается из подмодуля TMessagesProj/chaquopy во время
сборки; Cython для этого ставится сам.
Про ABI. Переменная NATIVE_TARGET задаёт цель: arm64-v8a или x86_64 (один ABI,
быстрее), пусто или universal (один APK с обоими ABI), SKIP (без нативной части —
только Java и ресурсы). 32-битные ABI не собираются.
Нужны два секрета репозитория:
LOCAL_PROPERTIES — содержимое local.properties в base64:bash
base64 -w0 local.properties
RELEASE_KEYSTORE — файл ключа в base64:bash
base64 -w0 TMessagesProj/release.keystore
Дальше запустить workflow Release Build. Готовый APK лежит в артефактах прогона.
Иконки и оформление, унаследованные от exteraGram, созданы его дизайнером — @the8055u и студией @BlueprintDsgn. Права на эти материалы принадлежат авторам.
exteraless is a fork of NagramX that implements exteraGram's features open-source. It is based on Telegram for Android 13.1.1.
The special focus is plugin security. In exteraGram a plugin is not restricted in any way; here it comes with a permission model: a plugin declares what it needs, you see that on the install sheet, and it gets only what you allow.
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.
com.exteraless.apparm64-v8a, x86_64).plugin, .elyx/.eaf archives, DEX plugins and
Java method hooks (Xposed API)You need JDK 21, the Android SDK with NDK and CMake, and Python 3.11 on the build machine.
Clone with submodules:
bash
git clone --recursive --shallow-submodules https://github.com/exteraless/exteraless.git exteraless
Get TELEGRAM_APP_ID and TELEGRAM_APP_HASH from my.telegram.org
and put them into local.properties in the project root. If python3 is not 3.11,
set CHAQUOPY_BUILD_PYTHON there to a 3.11 interpreter.
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.
For push notifications, replace TMessagesProj/google-services.json with your own
Firebase config for com.exteraless.app.
Optional: MAPS_API_KEY and GLYPH_API_KEY in local.properties, and your metadata
channel id (without -100) in BaseRemoteHelper.CHANNEL_METADATA_ID.
Build with ./gradlew :TMessagesProj:assembleDebug or from Android Studio. The Python
runtime is built from the TMessagesProj/chaquopy submodule during the build.
NATIVE_TARGET selects the ABI: arm64-v8a or x86_64 (one ABI, faster), empty or
universal (one APK with both), SKIP (no native part). 32-bit ABIs are not built.
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.
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.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|