Как найти исходный код Telegram для Android и собрать его локально
Короткий ответ: исходный код клиента лежит в репозитории DrKLO/Telegram на GitHub; чтобы собрать APK — клонируйте репозиторий с подмодулями, подготовьте Android Studio + JDK + NDK и выполните ./gradlew assembleTMessageRelease в папке TMessagesProj. Ниже — точные команды, требования и пошаговая инструкция.
Где посмотреть исходники
Официальный репозиторий в GitHub указан как DrKLO/Telegram (имя репозитория: Telegram). В нём находятся все исходники приложения, включая TMessagesProj — основную Android‑часть, native‑модули (NDK), recursos и файлы сборки.
Клонирование:
- git clone --recursive https://github.com/DrKLO/Telegram.git
- Флаг --recursive необходим: подтягивает подмодули (native-библиотеки и внешние компоненты).
- Если уже клонировали без него: git submodule update --init --recursive
Подготовка окружения и требования
Минимальные и рекомендуемые компоненты:
- Android Studio (рекомендуется Flamingo или новее).
- JDK 17.
- Android SDK с платформой API 21+.
- Android NDK (рекомендуется r25b) и CMake.
- Gradle плагин/Wrapper: Gradle 8.0+ (обновите в gradle-wrapper.properties или используйте встроенный wrapper).
- Свободная RAM: минимум 8 ГБ (лучше 16 ГБ), место на диске ~5–10 ГБ.
Проверки в терминале:
- ndk-build --version
- cmake --version
- java -version
Если ndk/cmake не видны в терминале, укажите путь в local.properties: ndk.dir=/путь/к/ndk и перезапустите Android Studio.
Пошаговая сборка APK
- Клонируйте репозиторий с подмодулями (см. выше).
- Откройте Android Studio → Open an existing Android Studio project → выберите папку TMessagesProj.
- Дождитесь индексации и загрузки Gradle-зависимостей (5–15 минут).
- В терминале проекта выполните:
- ./gradlew assembleTMessageRelease
- или ./gradlew assembleTMessageDebug
- Найдите результат:
- TMessagesProj/build/outputs/apk/release/Telegram.apk (или debug/…)
- Если собираете релиз и хотите подписать APK:
- Сгенерируйте ключ: keytool -genkey -v -keystore my.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000
- Пропишите пути и пароли в signingConfigs build.gradle или используйте apksigner для подписи после сборки.
Советы по производительности сборки:
- Для недостатка памяти установите в gradle.properties: org.gradle.jvmargs=-Xmx4g
- Используйте --parallel или configure-on-demand с осторожностью (иногда ломает сборку с нативными модулями).
Частые ошибки
- Submodule not found — забыли --recursive → git submodule update --init --recursive
- NDK mismatch / native build failed — версия NDK несовместима → установите r25b
- OutOfMemoryError при компиляции C/C++ — увеличить Xmx, закрыть другие приложения
- Signing error — нет keystore → сгенерировать ключ через keytool
- Gradle sync failed после обновления — откатьте gradle-wrapper.properties или обновите плагины к совместимой версии
Не распространяйте модифицированные APK через Google Play или публичные магазины — это нарушает правила и может привести к блокировке. Используйте сборки только для личного тестирования или разработки.
FAQ
- Нужно ли разрешение Telegram для сборки? Нет — клиент открытого исходного кода можно собирать локально, но публикация модифицированных версий может нарушать правила.
- Где искать логи ошибок сборки? В Android Studio — Build → Build Output; для Gradle в терминале используйте --stacktrace --info.
- Как обновить подмодули после пулла? git pull && git submodule update --init --recursive
- Где расположен код сети и шифрования? Смотрите src/main/java/org/telegram — там логика чатов, MTProto и части, связанные с шифрованием; нативные реализации в соответствующих C/C++ модулях.
Если после этих шагов сборка всё ещё падает, укажите текст ошибки (Build Output) — помогу с конкретным решением.