SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置

项目架构定位

终于有时间弄下自己的小项目 SimpleNews.io ,之前 frok 过来项目后,只注重了项目的局部模块的设计,没有从整体上考虑过这些架构上的事,后来在工作中接触 Android 插件和组件化开发,渐渐发现之前的项目结构太单一,一般都是根据不同的页面或者业务分几个文件夹,自己模块的逻辑都写在自己的文件夹下,也不会考虑其他复用情况,后续也有一些和其他模块相耦合的代码,根本无法扩展,当然这种方式也只是适用于个人开发,只是因为项目太小而没有察觉出太大问题,一旦项目变得庞大,那真的就已经晚了.

所以,不管项目大还是小,接下来按照组件化方式来重新设计下项目架构,按照团队开发的的模式开发。

网上有很多针对 Android 组件化开发的实施的具体步骤,我这里没有急于按照编译模式的组件化去直接修改,而是先在代码结构和逻辑上做了拆分,在过程中也逐步的抽出一些基础库、依赖库,也就是后面会常说的一个一个组件,因为之后的组件化也是依赖这些最基本的代码。

为什么要进行拆分?

1、原始方式:

  • 存在诸多缺点,虽然开发简单方便,但是后续得不偿失;

2、组件化:

  • 正好解决原始方式的缺点,可以将业务实现分离,单个业务可以作为模块进行上下依赖;
  • 每一个组件都可以单独运行,各个业务研发同学不互相依赖,也加快了开发的速度,我们知道项目一旦大了,编译都是泪。。

拆分方法

1、新建 Lib moudel 库,将公用的类等逐步移动到依赖库中;
2、Lib moudel 库中也要分层依赖,为以后完全转成组件做准备;
3、主 app 中引用遵循分层思想;

拆分过程

看下之前的结构:


SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第1张图片
之前

之前的结构是分了很多包,里面基础功能和UI逻辑都是在一起,看着很乱,之后做组建化不方便

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第2张图片
之后

这只是在抽离过正常的不完整版,有一些已经改掉了。

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第3张图片
目前

局部做了相应调整,可以看到 app 目录下有两个应用,之后是可以单独运行的业务模块

app目录
注意:

前期我这里只是从文件目录进行了整理分割,等整租组件化的时候,只要把这些业务一一移动过去即可,好处是一步一步来改动,避免改动过大,导致项目紊乱,同时也是自己掌握学习的过程。

拆分资源

资源这部分指 Res 目录下的文件,一般最多的就是布局和图片,我这里是按照业务类型功能规范命名,好处是,命名严格,不许出现重复,建议 xml 中的 id 也要严格命名,防止之后出现一些奇怪的问题,最后查起来费劲。


Gradle 全局配置

关于 Gradle 我这里只是说一下我项目中的修改,一些基本介绍暂时没有涉及,之后会做一个基本介绍,一般使用 Android Studio 开发的同学应该不陌生,项目要跑起来都需要使用 Gradle 进行构建,里面有很多很好玩的东东,之后在漫漫细说,今天介绍下如何实现 Gradle 全局配置。

因为由多个 moudle 的原因,gradle 配置文件也就随之增多,所以必须统一管理这些配置,。不然一个一个修改太费劲了。

一般项目结构:

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第4张图片
gradle

我这里新建了一个 config.gradle 配置和 build.gradle 同级,内容如下:

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第5张图片
config.gradle

然后在项目级别的 build.gradle 文件加上以下配置代码:

apply from: "config.gradle"

使用

在其他 gradle 配置文件中使用:

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第6张图片
SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置_第7张图片

这样就能统一管理起来一些配置选项,当然如果你的配置修改了,需要手动同步构建一下。

坑坑坑坑:自定义的配置文件配在根目录的字段不生效,改用数组里面,应该是和系统的冲突了,分开放就好了

完整配置

config.gradle

总结

以上内容就是项目架构定位 & Gradle 全局配置两部分的优化整理,重构还谈不上,这是一个长期的过程,每做完一点记录一点,对自己也是一个成长,之后还会继续跟进。


SimpleNews 项目的重构之旅其他文章

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置
SimpleNews 项目的重构之旅(2) - 整理项目 .gitignore 文件
SimpleNews 项目的重构之旅(3) -EventBus 接入
SimpleNews 项目的重构之旅(4) -Gradle for Android 基础知识汇总
SimpleNews 项目的重构之旅(5) - Android Gradle 打包&混淆应用
SimpleNews 项目的重构之旅(6) - 命名规范 & Android Toolbar
SimpleNews 项目的重构之旅(7) - 改头换面&深度清理

你可能感兴趣的:(SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置)