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, 代码签名, 即时通讯, 安全指南, 开发工具, 开源项目, 源码, 移动应用开发, 第三方客户端, 编译指南, 网络安全, 逆向工具, 隐私保护