# jugglechat-android
**Repository Path**: juggleim/jugglechat-android
## Basic Information
- **Project Name**: jugglechat-android
- **Description**: jugglechat android
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2024-08-15
- **Last Updated**: 2026-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JuggleChat Android — 开源即时通讯与聊天应用
[English](README.md) | [简体中文](README.zh-CN.md)
JuggleChat Android 是一个基于 Java、JuggleIM SDK 与 ZEGO 构建的、可完整运行的 **Android 即时通讯应用(IM App)**。项目面向希望开发移动聊天产品的开发者,提供单聊、群聊、通讯录、朋友圈、消息搜索以及实时音视频通话等完整参考实现。
你可以用它评估 JuggleIM Android SDK 的接入成本,学习真实聊天应用的功能组织方式,或快速搭建自己的 Android IM 应用原型。
## 功能预览
消息、通讯录与群组
登录 · 会话列表 · 富媒体消息 · 语音消息 · 聚合搜索 · 群聊
|
音视频、群管理与朋友圈
音视频通话 · 来电提醒 · 群组设置 · 朋友圈 · 消息收藏
|
|
|
## 为什么选择 JuggleChat?
- **完整可运行**:覆盖从注册登录到会话、消息、群组、朋友圈和音视频通话的完整链路。
- **贴近真实 IM 场景**:包含未读数、分页、消息操作、登录态恢复、多端登录处理和来电浮窗等常见能力。
- **提供集成参考**:展示 Android 客户端如何连接 IM SDK、业务服务端与 ZEGO 实时音视频服务。
- **Java 架构清晰**:采用单 App 模块,明确划分 UI、领域仓储、SDK 封装、HTTP 服务和事件通知边界。
- **适合二次开发**:可用于企业内部沟通、社区聊天、在线客服或社交产品的原型验证。
## 功能特性
### 消息与会话
- 单聊与群聊
- 文本、图片、语音、文件及合并转发消息
- 消息回复、回应、翻译、撤回、收藏与置顶
- 会话分页、未读数、置顶与免打扰
- 历史消息与聊天记录搜索
### 通讯录与群组
- 注册、登录、会话恢复与多端登录态处理
- 好友申请与通讯录管理
- 群组创建、群公告、群二维码、角色与成员管理
- 好友、群组与消息的聚合搜索
### 社交与实时音视频
- 朋友圈动态、图片发布、点赞与评论
- 基于 ZEGO 的单人及多人音视频通话
- 全局来电与通话中浮窗
- 基于 CameraX 与 ML Kit 的条形码/二维码扫描
## 技术栈
| 分类 | 技术与版本 |
|---|---|
| 平台 | Android、Java |
| Android 版本 | minSdk 24、targetSdk 34 |
| 构建工具 | Android Gradle Plugin 8.4.0、Gradle 8.6、JDK 17 |
| 即时通讯 | JuggleIM Android SDK `1.8.44` |
| 音视频通话 | Juggle 通话扩展 `1.8.25`、ZEGO Express `3.17.3` |
| 应用架构 | Repository 领域仓储、SDK Facade、EventBus 事件桥接 |
| UI 与媒体 | AndroidX、Material Components、Glide、CameraX、ML Kit |
| 网络与数据 | Retrofit、Gson、Protobuf、七牛 SDK |
| 安全存储 | AndroidX Security Crypto |
## 项目架构
JuggleChat 将 SDK 回调与应用 UI 解耦。`JIMChatCore` 是项目与 JuggleIM SDK 交互的唯一 Facade;领域仓储负责组织数据,EventBus 将连接、会话与消息变化分发到 UI。
```text
Android UI
├── 领域仓储 ── JIMChatCore ── JuggleIM SDK
├── HTTP 服务层 ────────────── 业务服务端
└── 通话 UI ── Juggle 通话扩展 ── ZEGO
```
主要源码目录:`app/src/main/java/com/juggle/im/android/`
| 目录 | 职责 |
|---|---|
| `app/` | 应用壳层、登录注册、设置与个人资料 |
| `auth/` | 会话持久化、鉴权保护与启动路由 |
| `chat/` | 会话、消息、通讯录、群组、搜索、通话与朋友圈 |
| `core/` | JuggleIM SDK 核心封装(`JIMChatCore`) |
| `server/` | HTTP 服务与数据传输对象 |
| `event/` | EventBus 事件定义 |
| `service/` | 前台服务与保活能力 |
| `utils/`、`widget/` | 通用工具与自定义 Android 组件 |
如需了解设计决策、模块边界与已知实现细节,请从[项目知识库](docs/knowledge/index.md)开始阅读。
## 快速开始
### 环境要求
- Android Studio(建议使用最新稳定版)
- JDK 17
- Android SDK 34
- Android 7.0(API 24)及以上的设备或模拟器
### 1. 克隆并打开项目
克隆本仓库,使用 Android Studio 打开项目根目录,等待 Gradle 同步完成。
### 2. 配置服务参数
修改 `app/src/main/java/com/juggle/im/android/model/ConfigUtils.java`:
| 字段 | 说明 |
|---|---|
| `appKey` | JuggleIM 应用 Key |
| `appServerUrl` | 业务服务端基础地址 |
| `imServer` | JuggleIM WebSocket 服务地址 |
| `zegoId` | 音视频通话使用的 ZEGO AppID |
仓库中提交的参数仅用于演示和测试。分发应用前,请替换为自己的服务、凭证和签名配置,切勿把生产密钥提交到代码仓库。
### 3. 构建并运行
在 Android Studio 中运行 `app` 配置,或通过命令行构建 Debug APK:
```bash
./gradlew :app:assembleDebug
```
## 常用开发命令
| 命令 | 用途 |
|---|---|
| `./gradlew :app:assembleDebug` | 构建 Debug APK |
| `./gradlew :app:assembleRelease` | 构建 Release APK |
| `./gradlew :app:testDebugUnitTest` | 运行单元测试 |
| `./gradlew :app:lintDebug` | 运行 Android Lint |
## 常见问题
### JuggleChat 是完整的 Android 聊天应用,还是只有 SDK 示例?
它是一个完整的客户端参考应用,包含注册登录、会话、富媒体消息、通讯录、群组管理、搜索、朋友圈与音视频通话界面。运行时仍需要配套的业务服务端、JuggleIM 服务以及 ZEGO 配置。
### 可以基于这个项目开发自己的即时通讯 App 吗?
可以。项目适用于学习、SDK 评估、产品原型和二次开发。用于商业项目之前,请检查各 SDK 和服务的授权条款,替换全部演示凭证,并完成隐私、安全与合规评估。
### 这个 Android 聊天 Demo 支持群聊和视频通话吗?
支持。项目实现了单聊、群聊,以及单人和多人音视频通话。
### 项目使用 Kotlin 还是 Java?
应用代码主要使用 Java 编写,适合维护 Java Android 项目的团队参考,也便于对比 IM SDK 的 Java 接入方式。
### JuggleChat 需要哪些服务端能力?
客户端通过业务 HTTP 服务获取业务数据,通过 JuggleIM 处理实时消息,并使用 ZEGO 传输音视频媒体流。相关服务地址和凭证需要在 `ConfigUtils.java` 中配置。
## 参与贡献
欢迎提交 Issue 和 Pull Request。报告问题时,请附上 Android 版本、设备型号、复现步骤、预期结果与相关日志。提交 PR 前请保持改动聚焦,并运行与改动最相关的构建、单元测试或 Lint 任务。
如果这个 Android IM 项目对你有帮助,欢迎为仓库点亮 Star。Star 和高质量的问题反馈能帮助更多 Android 开发者发现并完善 JuggleChat。
## 安全与生产环境说明
- 替换示例服务地址、应用 Key、ZEGO AppID 与签名文件。
- 复核通知、相机、麦克风、媒体读取和前台服务权限。
- 根据业务要求补充隐私政策、数据保留规则与账号注销流程。
- 商业发布前确认 SDK 授权、服务费用及所在地区的合规要求。
- 不要将仓库内的演示配置视为生产安全基线。
## 项目定位
JuggleChat Android 主要作为学习、评估和二次开发参考项目维护。它不是托管式即时通讯服务,也不能替代生产聊天应用所需的服务端、可观测性、安全加固与合规建设。
## 开源许可证
JuggleChat Android 基于 [Apache License 2.0](LICENSE) 开源。