编译 Telegram iOS 源码 (2026年最新指南)

Mar 03, 2026 • 预计阅读时间 2 分钟

准备编译环境

以下是我的开发环境:

  • 操作系统:macOS 26.3
  • 开发工具:Xcode 26.3
  • 包管理器:macports

安装依赖

  1. 安装 rsync,然后在 PATH 环境中覆盖系统自带的路径,不然编译的时候会提示莫名其妙的权限问题。

    $ sudo port install rsync
    

    这里比较坑的一点是 bazel 的规则里写了固定的 PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"

    因为我的 macports 安装在 /opt/local 下面,bazel 这个糟糕的 workground 会导致我的 macports 的 PATH 环境变量被覆盖,需要做一个符号链接修正这个问题:

    $ sudo ln -s /opt/local /opt/homebrew
    
  2. 安装 opensdk,因为 bazel 默认依赖它。

    我安装的是微软预编译的版本:

    $ sudo port install openjdk25-microsoft
    $ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-25-microsoft.jdk/Contents/Home
    

修改 Telegram 编译配置

首先把 Telegram iOS 的源码 clone 回来:

$ git clone --recursive -j8 https://github.com/TelegramMessenger/Telegram-iOS.git

编辑源码根目录下的 versions.json ,把 bazel 的版本号调整到最新的版本,其他可以不管:

{
    "app": "12.5",
    "xcode": "26.2",
    "bazel": "8.6.0:948a7186641f601c83344b63b88bc6943025585f2bb7f407e19cface5fe4aa3b",
    "macos": "26"
}

再调整编译配置文件 build-system/template_minimal_development_configuration.json

其中的 bundle_idteam_id 字段根据你的实际情况进行调整,如果没有开发者账号只能在模拟器上运行,功能上没有区别。

api_idapi_hash 字段的值我是从 build-system/appstore-configuration.json 复制过来的。

其他字段不需要调整,保持默认就行。

{
	"bundle_id": "me.lvv.Telegram",
	"api_id": "8",
	"api_hash": "7245de8e747a0d6fbe11f7cc14fcc0bb",
	"team_id": "J29VN6AP39",
	"app_center_id": "0",
	"is_internal_build": "true",
	"is_appstore_build": "false",
	"appstore_id": "0",
	"app_specific_url_scheme": "tg",
	"premium_iap_product_id": "",
	"enable_siri": false,
	"enable_icloud": false
}

现在可以生成 Xcode 项目文件了:

$ python3 build-system/Make/Make.py \
    --overrideXcodeVersion \
    --cacheDir="$HOME/telegram-bazel-cache" \
    generateProject \
    --configurationPath=build-system/template_minimal_development_configuration.json \
    --xcodeManagedCodesigning --disableProvisioningProfiles

这里需要注意,脚本会先干掉所有正在运行的 Xcode ,如果你有正在打开的 Xcode 项目,需要先保存号项目以避免内容丢失。

脚本运行结束后会自动打开 Telegram 的 Xcode 项目,而且第一次打开需要等待比较久的预编译过程,预编译结束后不出意外的话就可以在模拟器/真机上启动调试了。

Telegram
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

OpenClaw 最小化配置和使用自定义模型