我所理解的Android模块化(一)——模块化概念和路由

此文属于finddreams的原创博客,转载请注明出处:http://blog.csdn.net/finddreams/article/details/78339809

  《我所理解的Android模块化(一)——概念和路由》
  《我所理解的Android模块化(二)——模块通信和模块间服务调用》
  《我所理解的Android模块化(三)——模块可插拔单独编译运行》
  《我所理解的Android模块化(四)——常见问题和注意事项》

  笔者在公司的项目中使用模块化的方式开发APP已经快一年的时间,其中经历过以模块化的方式来重构项目中一些相对来说业务比较独立的模块。遇到了一些问题,也积累了一些经验,所以想谈一谈我对Android模块化的理解,也希望能帮助到大家。

  我们都知道APP的体积越大编译一次所花的时间就会越长,这样每次修改编译想看效果要等很久才能看到,这样既没有效率,同时也影响了开发者的心情。而模块化的方式可以把不同模块分离开来,分别编译运行,不仅分工更加明确,耦合性降低,同时降低了编译时间,提高了开发效率。

  我们公司APP最后打包发布的时候,apk的体积是40M+,编译出来在Windows系统上需要10分钟左右,在Linux上则需要3分钟。如果以传统的项目结构方式来运行的话,肯定是效率很低的,后来通过插件化方式改造,我们把一些相对独立的其他业务和第三方业务抽离成模块化,在平时的开发过程中,如果没有涉及到这些模块化业务的开发,我们是不会把他们集成进来,只有在最后打包发布的时候才一起集成,这样的做法大大的降低了编译时间(Windows上需要1分钟,Linux 上只需30秒即可),平时开发的时候只集成必要的base模块和正在开发的业务模块,这样开发中的apk的体积就减少了(减少到15M),运行速度也就提升了,然后发布上线的时候就把所有的模块集成进来一起打包发布,明显的提高了开发效率。

  说完了笔者使用模块化的背景,再来谈谈我对Android模块化的一些理解,如果理解的很浅显或者狭隘的话,还请各位多多指教;

  下面说几个概念:

  模块化:指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程。

  插件化:和模块化差不多,只是它是可以把模块打包成独立的apk,可以动态的加载,删除,独立的插件apk可以在线下载安装,有利于减少apk的体积和实现模块的热修复。目前热门的插件化方案有:阿里的atlas,360公司的RePlugin,滴滴的VirtualAPK等等;

  组件化:组件是指通用的功能或者UI库可以做成一个组件,比如说分享,支付可以当成组件,下拉刷新可以做成组件,模块化项目是根据业务抽离的,而组件化项目则是根据功能UI抽离的,一个模块可以依赖多个组件。组件则不能再依赖其他组件。

这里写图片描述 这里写图片描述
        模块化之前的项目                模块化之后的项目

                 这里写图片描述
                       模块化的示例项目GIF动图

模块化的要解决的问题

  1. 模块间页面跳转(路由);
  2. 模块间事件通信;
  3. 模块间服务调用;
  4. 模块的独立运行;
  5. 其他注意事项;

模块的划分

如上面模块化之后的示例项目结构图片,我们来分析一下:

app : 是要最终把所有模块集成在一起打包发布出去的项目:
lib_pay,lib_share : 则是组件库,分别是支付,和分享库;
module_base :base模块,是所有子模块的父类,有各子模块所通用的业务和资源图片

  • 13
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值