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.
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
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.
| ABI | Devices | Status |
|---|---|---|
| arm64-v8a | All modern Android (2016+) | built |
| armeabi-v7a | 32-bit ARM devices | built |
| x86_64 | Android emulators (recommended for CI) | built |
| x86 | Legacy emulators | built |
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.
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.
Concrete. Not a pitch.
ABIs, one dependency
arm64-v8a, armeabi-v7a, x86_64, and x86 packaged into a single core AAR. Zero NDK toolchain, zero .so file relocation.
Upstream watchdog
Cron poller inspects tdlib/td master every 6 hours. Version change triggers auto-build matrix, PR with checksums, and publish.
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.