# NIMKit 架构解析

## 总体结构

```
com.netease.nim.uikit
├── api                 #UIKit 数据接口、定制化接口
├── business            #业务相关，P2P,Team,ChatRoom
├── common              #通用 ui 组件、utils
├── impl                #数据接口、定制化接口的默认实现
└── support             #第三方库封装
```

以层次划分的形式，看一下各个模块之间如何交互，各自的角色和定位

![image](https://github.com/netease-im/NIM_Resources/blob/master/Android/Images/uikit_struct.png)

- api 模块定义了 `UIkit` 的功能扩展接口、业务数据接口，提供了 `UIkit` 能力输出类 NimUIKit。APP 与 `UIkit` 交互只需要关注这个模块的接口。

- impl 是 `UIkit` 一些抽象接口的默认实现，如会话定制接口、用户信息接口，当 APP 不设置任何定制化时，也能保证 `UIKit` 组件正常运转。

- business 模块实现了 IM 相关的功能，例如联系人、单聊、群聊、聊天室等，能力以 `Activity` 或者 `Fragment` 形式展现。开发者可以通过 `NimUIKit` 提供的接口来启动 `Activity`，以 xml 或者 java 代码的方式集成 `Fragment`。

- common 模块是一些通用 ui 组件、工具类等等，与业务无关。

- support 是基于第三方库对业务的封装等等。
