Ease docs/Android
Android SDK
Maven Central, Kotlin coroutines, and libsignal native libraries bundled per ABI inside the AAR. Android 8.0+ (API 26+).
The Ease Android SDK is a Kotlin library that gives an Android app the same Ease surface as every other platform: tenant bootstrap, authentication, the contact graph, and encrypted chat. It is UI-agnostic: you call it from a view model and render however your app already renders. Calls are coroutine based, and libsignal ships inside the package, so there is no native toolchain to set up on your end.
Install
The SDK is on Maven Central as com.securegroupchat:ease-sdk. With mavenCentral() in your repositories, one dependency line is the whole setup:
dependencies {
implementation("com.securegroupchat:ease-sdk:0.5.1")
}The AAR carries libsignal as native .so libraries for arm64-v8a, armeabi-v7a, x86_64, and x86. There is no NDK setup on your end; Gradle picks the right ABI for the target device at packaging time, and the libsignal dependency resolves from Maven Central automatically.
Platform support
- Android 8.0 and up:
minSdk26. The credential-manager passkey path falls back to Play Services on API levels below 34, so passkey auth works across the supported range. - Kotlin: the public API is Kotlin first, with
suspendfunctions for the asynchronous calls andkotlinx.coroutinesas the concurrency model. - Java 17: the library is compiled against a JVM target of 17. Java callers can consume it, though the coroutine surface is most natural from Kotlin.
The shape is the same everywhere
The Android SDK exposes the same surface as every Ease SDK: ease.me, ease.auth, ease.contacts, and ease.chat. The method names, the room types, and the typed events match what you would call on web. If you know one Ease SDK, you know the shape of this one.
The concept pages describe each surface independent of platform, and the quickstart walks the full path from install to first encrypted DM with runnable, contract- verified samples. Start with the chat surface and authentication to learn the calls. Those samples are contract-verified in TypeScript; the same calls translate directly to Kotlin.