TDLib

TDLib Android 构建指南

准备 SDK、NDK 与 OpenSSL,选择 Java 或 JSON 接口,按 ABI 构建 TDLib Android 库。

GetTGAPI 编辑团队更新于
TDLib 文档核对日期

来源版本 a94b83d67ab4 · TDLib contributors · BSL-1.0

依据官方资料整理,由 GetTGAPI 独立维护。 文档目录与术语表 →

本页内容
  1. 开始之前
  2. TDLib Android 示例
  3. 为 Android 构建 TDLib

开始之前

SDK、NDK、最低 API 级别和 ABI 是不同设置。下面保留该提交的构建参数;原文默认 OpenSSL 1.1.1 不代表当前生产安全建议,实际依赖版本应经过维护与安全评估。

TDLib Android 示例

这是为 Android 构建 TDLib 的示例。 你需要 Linux、macOS 或 Windows 上的 Bash shell,以及预先安装的常用工具、C++ 编译器、JDK、PHP、perl 和 gperf。

为 Android 构建 TDLib

  • 运行脚本 ./check-environment.sh,检查所需 Unix 工具和 Java 工具是否齐全。如果脚本报错退出,请安装缺失的工具。
  • 运行脚本 ./fetch-sdk.sh,将 Android SDK 下载到本地目录。
  • 运行脚本 ./build-openssl.sh,下载并为 Android 构建 OpenSSL。
  • 运行脚本 ./build-tdlib.sh,为 Android 构建 TDLib。
  • 构建好的库位于 tdlib/libs 目录。如果构建了 Java 接口,对应 Java 代码位于 tdlib/java 目录,独立的 Java 文档位于 tdlib/javadoc 目录。也可以使用包含上述全部内容的 tdlib/tdlib.zip 和 tdlib/tdlib-debug.zip 压缩包。

如果已经安装 Android SDK 和 NDK,可以跳过第二步,并将现有 Android SDK 根目录和 Android NDK 版本作为后续脚本的第一、第二个参数。确保 SDK 包含 android-34 平台和 CMake 3.22.1。

如果已有预编译的 OpenSSL,可以跳过第三步,并将其路径作为脚本 ./build-tdlib.sh 的第三个参数。

如果要更新到较新的 TDLib 版本,只需运行脚本 ./build-tdlib.sh。

可以通过脚本 ./build-openssl.sh 的第四个参数指定其他 OpenSSL 版本。默认使用 OpenSSL 1.1.1,原文给出的原因是其二进制体积比更新的 OpenSSL 版本小得多,性能也更好。

向脚本 ./build-openssl.sh 传入非空字符串作为第五个参数,可以构建 OpenSSL 共享库,而非静态库。如果应用还有大量使用 OpenSSL 的代码,并希望共用同一共享库,这样可以减小应用总体积。

将 "c++_shared" 作为脚本 ./build-tdlib.sh 的第四个参数,可以让 TDLib 链接共享的 C++ 标准库。如果应用还有大量其他 C++ 代码,并希望共用同一共享库,这样可以减小应用总体积。

将 "JSON" 作为脚本 ./build-tdlib.sh 的第五个参数,可以构建 JSON 接口,而非 Java 接口。

将 "JSONJava" 作为脚本 ./build-tdlib.sh 的第五个参数,还可以构建能从 Java 调用的 JSON 接口。

通过脚本 ./build-tdlib.sh 的第六个参数,可以指定最低 Android API 级别。指定较新的版本可以减小应用总体积。

通过脚本 ./build-tdlib.sh 的第七个参数,可以传入以空格分隔的 ABI 列表,仅为这些 ABI 构建 TDLib。

任何脚本参数都可以传入空字符串以使用默认值。例如,使用命令 ./build-tdlib.sh '' '' '' '' 'JSON' 可以构建 JSON 接口,其他参数使用默认值。

也可以通过 Docker 为 Android 构建 TDLib。使用 docker build --output tdlib . 构建 GitHub 上最新的 TDLib 提交,或使用 docker build --build-arg COMMIT_HASH=<commit-hash> --output tdlib . 构建指定提交。输出压缩包会放入指定的 "tdlib" 目录。还可以向提供的 Dockerfile 传入构建参数 "TDLIB_INTERFACE"、"ANDROID_NDK_VERSION"、"OPENSSL_VERSION"、"BUILD_SHARED_OPENSSL_LIBS" 和 "ANDROID_STL"。例如,docker build --build-arg TDLIB_INTERFACE=JSON --output tdlib . 会构建最新 TDLib 的 JSON 接口。

继续阅读 TDLib 总览与构建。需要应用凭证时,可参考 API ID 与 Hash 申请流程;申请遇到 ERROR,可通过 GetTGAPI 客服 沟通。

原文许可与归属 · BSL-1.0

TDLib contributors · 完整许可文件

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.