Как найти исходный код 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

  1. Клонируйте репозиторий с подмодулями (см. выше).
  2. Откройте Android Studio → Open an existing Android Studio project → выберите папку TMessagesProj.
  3. Дождитесь индексации и загрузки Gradle-зависимостей (5–15 минут).
  4. В терминале проекта выполните:
    • ./gradlew assembleTMessageRelease
    • или ./gradlew assembleTMessageDebug
  5. Найдите результат:
    • TMessagesProj/build/outputs/apk/release/Telegram.apk (или debug/…)
  6. Если собираете релиз и хотите подписать 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) — помогу с конкретным решением.