版权声明
本文内容均为搬运,目的只为更方便的学习Telegram编码思维。
part-1-cover.png
Telegram是市面上最受欢迎的即时通讯之一。截至今年4月,其MAU(月活跃用户人数)已超过4亿。考虑到某些国家/地区不提供该服务,这显然是一个了不起的成就。
大多数Telegram客户端应用程序源码都是开源的,足以证明其安全性。Telegram官方还启用了一个新流程以允许其他人验证iOS和Android源代码是否与AppStore和Google Play上使用的版本相同。此过程是值得赞赏的举动,有助于缓解过去几年对其缓慢发布习惯的批评。
Telegram-iOS该代码库展示了其解决其他iOS工程师可能遇到的许多实际工程问题的解决方案,例如可靠的网络,安全存储,响应事件,多媒体播放,交互式UX,复杂列表UI,对系统控制器的自定义等。
源码概述
Telegram-iOS通过200多个子模块和200万行代码来构建源代码。我将这些模块大致分为五类:
-
App
,支持主要应用功能的模块,例如基础工具,UI,网络等。 -
VoIP
,语音通话功能(已于2017年3月发布)。 -
Watch
,Watch应用程序。 -
TON
,与新区块链平台的实验性集成。 -
3rd-party
,项目所依赖的其他开源库。
以下是每个类别的LOC(项目度量代码行统计方法)统计信息:
part-1-list.png
Telegram-iOS是一个混合语言项目。通过查看App
文件分类,Swift
占将近70%的代码,Objective-C/C++
占24%的代码。Buck用作构建工具。看上去正在移向Bazel。对于不熟悉iOS构建工具的读者,普通的Xcode项目文件格式(如.xcodeproj
和.xcworkspace
)足以用于较小的项目。从长远来看,由于文件以XML表示并通过Xcode UI指令进行编辑,将变得难以维护。当Xcode文件内部存在合并冲突时,通常这不是一种令人愉快的体验,而且在代码检查期间发现问题也十分困难。
Buck是Facebook开发的构建系统。它鼓励由代码和资源组成的小模块,从而产生干净的构建配置文件和更快的并行构建。对于一个典型的模块,它只具有一个BUCK
文件来描述构建规则,该Sources
文件以十几行代码描述,一个用于代码文件的文件Resouces
夹,以及一个存放图片的可选文件夹。该命令buck project
可以生成Xcode项目文件,供工程师在Xcode中开发,并且这些文件在Git中被显式忽略。您可以在Makefile
文件中找到更多详细信息。
子模块(Submodules)
Telegram-iOS总共有229个子模块,其中136个模块由不超过两个源文件和几百行组成。
总结
代码统计信息应该对Telegram-iOS项目有一个简短的印象。下一篇文章将讨论其基础模块。
网友评论