该框架基于 Jetpack + Arouter + Retrofit + MVVM 等实现的一款开源学习项目,该框架存在的意义一方面是为了能实现快速开发、协同开发、实现可复用等,另一方面是想把自己会的、有趣的、可复用的东西写出来,分Java、Kotlin版本
流程图 - 项目业务开发方向( 2021-3-17 更新了个寂寞 )
下载地址,Java版,或扫码下载 【不一定记得更新,还是得自己拉代码跑】
- 主要使用了 JitPack 、 ARouter 、RxJava2 、Retrofit2 等主流框架,MVVM模式
- 主工程运行、业务模块独立运行
- 各模块相互跳转、通信等
- 功能(Package By Feature)、业务(Package By Layer)分离解耦
- SpringMVC模式开发接口
-
jetpack
包下封装了JetPack
功能- 底层框架
lib-arch
:集成JetPack
,解决单继承问题,只需实现IActivity
、IFragment
和 部分注解@BindRes
、@BindViewModel
等 - 数据库 Room
lib-room
:集成Room
简单封装了个泛型BaseDao,少实现增删改 - 分页库 Paging
lib-paging
:集成Paging
分页库功能
- 底层框架
-
utils
包下 存放无业务逻辑相关的常用工具 轻量级的- Android & Java 的工具库,通过静态方法封装,降低相关API的学习成本,提高工作效率
- 适配器
lib-adapter
:封装 普通 andPaging
两种适配器,实现头尾、增删查改、多状态布局等 - Okhttp3
util-okhttp
:集成Okhttp3
,简单的抽象封装,实现网络请求 - 网络请求
lib-network
:- java:
Retrofit2
+LiveData
+Okhttp3
- kotlin:
Retrofit2
+Okhttp3
+Coroutine
- java:
- ...
-
widgets
包下 存放与业务逻辑相关的组件工具- 对话框
- 悬浮框
- 换肤
- 下载
- ...
-
自行查看
libs
目录,工具包都在其包下。具体实现方法可在module-widget
模块下查看 (不完全)
开发环境:Android Studio 4.1.1 、gradle 6.6 、kotlin 1.4.30 、JDK 1.8 、SdkVersion support 28 - AndroidX 30
-
主干为Java + AndroidX ( 得跟上jio步
-
Java + support版本的看 java-support 分支;
-
最新AndroidX + Kotlin版本的看 What-Kotlin ,【 kotlin版本会比java版本更新慢,重心还在java版本上(kotlin也就图一乐,吃饭还是得靠java 】;
(PS:各模块还处于打磨中,一堆bug,辣眼勿怪. 功能点只列举个别,包含但不限于)
-
app
主模块- 只用于打包、配置
gradle
个别信息
- 只用于打包、配置
-
module-widget
模块(该模块只引用了common-base
,区别于其他模块)- 存放各种自定义的
lib-
包 (于widgets
包下),方便发布JitPack
导入使用 - 调试功能组件
- 存放各种自定义的
-
module-main
模块- 启动页、闪屏页、主界面布局
-
module-login
模块- 登录、注册界面及功能
- 提供、存储用户信息
-
module-user
模块- 用户个人界面
- 展示信息
- 编辑信息
-
module-wanandroid
模块- 使用 wanandroid 提供的API,开发的一款简略版客户端
- 部分功能点
- 跳转web
- 内容搜索
-
module-video
模块- 模仿抖音列表及部分基础功能
- 播放列表
- 详情页
- 评论功能
-
module-joke
模块- 模块皮皮虾的视频、图文界面及部分基础功能
- 多状态列表
- 详情页
- 评论功能
-
module-music
模块- 音乐播放基础功能
- 本地音乐列表、
- 网络音乐列表,**无合适API
- 通知栏控制
-
module-novel
模块- 小说基础功能
- 列表页
- 小说阅读页、翻页效果、缓存
- 书架页
-
module-caht
模块- 接入
环信SDk
在其基础上开发 - 聊天室
- 群聊
- 接入
-
module-news
模块- 新闻资讯基础功能
- 列表
- 详情
-
module-mall
模块- 商城基础功能
- 商品列表
- 商品详情
- 购物车
- 支付流程
- 订单状态
-
module-live
模块- 直播基础功能
- 直播列表
- 直播室,推拉流
- 聊天室
- 礼物效果
-
module-server
模块- 使用 AndServer 提供
SpringMVC
方式输出RESTFUL风格的Api - 使用
Room
数据库将数据存储本地,文件存储到外部存储上的缓存目录下 - 登录模块(手机登录、游客登录、获取验证码)
- 用户模块(查询用户信息、退出登录)
- 文件模块(上传单文件、查询文件目录下的文件、查询文件地址)
- 使用 AndServer 提供
- 在
local.properties
下添加,模块名=true
module-main=true
module-login=true
module-user=true
module-video=true
module-music=true
module-novel=true
module-chat=true
module-joke=true
module-wanandroid=true
module-news=true
module-mall=true
module-live=true
module-widget=true
...
之后 build
一下
- 如在单项目需要引用到其他项目(如用户模块需要登录),则
dependencies {
if (runAsApp) {
//模块化下需要引用到的模块
addComponent 'module-login'
...
}
}
用户模块完整例子:
apply from: rootProject.file('module.gradle')
android {
defaultConfig {
//仅在以application方式编译时才添加applicationId属性
if (runAsApp) {
applicationId build_version.applicationId + '.module_user'
}
}
//统一规范资源名称前缀,防止多个 module 之间资源冲突
resourcePrefix "user_"
}
dependencies {
if (runAsApp) {
//模块化下需要引用到的模块
addComponent 'module-login'
addComponent 'module-chat'
}
}
module.gradle
详细请阅读代码即可,无需经常改动
工具 最新版本
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
//要求项目使用Java 8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dependencies {
// 基于jetpack框架,实现快速开发、协同开发、实现可复用等
implementation 'com.github.y1xian.What:lib-arch:+'
// 适配器,封装paging 头尾部、增删查改
implementation 'com.github.y1xian.What:lib-adapter:+'
···
// 更多组件在widget下查看
// 更多常用工具在utils下查看
}
module.gradle
为业务模块配置的,每个业务模块都需配置lib-util.gradle
为工具类配置simple.gradle
为简单配置
- 新建模块,只需
res
包且对应资源名即可,可更换颜色,图片,shape。 - 本项目中已实现
skin-night
夜间模式的皮肤,只需编译该模块,把生成的night.apk
放进module-user
用户模块即可,路径为assets/skins/night.apk
个人经验的积累,项目也会不断的完善(在做了在做了