TelegramMessenger/Telegram-iOS
GitHub: TelegramMessenger/Telegram-iOS
Telegram iOS 客户端的官方源代码库,提供了基于 Xcode 和 Bazel 的完整编译构建指南。
Stars: 8413 | Forks: 2543
# Telegram iOS 源代码编译指南
我们欢迎所有开发者使用我们的 API 和源代码在我们的平台上创建应用程序。
目前,我们需要**所有开发者**注意以下几点。
# 创建您的 Telegram 应用程序
1. [**获取您自己的 api_id**](https://core.telegram.org/api/obtaining_api_id) 用于您的应用程序。
2. 请**不要**在您的应用中使用 Telegram 这个名称——或者确保您的用户明白这是非官方的。
3. 请**不要**将我们的标准徽标(蓝色圆圈中的白色纸飞机)用作您应用的徽标。
4. 请研究我们的 [**安全指南**](https://core.telegram.org/mtproto/security_guidelines) 并妥善保护您用户的数据和隐私。
5. 请记得也发布**您的**代码,以遵守许可证。
# 快速编译指南
## 获取代码
```
git clone --recursive -j8 https://github.com/TelegramMessenger/Telegram-iOS.git
```
## 设置 Xcode
安装 Xcode(直接从 https://developer.apple.com/download/applications 安装或使用 App Store)。
## 调整配置
1. 生成一个随机标识符:
```
openssl rand -hex 8
```
2. 创建一个新的 Xcode 项目。使用 `Telegram` 作为 Product Name(产品名称)。使用 `org.{步骤 1 中的标识符}` 作为 Organization Identifier(组织标识符)。
3. 打开 `Keychain Access`(钥匙串访问)并导航到 `Certificates`(证书)。找到 `Apple Development: your@email.address (XXXXXXXXXX)` 并双击该证书。在 `Details`(详细信息)下,找到 `Organizational Unit`(组织单位)。这就是 Team ID。
4. 编辑 `build-system/template_minimal_development_configuration.json`。使用前面步骤中的数据。
## 生成 Xcode 项目
```
python3 build-system/Make/Make.py \
--cacheDir="$HOME/telegram-bazel-cache" \
generateProject \
--configurationPath=build-system/template_minimal_development_configuration.json \
--xcodeManagedCodesigning
```
# 高级编译指南
## X "Xcode": "Xcode",
1. 复制并编辑 `build-system/appstore-configuration.json`。
2. 复制 `build-system/fake-codesigning`。创建并下载配置描述文件,使用 `profiles` 文件夹作为授权 的参考。
3. 生成一个 Xcode 项目:
```
python3 build-system/Make/Make.py \
--cacheDir="$HOME/telegram-bazel-cache" \
generateProject \
--configurationPath=configuration_from_step_1.json \
--codesigningInformationPath=directory_from_step_2
```
## "IPA": "IPA",
1. 重复上一节的步骤。使用发布 配置描述文件。
2. 运行:
```
python3 build-system/Make/Make.py \
--cacheDir="$HOME/telegram-bazel-cache" \
build \
--configurationPath=...see previous section... \
--codesigningInformationPath=...see previous section... \
--buildNumber=100001 \
--configuration=release_arm64
```
# 常见问题
## Xcode 卡在 "build-request.json not updated yet"
有时,您可能会在构建日志中看到以下消息:
```
"/Users/xxx/Library/Developer/Xcode/DerivedData/Telegram-xxx/Build/Intermediates.noindex/XCBuildData/xxx.xcbuilddata/build-request.json" not updated yet, waiting...
```
如果发生这种情况,只需取消正在进行的构建并重新开始一个新的构建。
## "Telegram_xcodeproj: no such package": "Telegram_xcodeproj: no such package"
系统重启后,自动生成的 Xcode 项目可能会遇到构建失败并伴随此错误:
```
ERROR: Skipping '@rules_xcodeproj_generated//generator/Telegram/Telegram_xcodeproj:Telegram_xcodeproj': no such package '@rules_xcodeproj_generated//generator/Telegram/Telegram_xcodeproj': BUILD file not found in directory 'generator/Telegram/Telegram_xcodeproj' of external repository @rules_xcodeproj_generated. Add a BUILD file to a directory to mark it as a package.
```
如果您遇到此问题,请重新运行 README 中的项目生成步骤。
# 提示
## 仅限模拟器的构建不需要代码签名
添加 `--disableProvisioningProfiles`:
```
python3 build-system/Make/Make.py \
--cacheDir="$HOME/telegram-bazel-cache" \
generateProject \
--configurationPath=path-to-configuration.json \
--codesigningInformationPath=path-to-provisioning-data \
--disableProvisioningProfiles
```
## 版本
每个版本都是使用特定的 Xcode 版本构建的(参见 `versions.json`)。辅助脚本会检查已安装软件的版本,如果它们与 `versions.json` 中指定的版本不匹配,则会报告错误。可以绕过这些检查:
```
python3 build-system/Make/Make.py --overrideXcodeVersion build ... # Don't check the version of Xcode
```
标签:API开发, Apple开发, App构建, Bazel, CVE监控, DNS解析, iOS, MTProto, Objective-C, SOC Prime, Swift, Telegram, Xcode, 代码签名, 即时通讯, 安全指南, 开发工具, 开源项目, 源码, 移动应用开发, 第三方客户端, 编译指南, 网络安全, 逆向工具, 隐私保护