posts/feeds(功能模块) -->Component:BusiLib(各个模块的一些公用组件比如view/constants小红点管理器等/包括各个模块自己的event/model/view) --> commoncore(极验,哆啦A梦,小米登陆,debug配置) --->baseLibrary:commonsdk/baseLibrary:mediaengine/commonservice
baseLibrary:commonsdk: 和业务无关的一些组件/比如dialog,bitmappool/flowlayout ->第三方的arouter/walle/rxjava2/okhttp3/retrofit/fastjson/rxpermissions2/xlog/glide/greendao/umeng
commonService 各个model公用的servie接口 或者 view接口/ callback
项目目录结构如下
livesdk
app
skr_flutter
pbgit
1. 主项目代码 地址 http://git.inframe.club/chengsimin/livesdk 。访问不了找相关人员配置Member加权限
2. 项目flutter部分代码 地址 http://git.inframe.club/skrer/skr_flutter 。 访问不了找相关人员配置Member加权限
3. 项目pbgit部分代码 地址 http://git.inframe.club/skrer/pb . PbGit 定义 下行信令消息 的Protocol buffer 协议。 房间内的状态机信令信息都在这。
# 项目结构介绍
livesdk --- 项目
app --- 空壳app,也有一些flutter methodchannel 代码。以及一些全局事件的处理代码
baselibray --- 业务无关的基础库
AndResGuard --- APK包大小压缩库
android-gif-drawable --- 著名的开源gif库
arcCloud --- 对演唱进行打分的库,花钱买的
avstatistics --- 引擎统计
commonsdk --- 基础库,图片压缩,播放器,音视频缓存工具,各种工具类,图片相册浏览等等等很多基础库,想到的功能几乎都有,不用在业务模块中再写基础库
enginesdk --- 声网引擎库
mediaengine --- 媒体引擎库
effectsdk --- 抖音魔法表情库
my-utils-gradle --- gradle插件库,目前没用
replugin-xxxx --- 360 replugin 插件库,目前没用,不参与编译
commoncore --- 业务相关,但几乎所有App都有的业务。比如帐号,scheme,权限管理的封装,app的升级的等
Component --- 业务基础组件库,比如app风格的统一弹窗,统一的歌词渲染控件,通知管理等等
Module --- 业务模块
Club --- 家族模块
Feeds --- 帖子浏览
Home --- 主页,设置,个人主页等
IMKit --- 消息模块,对融云的封装,长链接信令的入口也在这
PlayWays --- 所有游戏的主要玩法都在这,抢唱,排位,双人合唱,主题房等
Posts --- 帖子的制作与发布
commonservice --- 定义了Module 对外暴露的接口
skr_flutter --- 一些逻辑简单的页面为了节约人力,统一用flutter写,android ios 公用
# 项目架构解析
1. Module 之间无编译依赖,完全解耦,支持插拔
2. Module间的通信借助ARouter依赖注入,接口在 commonservice 中暴露
3. Module的初始化在 XXXConfiguration 中进行,Application在commonsdk层,BaseApplication,在onCreate时会通过反射找出各个Module的Configuration,并执行初始化。