Android组件化初识

组件化初识

为什么使用组件化

对于Android插件化与组件化,都各有千秋,我之所以选择模组件化,完全因为插件化有点流氓了,各种热插拔,完全不把用户当人,埋了点,想给你什么功能就给你什么功能(其实插件对于开发者维护成本更高,搭建成本也就更高,所以还是先学习组件化)

组件化的优点
  1. 加快业务迭代速度,各个业务模块组件更加独立,不再出现业务耦合情况;
  2. 稳定的公共模块采用依赖库方式,提供给各个业务线使用,减少重复开发和维护工作量;
  3. 迭代频繁的业务模块采用组件方式,各业务研发可以互不干扰、提升协作效率,并控制产品质量;
  4. 为新业务随时集成提供了基础,所有业务可上可下,灵活多变;
  5. 降低团队成员熟悉项目的成本,降低项目的维护难度;
封装
  1. 项目架构

因为项目使用的是kotlin进行开发,所以uirouter和widegt、dblib需要依赖baselib,widegt是控件库,可以统一开发app开发中的view,需要用到资源文件,所以需要依赖res库。commonlib是基础库,集成uirouter、widegt、dblib。放一些base文件、联网封装、以及utils(原谅我uml图不会画)
这里写图片描述
2. 配置config.gradle
1. 在项目中新建config.gradle
2. 配置变量

ext{
    isBuildApp = false //false:作为Lib组件存在, true:作为application存在
}
  1. 业务库gradle配置
    1. 配置lib与Application的转化
    2. manifest的依赖,因为lib与Application所使用的manifest不同,需要区分对待
//lib与Application的转化
if (rootProject.ext.isBuildApp) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}


    //配置不同的manifest
 sourceSets {
        main {
            if (rootProject.ext.isBuildApp) {
                manifest.srcFile 'src/main/debug/AndroidManifest.xml'
            } else {
                manifest.srcFile 'src/main/release/AndroidManifest.xml'
            }
        }
    }
  1. app的gradle配置
    if (rootProject.ext.isBuildApp) {
        implementation project(':commonlib')
    } else {
        implementation project(':text')
    }
  1. 路由搭建:

因为业务库之间相互依赖关系不大,界面调整时需要使用路由,在这里我选择ARouter(阿里出品,必属精品)。当然不使用路由也可以,去配置scheme的方式启动也可以,但是这种容易出问题。因此使用uirouter进行路由表的维护。使用ARouter的注意事项,每一个业务库和app都要去依赖arouter-compiler,否则无法在该库中生成路由表。

使用

在basemodule进行修改,新建app与业务库,依赖业务库就可以。每个业务库独立开发,不相互影响,不会出现mvp、mvc、mvvm架构冲突,想怎么写就怎么写。需要依赖的第三方就放在commonlib中,大家都可以使用

使用时注意事项
  1. application

网上有反射和使用baseApp两种方式,我这里使用的是baseApp这种方式,使用时只需要配置到Application中的manif就行
2. 组件开发和打包

开发组件时只用让isBuildApp = true,就可以让组件独立运行,打relese包时需要让isBuildApp = false

  1. FileProvider

现在7.0新出的FileProvider问题相信大家都可以理解了,很多时候都需要用到,因此只要我将它放在了commonlib中,在项目中使用时需要修改该authorities就可以了。
4. config.gradle配置

config.gradle不仅可以配置参数,还可以统一配置android和依赖,依赖放在这里可以方便我们去查看维护,很方便

参考文档
  1. 组件化案例:http://blog.csdn.net/asddavid/article/details/54599688
  2. config配置:https://mp.weixin.qq.com/s/bzfe0CT4jFGVhwE2LZc1Ig
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值