TDLib for Android · Prebuilt

Precompiled TDLib for Android.
Zero NDK. Zero source compile.

The only community-maintained, auto-updated TDLib distribution for Android. All 4 ABIs built by CI — arm64-v8a, armeabi-v7a, x86_64, x86 — shipped as AARs. Drop one Gradle line into any Telegram client, bot UI, or MTProto app.

install · io.github.tdlib-android:core:1.8.64

build.gradle.kts v1.8.64
// settings.gradle.kts
repositories { mavenCentral() }

// app/build.gradle.kts
implementation("io.github.tdlib-android:core:1.8.64")
implementation("io.github.tdlib-android:ktx:1.8.64")

$ ./gradlew :app:assembleDebug
✓ BUILD SUCCESSFUL in 3s
TDLib 1.8.64 ABIs 4 / 4 Tested Realme GT 7 · Android 16 License BSL-1.0 / Apache-2.0 Builds 100% CI
Coverage

Every device. Every emulator. One AAR.

Four ABIs built in parallel on GitHub runners with pinned NDK 27.2.12479018. Fail-fast — a drop in any ABI blocks the release, never a partial set.

ABIDevicesStatus
arm64-v8aAll modern Android (2016+)✓ built
armeabi-v7a32-bit ARM devices✓ built
x86_64Android emulators (recommended for CI)✓ built
x86Legacy emulators✓ built
Why this exists

Every other option is dead, frozen, or a nightmare to build

  • up9cloud/android-libtdjson — frozen at 1.8.52, needs a GitHub token, raw .so only
  • TGX-Android/tdlib — explicitly not for external use
  • tdlibx/td-ktx — archived 2024, dead
  • Build it yourself — on low-RAM hardware the NDK C++ compile OOMs, crashes, and takes hours
  • tdlib-android — the heavy lifting moved to the cloud. CI compiles all 4 ABIs, wraps them in AARs, releases them automatically.
Automation

Self-updating. Zero-touch. One review.

The upstream watchdog polls TDLib every 6 hours. A version change triggers the whole pipeline. You review one PR, merge, and it publishes.

01 / cron
poll tdlib/td VERSION
GitHub API every 6h; also hashes the TL schema for silent API changes
02 / build
Docker matrix · 4 ABIs
Official TDLib Dockerfile, pinned NDK r27c, 10 GB swap, 3× retry
03 / gate
verify-abi-count · readelf
All 4 ABIs present, validated by ELF header — never file size
04 / review
human PR with diff + checksums
You check the TdApi.java diff for breaking changes. One merge.
05 / publish
Maven Central + GitHub Release
Signed AARs + checksums; post-publish smoke test verifies the live artifact
The receipts

Concrete. Not a pitch.

4

ABIs, one dependency

arm64-v8a, armeabi-v7a, x86_64, x86 in a single prebuilt core AAR — zero .so relocation.

all 4 verified · build.gradle.kts only
6h

Upstream watchdog

Cron polls TDLib master. New version = auto-triggered rebuild, PR, and publish. You're never behind.

self-updating · one merge per bump
150

Lines in the Kotlin wrapper

A thin Coroutines/Flow bridge — suspend fun send() + Flow<Update>. No opinion on your auth or app structure.

ktx module · Apache-2.0
Ship it

One dependency. Four ABIs. Zero NDK.