Telegram tdlib客户端Java本地编译打包
最近在做Telegram相关的需求,需要收发Telegram的信息,所以需要做对接。本来想在网上找一个现成的改一下,奈何本版太老,所以只能自己打包最新的。
一、tdlib是什么?
TDLib(Telegram 数据库库)是一个用于构建 Telegram 客户端的跨平台库。它几乎可以从任何编程语言轻松使用。
TDLib有很多优点。值得注意的是:
- TDLib跨平台:可在 Android、iOS、Windows、macOS、Linux、FreeBSD、OpenBSD、NetBSD、illumos、Windows Phone、WebAssembly、watchOS、tvOS、visionOS、Tizen、Cygwin 上使用。它还应该在其他 *nix 系统上运行,无论是否付出最小的努力。
- 多语言:可以轻松地与任何能够执行 C 函数的编程语言一起使用。此外,它已经具有本机 Java(使用 )绑定和 .NET(使用 和 )绑定。TDLibJNIC++/CLIC++/CX
- 易于使用:负责所有网络实施细节、加密和本地数据存储。
高性能:在 Telegram Bot API 中,每个实例同时处理超过 25000 个活跃的机器人。
有据可查:所有 API 方法和公共接口都有完整文档。 - 一致:保证所有更新都按正确的顺序交付。
- 可靠:在缓慢且不可靠的互联网连接上保持稳定。
- 安全:所有本地数据都使用用户提供的加密密钥进行加密。
- 异步:请求不要互相阻止或其他任何内容,响应在可用时发送。
二、打包过程
1. 安装C++环境
下载Visual Studio Installer,一直进安装,需要安装注意的如图所示:
注明:语言包必须勾选英文


安装完成就可以了
2. 开始编译
我现在项目存放目录是F:\idea\telegram-diy\tdlib-code
进入F:\idea\telegram-diy\tdlib-code下,执行git克隆
git clone https://github.com/tdlib/td.git
这个时候在F:\idea\telegram-diy\tdlib-code下面就会出现一个td文件

进入td文件夹
执行以下命令
git checkout v1.6.0
git clone https://github.com/Microsoft/vcpkg.git
执行完成会出现vcpkg

进入vcpkg文件夹
执行以下命令
./bootstrap-vcpkg.bat
./vcpkg.exe install openssl:x64-windows zlib:x64-windows
安装成功,还需要安装一个gperf。
先安装https://www.msys2.org/,按照官方下载安装,执行到第5步即可。我安装在D:\zj\gperf目录下。

然后在打开的命令提示符执行如下命令
pacman -S mingw-w64-x86_64-gperf
安装成功,就会在msys2安装目录下的D:\zj\gperf\mingw64\bin下会有gperf.exe表示成功

回到td目录中

在F:\idea\telegram-diy\tdlib-code\td中创建build打包目录
进入build目录,打开命令提示符执行如下命令
cmake -A x64 -DCMAKE_INSTALL_PREFIX:PATH=../example/java/td -DTD_ENABLE_JNI=ON -DCMAKE_TOOLCHAIN_FILE:FILEPATH=../vcpkg/scripts/buildsystems/vcpkg.cmake -DGPERF_EXECUTABLE=D:\zj\gperf\mingw64\bin\gperf.exe ..
注意:最后的DGPERF_EXECUTABLE指向的D:\zj\gperf\mingw64\bin\gperf.exe就是你刚刚下载安装的gperf.exe。
执行成功继续在build中执行命令
cmake --build . --target install --config Release
初始化成功
继续下一步
回到td目录,进入example目录进入java目录,创建一个build文件夹。

执行以下命令
cmake -A x64 -DCMAKE_INSTALL_PREFIX=F:/idea/telegram-diy/tdlib-code/td/example/java/org/drinkless/tdlib -DCMAKE_TOOLCHAIN_FILE=F:/idea/telegram-diy/tdlib-code/td/vcpkg/scripts/buildsystems/vcpkg.cmake -DTd_DIR=F:/idea/telegram-diy/tdlib-code/td/example/java/td/lib/cmake/Td ..
注意看我命令里面指向的文件,你自己找到并且改成你们自己的路径
编译成功然后执行以下命令
cmake --build . --target install --config Release
编译成功
如何判断是否成功
来到我的编译目录
F:\idea\telegram-diy\tdlib-code\td\example\java\org\drinkless\tdlib\bin
实际在你克隆的目录下的example\java\org\drinkless\tdlib\bin

其他的Dll在如下目录
F:\idea\telegram-diy\tdlib-code\td\vcpkg\installed\x64-windows\bin

至此Telegram tdlib客户端Java版本编译成功。
