mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
109 lines
3.5 KiB
Markdown
109 lines
3.5 KiB
Markdown
# Telegram iOS Source Code Compilation Guide
|
|
|
|
We welcome all developers to use our API and source code to create applications on our platform.
|
|
There are several things we require from **all developers** for the moment.
|
|
|
|
# Creating your Telegram Application
|
|
|
|
1. [**Obtain your own api_id**](https://core.telegram.org/api/obtaining_api_id) for your application.
|
|
2. Please **do not** use the name Telegram for your app — or make sure your users understand that it is unofficial.
|
|
3. Kindly **do not** use our standard logo (white paper plane in a blue circle) as your app's logo.
|
|
3. Please study our [**security guidelines**](https://core.telegram.org/mtproto/security_guidelines) and take good care of your users' data and privacy.
|
|
4. Please remember to publish **your** code too in order to comply with the licences.
|
|
|
|
# Compilation Guide
|
|
|
|
1. Install Xcode (directly from https://developer.apple.com/download/more or using the App Store).
|
|
2. Clone the project from GitHub:
|
|
|
|
```
|
|
git clone --recursive -j8 https://github.com/TelegramMessenger/Telegram-iOS.git
|
|
```
|
|
|
|
3. Download Bazel 4.0.0
|
|
|
|
```
|
|
mkdir -p $HOME/bazel-dist
|
|
cd $HOME/bazel-dist
|
|
curl -O -L https://github.com/bazelbuild/bazel/releases/download/4.0.0/bazel-4.0.0-darwin-x86_64
|
|
mv bazel-* bazel
|
|
```
|
|
|
|
Verify that it's working
|
|
|
|
```
|
|
chmod +x bazel
|
|
./bazel --version
|
|
```
|
|
|
|
4. Adjust configuration parameters
|
|
|
|
```
|
|
mkdir -p $HOME/telegram-configuration
|
|
cp -R build-system/example-configuration/* $HOME/telegram-configuration/
|
|
```
|
|
|
|
- Modify the values in `variables.bzl`
|
|
- Replace the provisioning profiles in `provisioning` with valid files
|
|
|
|
5. (Optional) Create a build cache directory to speed up rebuilds
|
|
|
|
```
|
|
mkdir -p "$HOME/telegram-bazel-cache"
|
|
```
|
|
|
|
5. Build the app
|
|
|
|
```
|
|
python3 build-system/Make/Make.py \
|
|
--bazel="$HOME/bazel-dist/bazel" \
|
|
--cacheDir="$HOME/telegram-bazel-cache" \
|
|
build \
|
|
--configurationPath="$HOME/telegram-configuration" \
|
|
--buildNumber=100001 \
|
|
--configuration=release_universal
|
|
```
|
|
|
|
6. (Optional) Generate an Xcode project
|
|
|
|
```
|
|
python3 build-system/Make/Make.py \
|
|
--bazel="$HOME/bazel-dist/bazel" \
|
|
--cacheDir="$HOME/telegram-bazel-cache" \
|
|
generateProject \
|
|
--configurationPath="$HOME/telegram-configuration" \
|
|
--disableExtensions
|
|
```
|
|
|
|
It is possible to generate a project that does not require any codesigning certificates to be installed: add `--disableProvisioningProfiles` flag:
|
|
```
|
|
python3 build-system/Make/Make.py \
|
|
--bazel="$HOME/bazel-dist/bazel" \
|
|
--cacheDir="$HOME/telegram-bazel-cache" \
|
|
generateProject \
|
|
--configurationPath="$HOME/telegram-configuration" \
|
|
--disableExtensions \
|
|
--disableProvisioningProfiles
|
|
```
|
|
|
|
|
|
Tip: use `--disableExtensions` when developing to speed up development by not building application extensions and the WatchOS app.
|
|
|
|
|
|
# Tips
|
|
|
|
Bazel is used to build the app. To simplify the development setup a helper script is provided (`build-system/Make/Make.py`). See help:
|
|
|
|
```
|
|
python3 build-system/Make/Make.py --help
|
|
python3 build-system/Make/Make.py build --help
|
|
python3 build-system/Make/Make.py generateProject --help
|
|
```
|
|
|
|
Each release is built using specific Xcode and Bazel versions (see `versions.json`). The helper script checks the versions of installed software and reports an error if they don't match the ones specified in `versions.json`. There are flags that allow to bypass these checks:
|
|
|
|
```
|
|
python3 build-system/Make/Make.py --overrideBazelVersion build ... # Don't check the version of Bazel
|
|
python3 build-system/Make/Make.py --overrideXcodeVersion build ... # Don't check the version of Xcode
|
|
```
|