版本与方法说明
分析基线
| 项目 | 值 |
|---|---|
| Telegram Desktop | 7.0.6 |
| AppVersion | 7000006 |
| 上游 tag | v7.0.6 |
| 主源码目录 | Telegram/SourceFiles |
| C/C++ 文件规模 | 约 2,800 个文件、106 万行(本地快照统计) |
| 站点框架 | VitePress 1.6.4 |
数字只用于帮助读者判断规模,不应被理解为稳定 API。文档没有把生成物、资源文件、第三方库和上游子模块全部计入“主源码行数”。
拆解方法
本教程采用“行为切片”而非“目录切片”:先选择启动、发送、收更新、打开会话、下载、播放等真实行为,再沿调用链识别稳定对象和边界。每条链路至少交叉检查以下证据:
- 头文件中的所有权与公开接口;
- 构造/销毁路径中的生命周期;
- 请求成功、失败、取消与重试分支;
- 服务端 Updates 回流后的数据写入;
- rpl producer 到 UI consumer 的连接;
- 本地存储或缓存的恢复路径。
取舍与限制
- 文档追求主干完整,不逐一解释上千个产品功能;Stories、Business、Stars、Passport、Instant View 等功能通过通用架构定位。
- MTProto 密码学原语不是本教程重点;这里解释客户端请求、连接、会话和更新编排,不替代正式协议文档或安全审计。
lib_rpl、lib_base、lib_ui等子模块的内部实现只在理解主程序调用方式所需时出现。- 短代码片段会做省略和改名提示;完整源码与许可证以 Telegram Desktop 上游仓库为准。
链接策略
所有上游源码链接固定到 tag;站内链接在 CI 中做存在性检查,VitePress 构建还会检查 Markdown 解析和静态站点生成。若上游 tag 页面无法在某地区访问,仍可用正文里的相对路径在本地源码中搜索。