Skip to content

Manual1164/Telegram-iOS

 
 

Repository files navigation

Telegram iOS Source Code Compilation Guide

We openssl rand -hex 8

2. Create a new Xcode project. Use `Telegram` as the Product Name. Use `org.{identifier from step 1}` as the Organization Identifier.
3. Open `Keychain Access` and navigate to `Certificates`. Locate `Apple Development: [email protected] (XXXXXXXXXX)` and double tap the certificate. Under `Details`, locate `Organizational Unit`. This is the Team ID.
4. Edit `build-system/template_minimal_development_configuration.json`. Use data from the previous steps.

## Generate an Xcode project

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


# Advanced Compilation Guide

## Xcode

1. Copy and edit `build-system/appstore-configuration.json`.
2. Copy `build-system/fake-codesigning`. Create and download provisioning profiles, using the `profiles` folder as a reference for the entitlements.
3. Generate an Xcode project:

python3 build-system/Make/Make.py
--cacheDir="$HOME/telegram-bazel-cache"
generateProject
--configurationPath=configuration_from_step_1.json
--codesigningInformationPath=directory_from_step_2


## IPA

1. Repeat the steps from the previous section. Use distribution provisioning profiles.
2. Run:

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


# FAQ

## Xcode is stuck at "build-request.json not updated yet"

Occasionally, you might observe the following message in your build log:

"/Users/xxx/Library/Developer/Xcode/DerivedData/Telegram-xxx/Build/Intermediates.noindex/XCBuildData/xxx.xcbuilddata/build-request.json" not updated yet, waiting...


Should this occur, simply cancel the ongoing build and initiate a new one.

## Telegram_xcodeproj: no such package 

Following a system restart, the auto-generated Xcode project might encounter a build failure accompanied by this error:

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.


If you encounter this issue, re-run the project generation steps in the README.


# Tips

## Codesigning is not required for simulator-only builds

Add `--disableProvisioningProfiles`:

python3 build-system/Make/Make.py
--cacheDir="$HOME/telegram-bazel-cache"
generateProject
--configurationPath=path-to-configuration.json
--codesigningInformationPath=path-to-provisioning-data
--disableProvisioningProfiles


## Versions

Each release is built using a specific Xcode version (see `versions.json`). The helper script checks the versions of the installed software and reports an error if they don't match the ones specified in `versions.json`. It is possible to bypass these checks:

python3 build-system/Make/Make.py --overrideXcodeVersion build ... # Don't check the version of Xcode

About

Telegram-iOS

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 44.5%
  • Swift 42.2%
  • Objective-C 5.8%
  • Assembly 3.3%
  • C++ 1.8%
  • Objective-C++ 0.8%
  • Other 1.6%