Io.github.tdlib-android : core

TDLib, precompiled.
All 4 ABIs. Zero NDK.

Telegram Database Library as signed AARs, built and verified entirely in CI. Drop a Gradle dependency in and ship — no local compilation, no 16KB-page surprises.

app/build.gradle.kts
// two lines and you have Telegram's core
dependencies {
  implementation("io.github.tdlib-android:core:0.1.1")
  implementation("io.github.tdlib-android:ktx:0.1.1")
}
usage
val client = TdClient(filesDir = context.filesDir
  .absolutePath + "/tdlib")
client.init()

CoroutineScope(Dispatchers.IO).launch {
  client.updates.collect { /* handle UpdateNewMessage */ }
}
4ABIs, always — arm64·arm32·x86_64·x86
16KBpage aligned, Android 15 ready
API 26minSdk · target 35
6hupstream poll cadence in CI
readelf -h verify✳ELF header gate✳fail-fast matrix✳checksums in PR body✳human-reviewed merge✳signed AARs✳ readelf -h verify✳ELF header gate✳fail-fast matrix✳checksums in PR body✳human-reviewed merge✳signed AARs✳

The pipeline is the product.

Nothing ships from a laptop. Every release passes through the same four gates, automatically, before a human ever clicks merge.

cron · 6h
Upstream poll

A scheduled workflow watches TDLib master every 6 hours and triggers on change.

docker · 4x
Matrix build

All 4 native architectures compile in parallel with a pinned NDK r27c.

gate
Binary verification

ELF headers are validated with readelf -h, never by file size. Partial ABI sets are rejected.

PR → merge
Human review, then publish

An automated PR carries the full diff plus SHA-256 checksums. Merging publishes signed AARs straight to Maven Central.

What's in the box

:core

tdjson + TdApi, packaged

Four ABIs of libtdjson.so with TdApi.java, Client.java and R8 consumer rules shipped inside the AAR itself.

:ktx

Coroutines wrapper

Updates as Flow<TdApi.Update>. Thin bridge, ~150 lines, no app logic.

ci

Upstream auto-update

Version bumps land as review-ready PRs with diff and checksums. You never chase TDLib releases.

compat

Android 15 ready

16KB page alignment verified per-build, forward compatible with target SDK 35.

:sample

Minimal working example

Clone, open, run. The shortest path from zero to a connected TDLib client.

Why not build it yourself?

Compiling TDLib once takes an hour of NDK setup and 4 toolchains. This repo exists so you never do.

tdlib-androidDIY compileSelf-hosted CI
All 4 ABIs✓ every releasemanual per-arch✓
Local NDK neededneveryes, 4 toolchainsdocker only
16KB page alignmentverified in CIyour jobyour job
Upstream trackingautomatic, 6hmanualmanual
Binary verificationreadelf gate——
DistributionMaven Centralmanualmanual

Stop compiling Telegram. Start using it.

Current release 0.1.1 (TDLib 1.8.x), signed and checksummed.