Skip to content

YGragon/FrameDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

161 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FrameDemo

FrameDemo 项目为了快速实现使用了很多的 GitHub 仓库,在此非常感谢开源的各位大佬。

这是项目学习组件化开发的一个 Demo,虽然是Demo,但是组件化开发该有的内容基本都涵盖了。

推荐 鸿洋的 WanAndroid 网站,里面有很多干货。

相关的组件化文章介绍在网站里面也有,点击直达。

组件化开发,网上已经很多文章在写,我这里就不赘述。

什么样的项目才算组件化开发?

刚开始学习组件化开发,看到好多文章都写着组件化开发,但是大部分都是只有一个 App 组件,其他基本都是 Lib 组件,没有过多的参考价值。Lib 组件和 App 组件的差别在于,Lib组件不能独立运行,而 App组件能够独立运行。

如何实现组件化开发?

组件化开发的重点是,每个 独立的组件都是可运行,而组件间是需要相互通信的,那么如何实现呢?

这里使用了 ARouter 框架 进行组件间的通信。

组件化开发的好处就是,我们只要把框架搭建好,把 lib_common 组件维护好,以后开发直接就是编写一个个的 App 组件,或者直接复用以前的 App 组件。

组件化的实施步骤

  • 新建空的项目,会创建 app 组件,创建class MainApplication : BaseApplication()通过反射来注册各个可独立运行的组件

  • 新建 config.gradle文件或者新建buildSrc组件。非必须,作用是为了更好的维护gradle中的仓库版本

  • 新建 lib_common 库组件。组件开发中的所有基类,工具类都可以存放在这

  • 串联 app 组件和其他组件、以及让其他组件能够独立运行。(重难点)

  • 新建 module_xxx 组件名字。具体的某个组件,比如:module_usercenter组件表示为用户中心

WanAndroid 组件化开发实例

项目使用 Kotlin + MVP 模式开发,封装了BaseActivity、BaseFragment、IBaseView、IPresenter等基类,在lib_common组件的utils包中还包含了很多的工具类。其中在jetpack组件中使用了viewmodel+livedata+room+navigation组件。

一般我们项目常用的一些功能主要由以下组成:

  • 网络请求框架:使用 RxJava3 + Retrofit2 + Kotlin 扩展函和高阶函数数 封装的网络请求库。
  • 使用了RxJava3,那么在所难免的会遇到RxJava内存泄露问题,这里使用 autodispose2来管理。
  • 日志打印:Logger ,优秀的程序员也是需要根据日志来排查问题的,Logger相对比较简洁,因此也纳入项目中。
  • 权限管理:easyPermission库,目前主流机型还是Android5.0以上且Android 6.0以后需要动态申请权限,所以权限库也是必须的。
  • 组件路由:ARouter,阿里开源的组件化方案。
  • 升级、崩溃统计:Bugly,腾讯开源的升级及崩溃统计SDK
  • 列表 adapter:非必须,BRVAH或者其他
  • 图片加载:非必须,Glide或者其他
  • 数据库:Room
  • ...

App Module

尽量简洁

主要有两处要注意

  1. app/build.gradle 中控制各个组件是否集成到 app 中

1601994679463

  1. application

新创建的组件,application 需要在 AppConfig.moduleApps 集合中添加。

1601994742104

lib_common

基础库

lib_download

下载组件,包括app升级、文件上传下载

app升级使用的是 DownloadManager

文件上传下载使用的是 OKHttp 实现

module_android_jetpack

Android Jetpack 相关组件库使用 demo,包含 ViewModel+LiveData+Navigation+Room 的使用

module_gank

gank io 网站图片查看的 demo,使用 Glide 实现大图预览

module_map

地图组件,封装的百度地图 SDK 组件

module_search

搜索组件,使用 RxJava 实现联想搜索

module_share

分享组件,封装的系统分享组件

module_todo

使用 玩Android 网站 API 开发 的 TODO Demo

UserCenter Module

几乎每个应用必有的用户中心,用户中心涉及到的相关功能有:

注册功能、登录功能、退出功能、用户登录互斥功能、记住密码功能

注册登录功能

这里使用了 鸿洋大佬的 WanAndroid 提供的 API ,非常感谢

PS:大家在使用的使用也尽量少注册一些脏数据。

About

Android 组件化开发示例,同时包含很多新技术的实践,可安装 apk(在app/release目录下) 后查看。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages