Android基于组件的开发实践(I):为什么你想要基于组件的发展?

软件开发

APP开发


浏览:524 次

1.前言

在《三国演义》的开头,有这样一句话:“世界的大趋势是长期分离必须结合,长期联合必须分离”。我发现这句话与软件开发特别相关。我记得,当我第一次开始开发Java后台开发和后来开发Androidapp时,我使用了集中管理的思想来集中管理相同的资源。然而,我发现集中管理的资源太多了。许多人在开发过程中起了带头作用,然后将原始项目拆分为开发什么SOA架构和什么微服务,以及我将在这里讨论的Android组件化实践。

现在有很多关于基于组件的开发的文章。基于组件的开发原理很简单,但很难实现。在过去两年中,我领导了许多采用基于组件的架构的APP项目的开发,包括对一开始采用基于组件架构的旧项目和新项目的重建。在这段时间里,我踩了很多洞,积累了很多经验。现在我们计划记录这些,欢迎大家讨论它们是否正确。

2.单一项目开发模式的痛点是什么

为了便于区分,我将开发模式分为两种类型:一种是项目组件开发,另一种是单个项目开发模式。

单一项目开发模式

顾名思义,一个代码项目对应一个APP。该APP的所有业务功能都在一个项目中实现。

组件开发

简单来说,就是对一个APP的业务功能进行拆分。每个功能都是一个单独的项目。每个项目都可以独立运行,只包含自己的业务。让我们将这个独立的函数称为组件服务。最后,整个APP由多个拆分组件集成。

许多文章都详细介绍了什么是组件化,所以我在这里不再赘述。在讨论基于组件的开发的好处之前,我将首先根据自己的经验讨论单个项目开发模式的痛点。

项目的任何修改和调试都必须编译整个项目,这是非常低效的;

在开发APP时,我们需要经常在手机或模拟器上调试,每次调试都需要编译整个项目,然后安装在手机上运行。即使您只是在UI中更改代码或调整像素,您仍然需要一个完整的编译项目。当工程代码越来越多时,编译会越来越慢。你能想象这样的场景吗?我修改了某个代码,然后需要等待4或5分钟才能编译成功?这只是一个崩溃,严重影响了开发效率(我记得我以前用eclipse启动Android时,各种菊花都变成了菊花,让人想死)。

这不利于多个团队的协同发展;

早期,一两个人可能开发一个APP,但随着业务的扩展,我们可能会开发一个团队来开发APP,从四五个人到十个人甚至更多。据估计,移动淘宝、微信和支付宝等巨头APP至少有数百个。

以10人的团队为例。如果所有10个人都基于同一项目的代码拉动分支进行开发,那么每个人的开发任务都是不同的,但他们可以在整个项目中的任何地方进行修改。为了满足自己的需求,团队中有人更改了某句代码,但这种更改可能会影响其他人的开发,因此开发人员不可避免地会花费更多的时间进行沟通和协调,无法专注于自己的功能点。在10人的代码合并结束时,经历过这种情况的人会知道这是多么痛苦。你必须怀疑生活才能解决冲突。

无法重用函数

我曾经参与过一个项目,每个推出这项服务的城市都需要构建一个单独的APP。一开始我们只开了三四个城市,需要同时发布三四个APP。这些APP大约60%或70%的功能相同,但都需要添加本地定制功能。如果你在单个项目模式下开发每个APP,你可能在开始时每个项目都有相同的代码,你只需要复制它。但是,如果你需要修改这些项目,你必须逐个修改它们,然后测试每个APP。工作量直接翻倍。

业务模块之间的严重耦合

采用单一工程模式开发项目