已經(jīng)有很長(zhǎng)一段時(shí)間沒(méi)有跟蹤Telegram-iOS的代碼了,在國(guó)內(nèi)也沒(méi)怎么用Telegram。7.6版本應(yīng)該是支持群視頻通話功能的吧,沒(méi)有測(cè)試,大家伙兒自己試試吧。先上一個(gè)順利跑起來(lái)后的屏幕截圖

總的來(lái)說(shuō),Telegram開(kāi)發(fā)團(tuán)隊(duì)從Buck編譯更改為Bazel后,似乎編譯的坑變得少了很多。編譯這個(gè)7.6版本很快就跑起來(lái)了。下面是具體步驟,在官方給出的編譯步驟基礎(chǔ)上有所改動(dòng)。
Compilation Guide
特別提醒,為了無(wú)腦使用下面的終端命令,不要自己在桌面創(chuàng)建目錄去拉代碼,打開(kāi)終端直接執(zhí)行命令,直接在默認(rèn)的用戶目錄下操作就好了
$HOME是當(dāng)前用戶主目錄,它有個(gè)別名 ~
- Install Xcode (directly from https://developer.apple.com/download/more or using the App Store).
編譯此版本,特地把Xcode版本從12.2升級(jí)到了12.4(不要問(wèn)為啥,問(wèn)就是Telegram讓升級(jí)的) - Clone the project from GitHub:
git clone --recursive https://github.com/TelegramMessenger/telegram-ios.git
沒(méi)有使用官方給的git命令,不知道為啥,那個(gè)地址下載下來(lái)的工程大概率Submodule會(huì)下載失敗
cd telegram-ios
進(jìn)入工程目錄
git checkout release-7.6
git submodule update
切換到需要編譯的版本,本次編譯7.6版本
- Download
Bazel 4.0.0(下面這一堆都是在配置本地Bazel環(huán)境)
~ 目錄下執(zhí)行
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
bazel-dist 目錄下執(zhí)行
chmod +x bazel
./bazel --version
- Adjust configuration parameters
~ 目錄下執(zhí)行
mkdir -p $HOME/telegram-configuration
telegram-ios 目錄下執(zhí)行
cp -R build-system/example-configuration/* $HOME/telegram-configuration/
- Modify the values in
variables.bzl - Replace the provisioning profiles in provisioning with valid files
- (
Optional) Create a build cache directory to speed up rebuilds
~ 目錄下執(zhí)行
mkdir -p "$HOME/telegram-bazel-cache"
- 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
- (
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:
在模擬器跑代碼,telegram-ios目錄執(zhí)行下面的命令就可以了
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.
補(bǔ)充說(shuō)明
列舉一下遇到的問(wèn)題
1.執(zhí)行git clone --recursive https://github.com/TelegramMessenger/telegram-ios.git之后,Submodule下載失敗,自動(dòng)重試之后還是失敗

解決方法
在telegram-ios目錄下執(zhí)行
git checkout release-7.6
git submodule update
如果還是有提示失敗,繼續(xù)執(zhí)行git submodule update
直到所有Submodule成功checkout到對(duì)應(yīng)節(jié)點(diǎn)

2.編譯工程的時(shí)候,報(bào)錯(cuò)rnnoise.h頭文件找不到

解決方法
在telegram-ios目錄下執(zhí)行
git submodule update
3.編譯工程的時(shí)候,報(bào)錯(cuò)rlottie.h頭文件找不到

這個(gè)問(wèn)題應(yīng)該是
rlottie這個(gè)三方庫(kù)沒(méi)有成功拉下來(lái),看下路徑是不是rlottie文件夾是空的
解決方法
在submodules/rlottie/目錄下刪除rlottie空文件夾,重新clone

在telegram-ios目錄下執(zhí)行git submodule update(非必需)
4.Telegram不給看有用的控制臺(tái)日志

解決方法
Telegram可以寫代碼,我可以改代碼呀
在AppDelegate.swift里
搜索
LoggingSettings.defaultSettings = LoggingSettings(logToFile: true, logToConsole: false, redactSensitiveData: true)
修改成
LoggingSettings.defaultSettings = LoggingSettings(logToFile: true, logToConsole: true, redactSensitiveData: true)
重新跑一下模擬器,啥協(xié)議內(nèi)容你都能看咯

5.莫名其妙不能編譯了

看上去是路徑問(wèn)題,然而不知道在哪里修改
解決方法(玄學(xué))
重啟MAC