我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情
组件化开发系列文章
1. Android组件化开发之一:为什么要进行组件化开发
2. Android组件化开发之二:组件化架构
3. Android组件化开发之三:组件化开发手册
4. Android组件化开发之四:组件化填坑之旅
现状
随着APP业务的不断增加,版本不断迭代,APP越来越臃肿,随之而来的问题也逐步呈现出来;
问题1、APP中业务代码的增量叠加,而且各种业务代码混合在一个模块里面,开发人员在开发、调测过程中势必会带来效率上的影响;比如定位一个A业务的问题,可能需要在十个业务代码混合的模块里面寻找和跳转。
问题2、工程师需要了解各个业务的功能,避免代码的改动而影响其它的业务功能,势必无形中增加了项目维护的成本。
问题3、开发和调测一个业务功能的时候,需要整体编译APP,由于代码量越大,编译速度会相应地变慢,导致一个简单功能的的修改可能就要花费几分钟的时间编译整个APP,极大地影响开发效率。
问题4、内部项目没有一个统一的快速开发框架,每个项目采用的技术实现方式都不一样,每个开发人员的编码风格也不一致,导致每开发一个新项目都要重新编码、重复造轮子,而且也造成了开发人员在项目之间的流动困难。
问题5、有一些内部项目可以共用的功能模块,同样混杂于各个app工程里面,这部分内容实际上可以考虑抽取出来,封装成独立的公用组件,供内部各个项目使用。
下图是一个典型的APP结构图,我们不妨对照下自己的APP工程看看:
目标
我们针对上述问题现状进行有针对性地改造。
我们考虑采取以下几种方式来实现:
解决方案1:组件化
针对问题1、问题2、问题3,我们可以考虑以组件化的形式来解决。
组件化的目标是要告别APP的臃肿,APP的业务迭代不应该以牺牲APP的臃肿为代价。
各个业务组件相对独立,业务组件在组件模式下可以独立运行,自成一个APP,而在集成模式下可以作为一个被依赖的aar库文件存在,集成进一个完整的APP当中;
解决方案2:公用组件(含快速开发框架)
针对问题4、问题5,我们考虑开发一套适合于内部移动端快速迭代开发使用的框架。
快速开发框架可以细化为不同的部分,包括android UI、网络请求、数据库持久化、图片处理、View、工具类、sdk、内部统一风格组件等;
快读开发框架包括但不限于通用功能,如果是部门内部项目中通用的功能,也可以独立出来成为一个通用的库存在。
我们期望的一个优秀的APP结构是下面这样的:
APP拆分成三大块内容:
一个是APP壳工程,提供组装各个业务组件的功能,以及一些初始化的操作;
一个是业务组件工程,每一个具体的业务放在单独的业务组件中;
一个是公用组件工程,可以提供给本项目各个业务组件使用,也可以提供给其它项目使用;