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:0.1.1

build.gradle.kts v0.1.1
// settings.gradle.kts
repositories { mavenCentral() }

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

$ ./gradlew :app:assembleDebug
BUILD SUCCESSFUL
TDLib Core v1.8.x Release v0.1.1 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, and x86 packaged into a single core AAR. Zero NDK toolchain, zero .so file relocation.

arm64-v8a armeabi-v7a x86_64 x86
all 4 ABIs verified by ELF header · build.gradle.kts only
6h

Upstream watchdog

Cron poller inspects tdlib/td master every 6 hours. Version change triggers auto-build matrix, PR with checksums, and publish.

self-updating · deterministic GitHub runner builds
150

Lines in the Kotlin wrapper

A thin Coroutines and Flow bridge providing suspend fun send() and Flow<Update>. Zero application logic, zero opinionated auth, zero bloat.

ktx module · Apache-2.0 · minSdk 26
Ship it

One dependency. Four ABIs. Zero NDK.