:heavy_check_mark: Android组件化架构,支持组件代码完全隔离/组件循环依赖/便捷集成调试/快速接入,组件内基于 mvvm结构,组件提供高度服用的模块可直接使用,采用 wanAndroid api进行迭代开发。Android componentized architecture, support component code complete isolation / component circular dependency / convenient integrated debugging / fast access, component based mvvm structure, iterative development using wanAndroid api
该Sample主要是总结当前自己项目上的经验及学习Google Architecture Components方案进行项目尝试。
目前已有部分线上App校验过该Sample的运行逻辑,完全可行,适合App快速开发,并结合自身的库及用户需求自定扩展。
由于Android项目架构多样化,技术迭代更新很快,该项目会持续集成优化主流技术,并在线上App校验可行的情况下更新项目。希望有经验的开发者能指出不足,一起学习 :relaxed: :relaxed:
架构原则:内部的业务逻辑与外部无关,独立测试时不需要加载外部依赖
架构特性:易于维护,方便测试,高内聚,低耦合
工程结构:模块化开发
应用结构:组件化
协同工具:git相关
持续集成:jenkins + ci
目前功能逐步完善,要做成一个可以发布的产品的。
按照业务把工程划分以下几类模块
library层
基础类库,存放精简的代码,高复用性,一般其他模块直接引用即可,比如Utils,BaseActivity 等
service层
支持某类基础业务功能的独立模块,比如登陆服务,换肤服务.介于 library 层和 component 层中间,也可以直接被 app 层调用
component层
聚合多中基础业务功能的复杂业务模块,比如朋友圈,附近的人,一般可能使用多个 service 服务,也可以直接使用 library
app层 应用入口,聚合多个业务模块,比如主端或者调试程序
基于完全组件化开发, 协同 gradle plugin 插件进行工程约束辅助. 组件化插件
把常规 module 转化成 组件
打破常规 module 依赖,支持组件循环依赖
开发时面向接口编程,打包时面向实现编译
插件同时支持java/kotlin,插件 sample 如下
libBase:基础公有类/工具库
libWebview:H5能力库
libPermission:权限管理库
libGeo:基于百度地图sdk封装的地理定位库
libNet:基于okhttp3+retrofit2封装的网络库
serviceAccount:应用账号模块
serviceNet:应用网络模块,涉及接口解析,host配置,线程池管理等
serviceShare:分享模块
serviceSkin:换肤模块
serviceMedia:多媒体模块,包括图片展示,Gif播放管理,视频播放管理等
compTabMine:wanAndroid 我的
compTabRecommandation:推荐
compTabHome:wanAndroid 首页
其中Home包含:
compSquare:wanAndroid 广场
compProject:wanAndroid 项目
compPaccounts:wanAndroid 公众号
compSystem:wanAndroid 体系
app: 主端 wanAndroid 客户端
debugModule: 集成调试应用
wanAndroid sample 如下
硬性要求(至少)
掌握(最好)