项目发展到一定程度,就必须进行模块的拆分。模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在 Android 工程实践,目前有两种途径,一个是组件化,一个是插件化。
组件化开发
说起组件化少不了提起AS模块化的概念,其实两种方式的本质思想是一样的,都是为了代码重用和业务解耦。
模块化
模块(Module),Android Studio提出的概念,它是根据不同关注点将原项目中共享的部分或业务抽取出来形成独立module,这就类似我们集成的第三方库的SDK。 Module包含两种格式: application, library。application格式的module就可以打包成一个apk,一个library可以形成一个aar包(类似java中的jar包)。在我们实际开发中,通常会抽取第三方库、使用封装的网络库、图片库、视频库、Utils工具类、自定义View 等到一个共有的common模块中,其他模块在配置Gradle依赖后,就能够调用这些API。它 相比于包来讲,模块更灵活,耦合更低,随意插拔,想引入哪个就引入哪个。根据不同的关注点,将一个项目的可以共享的部分抽取出来,形成独立的Module,就是模块化。
组件化
组件化是基于模块化的,组件化是建立在模块化思想上的一次演进,一个变种。组件化本来就是模块化的概念,但是组件化的核心是:模块角色的可转换性,可以在打包时是设置为library,开始调试运行是设置成application。