# X-MVVM-Project-Java **Repository Path**: doublehappy_admin/x-mvvm-project-java ## Basic Information - **Project Name**: X-MVVM-Project-Java - **Description**: 一个Android通用 MVVM Java 项目框架,包含组件化、模块化的通用项目框架,直接填充业务功能就可以。各个模块都有MD说明文档。 Java - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.jianshu.com/u/e40fbfa8cef1 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-09-29 - **Last Updated**: 2024-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] # Android MVVM Java项目通用框架 本项目基于 Java+Jetpack+MVVM+组件化+DataBinding+Arouter+Retrofit 等框架实现的一个项目。 # 项目结构 ~~~ |- WanAndroid ||-- app // app 入口,主模块,用于集成其他功能模块和主页处理 ||-- librarys //library库 ||-- lib-common //通用库,已在base引用,不需要每个模块引用 ||-- lib-base // 基础封装,module必须引用 ||-- lib-db // Room数据库封装,module必须引用 ||-- lib-network // 网络请求封装(LiveData+Rxjava+Retrofit),module必须引用 ||-- lib-widget // 控件封装,module必须引用 ||-- lib-project-common // 项目共用,module必须引用 ||-- modules // 功能模块 ||-- module-copy // 复制模块:用于新模块复制快速搭建项目模块 ||-- module-account // 账户模块,项目登录注册忘记密码等跟用户相关页面 ||-- module-home // 首页模块 ||-- module-mine // 我的模块 ||-- module-web // 网页模块 ||-- README.md ~~~ # 一、请求编码 - 后续添加新模块需要把模块跟对应编码添加进来 - 请求编码规定长度6位数(000000),前三位数用于模块(相当于编码就是模块),后三位用于模块内部使用,防止各模块使用编码冲突导致难以定位问题 - app 100开头 - module_account 200开头 # 二、项目架构 ## MVVM 由MVVM的View、ViewModel、Model三部分组成 结构:View<-->ViewModel<-->Model 具体使用可以参考代码 ## 模块化 模块化提倡用一个个能单独运行的module去实现每一个功能,然后在发布的时候再将其合在一起 ## 组件化 组件就是将一个个功能拆分,然后各个功能尽可能少的互相影响,比如网络请求组件,数据库处理组件等等 ## 组合 功能业务模块都引用在app模块 其他业务模块都需要引用公共模块 各个页面跳转通过阿里路由(ARouter)跳转 ## 主要功能 - 首页、我的 - 登录、注册 - 整体采用[Material Design]([https://www.material.io/](https://www.material.io/))设计风格 ## 各个模块可以单独编译运行 gradle.properties 有配置"集成开发模式" 和 "组件开发模式"的切换开关 true表示组件独立运行,false表示一个library ``` #isRunModule=true isRunModule=false ``` # 三、版本管理 ### master - 稳定版主分支 - 版本稳定合并到该分支 ### release - 公测版分支,发布分支 - hotfix/xxxx 紧急修复分支,发布后合并到release分支并删除该分支 - patch/x.x.x 临时版分支,发布后合并到release分支并删除该分支 ### dev - 开发版分支develop - patch/x.x.x 开发版分支,开发完后合并到dev分支并删除该分支 - featured/xxxx 某个模块功能的特性分支,开发完后合并到dev分支并删除该分支 # 主要开源框架 - [RxJava](https://github.com/ReactiveX/RxJava) - [RxAndroid](https://github.com/ReactiveX/RxAndroid) - [Retrofit](https://github.com/square/retrofit) - [okhttp](https://github.com/square/okhttp) - [PersistentCookieJar](https://github.com/franmontiel/PersistentCookieJar) - [Glide](https://github.com/bumptech/glide) - [MMKV](https://github.com/Tencent/MMKV) - [Luban](https://github.com/Curzibn/Luban) - [Android_CN_OAID](https://github.com/gzu-liyujiang/Android_CN_OAID) - [utilcodex](https://github.com/Blankj/AndroidUtilCode) - [adapter_plus](https://github.com/xiaohaozi9825/adapter_plus) - [flexbox-layout](https://github.com/google/flexbox-layout) - [FlycoTabLayout](https://github.com/H07000223/FlycoTabLayout) - [SmartRefreshLayout](https://github.com/scwang90/SmartRefreshLayout) - [banner](https://github.com/youth5201314/banner) - [AgentWeb](https://github.com/Justson/AgentWeb) - [Arouter](https://github.com/alibaba/ARouter) # 感谢 - [阿里矢量图](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.iconfont.cn%2F) - [WanAndroid](https://www.wanandroid.com/blog/show/2) - [Jetpack-MVVM-Best-Practice](https://github.com/KunMinX/Jetpack-MVVM-Best-Practice)