Android SDK
Android 原生 SDK 用于 Kotlin / Java App,封装登录、长连接、重连、多端同步、本地数据库和消息发送队列。好友、群组、聊天室、文件、在线状态、免打扰和举报由核心模块提供;离线推送、LiveKit 音视频与 Coil 图片接入按需添加。
环境与分发
| 项目 | 当前要求 |
|---|---|
| 运行系统 | Android 7.0(API 24)以上 |
| 接入 App 的 compileSdk | 至少 35;当前示例使用 36 |
| 字节码 | JVM 11,App 的 Java / Kotlin 编译目标应一致 |
| 已验证消费环境 | Kotlin 2.4、AGP 9.1、compileSdk 35;其他版本组合需自行验证 |
| 从源码构建 | JDK 17、Android API 36 和对应构建工具 |
| 当前分发方式 | 源码构建的本地 Maven 仓库,尚未上传公共制品仓库 |
SDK 的源码、编译验证和正式发布状态分别记录。当前测试覆盖本地服务端和 API 35 模拟器,真实厂商推送、各品牌省电策略仍需账号和真机验收。Flutter 中的 Android 能力属于 Flutter SDK,本节介绍独立 Android 原生 SDK。
安装
在源码仓库根目录运行 make sdk-android-publish-local,将生成的 sdk/android/build/maven-repo 复制到接入项目的 local-im-maven。在 settings.gradle.kts 中添加仓库:
kotlin
// Gradle 配置,不是 App 运行时代码。
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url = uri(rootDir.resolve("local-im-maven")) }
// 仅接入 im-call 时需要。
maven("https://jitpack.io") {
content { includeGroup("com.github.davidliu") }
}
}
}App 的 build.gradle.kts:
kotlin
// Gradle 配置。
android {
defaultConfig { minSdk = 24 }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}
dependencies {
implementation(platform("com.deeprespond.im:im-bom:2.0.0"))
implementation("com.deeprespond.im:im")
// 按需选择:
implementation("com.deeprespond.im:im-push")
implementation("com.deeprespond.im:im-call")
implementation("com.deeprespond.im:im-coil")
}Kotlin 的 jvmTarget 同样设为 11。BOM 统一模块版本,不要混用不同版本的制品。FCM、厂商推送和 LiveKit 的具体配置见离线推送与音视频通话。
模块
| 制品 | 用途 |
|---|---|
im | DRClient、生命周期、安全存储、SQLite、URI 文件、媒体处理、录音 |
im-core、im-net | 协议和业务模块、HTTP 与 WebSocket,由 im 自动引入 |
im-push | FCM、令牌登记、通知、点击、渠道状态和角标 |
im-push-huawei、im-push-honor、im-push-xiaomi、im-push-oppo、im-push-vivo、im-push-meizu | 国内厂商通道,按需依赖 |
im-call | LiveKit、系统来电、Core-Telecom、通话前台服务、视频视图 |
im-coil | Coil 3 的 DRImage 模型和缓存适配 |
im-bom | 模块版本对齐 |
Java 门面随制品提供,接入 App 不必配置 KSP。编译桩和测试平台不是可分发的运行依赖。
文档导航
| 模块 | 文档 |
|---|---|
| 第一次接入 | 快速集成、初始化、登录与连接 |
| 聊天 | 会话、消息 |
| 用户与社交 | 用户、好友与在线状态、群组 |
| 文件与房间 | 文件、图片与录音、聊天室 |
| 通话与提醒 | 音视频通话、离线推送、提醒、免打扰与举报 |
| 界面与诊断 | 界面与生命周期、事件与错误处理 |
| 完整接口 | Java 接入、接口参考、数据类型 |
没有完整聊天 UIKit;本 SDK 提供协议、状态和媒体组件,聊天界面由业务应用实现。
构建与排查
| 现象 | 检查项 |
|---|---|
| Maven 找不到制品 | 当前只提供本地仓库,先构建并复制 maven-repo;仓库需要在 dependencyResolutionManagement 中声明 |
| Kotlin 元数据或 JVM 目标不兼容 | 使用已验证 Kotlin / AGP 组合,Java 与 Kotlin 都设置 JVM 11 |
| Android 依赖要求更高 compileSdk | 运行 minSdk 与编译 compileSdk 是不同要求;compileSdk 至少 35 |
| 国内通道类找不到或运行时缺类 | 引入对应厂商模块和真实厂商依赖;编译桩不能安装到生产 App |
| calls.supported 为 false | 检查 im-call 是否加入,以及初始化和媒体服务配置 |
| Release 包行为不同 | SDK 随制品提供 consumer ProGuard 规则;启用 R8 后验证实际接入包及资源合并 |
| unsupported 的存储错误 | 检查是否选择加密或 BUNDLED 驱动,以及对应可选依赖 |
网络、安全存储和数据库由 SDK 处理;App 负责业务凭证、隐私同意、运行时权限及界面导航。连接错误与诊断见事件与错误处理。
独立 RTC 频道
已提供独立频道接入源码,调用 API、媒体权限与前后台边界见频道接入。频道版本制品尚未发布,实际支持和验收范围见平台表。
