Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/TelegramMessenger/Telegram-iOS
Telegram-iOS
https://github.com/TelegramMessenger/Telegram-iOS
Last synced: about 1 month ago
JSON representation
Telegram-iOS
- Host: GitHub
- URL: https://github.com/TelegramMessenger/Telegram-iOS
- Owner: TelegramMessenger
- Created: 2018-11-14T18:06:49.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-31T16:24:59.000Z (3 months ago)
- Last Synced: 2024-03-31T17:29:36.763Z (3 months ago)
- Language: Swift
- Size: 708 MB
- Stars: 5,210
- Watchers: 208
- Forks: 1,402
- Open Issues: 459
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
Lists
- awesome-stars - Telegram-iOS - iOS | TelegramMessenger | 3827 | (C)
- awesome-made-by-russians - iOS
- my-awesome-stars - TelegramMessenger/Telegram-iOS - Telegram-iOS (Swift)
- awesome-stars - TelegramMessenger/Telegram-iOS - Telegram-iOS (Swift)
- awesome-stars - TelegramMessenger/Telegram-iOS - Telegram-iOS (C)
- awesome-stars - TelegramMessenger/Telegram-iOS - Telegram-iOS (Swift)
- awesome-from-stars - TelegramMessenger/Telegram-iOS - iOS (HarmonyOS / Windows Manager)
- awesome-stars - Telegram-iOS - iOS | TelegramMessenger | 5441 | (Swift)
- fucking-open-source-ios-apps - Telegram
- awesome-stars - TelegramMessenger/Telegram-iOS - Telegram-iOS (Swift)
README
# 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.# Quick Compilation Guide
## Get the Code
```
git clone --recursive -j8 https://github.com/TelegramMessenger/Telegram-iOS.git
```## Setup Xcode
Install Xcode (directly from https://developer.apple.com/download/applications or using the App Store).
## Adjust Configuration
1. Generate a random identifier:
```
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
```