开发文档

TDLib Python 与 Java 开发指南

从动态库准备到示例运行,了解 TDLib Python 的 tdjson 调用,以及 Java 的 JNI、JSON 构建和依赖库排查。

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

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

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

本页内容
  1. GetTGAPI 阅读提示
  2. TDLib Python 示例
  3. TDLib Java 示例

GetTGAPI 阅读提示

本页介绍 Python 与 Java 的 TDLib 接入方法,涵盖动态库准备、JNI/JSON 构建和示例运行。命令里的 <path to TDLib sources>、<full path to TDLib sources> 和 <VCPKG_DIR> 是原文占位符,执行前要替换为自己的真实路径。

Java 文档保留上游的 JDK >= 1.6 说明,这不是建议你在生产中使用过期 JDK;请结合所选 TDLib 版本的构建生成器和当前受支持的 JDK 验证。动态库架构、JVM 架构及依赖库必须匹配。

拿到 API ID 与 API Hash 后,应在自己应用的配置中填写,不能用 GetTGAPI 授权码替代它们。应用凭证与用户会话的区别见 凭证说明,申请协助见 gettgapi.com。

TDLib Python 示例

运行此示例前,需要先构建 TDLib,并把构建好的 tdjson 共享库复制到该示例目录。

然后可以运行示例:

python tdjson_example.py

所有可用类和方法的说明见 td_json_client 和 td_api 文档。

TDLib Java 示例

运行此示例需要安装 JDK >= 1.6。生成 Javadoc 文档还需要 PHP。

对应操作系统的完整构建说明见 Java 构建说明生成器。

通常构建过程如下。

首先启用 JNI 绑定预编译 TDLib,并安装到本地子目录 td/:

cd <path to TDLib sources>
mkdir jnibuild
cd jnibuild
cmake -DCMAKE_BUILD_TYPE=Release -DTD_ENABLE_JNI=ON -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td ..
cmake --build . --target install

如果在 Windows 上使用 MSVC,为 32 位或 64 位 Java 编译 TDLib,还需要分别向 CMake 添加 -A Win32 或 -A x64 选项。

在 Windows 上,添加参数 -DCMAKE_TOOLCHAIN_FILE=<VCPKG_DIR>/scripts/buildsystems/vcpkg.cmake 以使用 vcpkg 工具链文件。

接着编译示例源码:

cd <path to TDLib sources>/example/java
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DTd_DIR=<full path to TDLib sources>/example/java/td/lib/cmake/Td -DCMAKE_INSTALL_PREFIX:PATH=.. ..
cmake --build . --target install

如果希望构建 JSON 接口的 JsonClient.java 封装,而非原生 JNI 接口,在构建示例时向 CMake 添加 -DTD_JSON_JAVA=ON 选项。

编译得到的 TDLib 共享库和 Java 示例会放在 bin/ 中;Javadoc 文档会放在 docs/ 中。

然后运行 Java 示例:

cd <path to TDLib sources>/example/java/bin
java '-Djava.library.path=.' org/drinkless/tdlib/example/Example

如果使用 -DTD_JSON_JAVA=ON 构建了 JSON 接口示例,则改用命令 java '-Djava.library.path=.' org/drinkless/tdlib/example/JsonExample。

如果 CMake 提示“Could NOT find JNI ...”,需要向 CMake 指定已安装 JDK 的路径,例如 -DJAVA_HOME=/usr/lib/jvm/java-8-oracle/。

如果遇到 java.lang.UnsatisfiedLinkError,并提示“Can't find dependent libraries”,还可能需要把依赖的 OpenSSL 和 zlib 共享库复制到 bin/。

务必确保示例编译所用架构与你的 JVM 一致。

原文许可与归属 · 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.