Files

2.6 KiB

Ghostgram iOS Compilation Guide

Important

: Notifications, calls, and some other cloud-dependent features may not be fully implemented in this fork's development builds. For daily use, it is recommended to keep the official Telegram App installed.

🛠 Prerequisites

  • macOS: Latest version recommended.
  • Xcode: See versions.json for the exact required version.
  • Bazel: Managed via the build system.
  • Python: 3.x

🚀 Quick Start

1. Obtain Telegram API Credentials

  1. Go to my.telegram.org.
  2. Log in and create a new application to get your api_id and api_hash.

2. Get the Source Code

git clone --recursive -j8 https://github.com/TelegramMessenger/Telegram-iOS.git
# Note: In this fork, ensure you have all submodules

3. Setup Xcode Configuration

  1. Generate a random 8-character hex identifier:
    openssl rand -hex 8
    
  2. Create a dummy Xcode project named Telegram with organization identifier org.<YOUR_HEX_ID>.
  3. Locate your Team ID in Keychain Access (Organizational Unit of your Apple Development certificate).
  4. Edit build-system/template_minimal_development_configuration.json with your credentials and Team ID.

4. Generate Xcode Project

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

🏗 Advanced Build Options

Building an IPA (Release)

  1. Configure build-system/appstore-configuration.json.
  2. Ensure you have the correct provisioning profiles.
  3. Run:
python3 build-system/Make/Make.py \
    --cacheDir="$HOME/telegram-bazel-cache" \
    build \
    --configurationPath=your_config.json \
    --codesigningInformationPath=your_profiles_dir \
    --buildNumber=100001 \
    --configuration=release_arm64

Simulator Build (No Codesigning)

Add --disableProvisioningProfiles to the generation command to build for the simulator without needing a development certificate.


FAQ & Troubleshooting

"build-request.json not updated yet"

If Xcode hangs with this message, cancel the build and restart it.

"no such package @rules_xcodeproj_generated"

This usually happens after a system restart or clearing Bazel cache. Re-run the generateProject command.

Overriding Xcode Version

If you have a newer/older Xcode than what is specified in versions.json, use:

python3 build-system/Make/Make.py --overrideXcodeVersion generateProject ...

Report all issues/bugs on Telegram @ceopoco