组件化搭建从0到1的过程

组件化搭建从0到1的过程

组件和插件

1.组件化是将业务根据类型分成不同的model然后通过壳app来组装起来,这样的做的好处是,当项目体积很大的时候会让你的项目结构更清晰.并且可以通过让model中添加application也可以单独运行起来提高开发效率.

2.插件主要是每个插件都是一个apk,动过动态加载来运行某个插件,并且每个插件apk的方法数目上线都是65k,组件化最后打包是合并所以整体是受65k限制的.

项目结构

这里写图片描述

app是主项目,basecomponent是基础model,mylibrary是组件.

主要的步骤实现

1.在app或者是其他model的build.gradle下面不能再使用下面的配置

apply plugin: 'com.android.application'

然后在根目录下的gradle.properties添加下面添加配置,声明主app.

mainmodulename=app

上面设置完成基本上就区分开主app和组件model了

2.然后引入基础的一个配置,并且在所有的model中引用,这样基本将组件model打包到主app中的操作就有了.

apply plugin: 'com.dd.comgradle'//这个是构建脚本,包含比较多的基础操作,有兴趣的可以了解一下,使用的是groovy语言

3.然后是确定依赖关系了,我们的组件分为几个大类:基础组件,业务组件,主app.

他们的依赖关系是app组件要依赖所有其他的组件,业务组件要依赖所有的基础组件.

业务组件依赖在build.gradle中引入,如下图

这里写图片描述

主app的依赖使用的配置是通过gradle.properties文件实现,主要是打包的时候动过读取配置文件来决定把哪些组件打包到apk包中.如下图

这里写图片描述

4.上面的都处理完毕后,基本上组件化的框架就搭建出来,然后为验证,我们简单通过组件间的UI跳转来测试一下,这里用到了阿里的路由跳转.

集成ARouter到项目中来

1.你需要再每个model中引入如下依赖

annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'

然后在基础的basecomponent引入如下依赖

api 'com.alibaba:arouter-api:1.3.1'

2.然后需要再application中进行初始化操作,我是在基类里做的初始化

@Override
    public void onCreate() {
        super.onCreate();
        if (DebugUtil.isDebug()) { // 这两行必须写在init之前,否则这些配置在init过程中将无效
            ARouter.openLog();     // 打印日志
            ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
        }
        ARouter.init(this);
    }

3.然后在你需要跳转的UI上进行一下注册,我是在基类里做的初始化

public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ARouter.getInstance().inject(this);

    }
}

完成上面的操作基本上就准备好了,剩下的就是按照规则跳转.

这里简单介绍一下,详细的可以去看官网

上面完成基本最简陋的框架已经出来了

期间遇到的问题记录

1.图一问题?
这里写图片描述

需要在最外面的gradle.properties里面加上mainmodulename=app

2.图二问题?
这里写图片描述

需要将app.gradle里面defaultConfig配置中的applicationId删除,如下图

这里写图片描述

3.图4的问题?
这里写图片描述

解决方案为在报错的model下添加

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}

4.关于AndroidManifest.xml合并的问题(实现跨组件跳转)?

你需要再最外层的AndroidManifest.xml注册你的activity,还有就是你的

//需要再跳转到的UI地方注册,比如baseActivity
ARouter.getInstance().inject(this);

5.基础库中依赖过的库,其他组件中是不需要重复依赖的不过要注意需要使用api来引入

在Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implementation的,如果没有错,那就用implementation,如果有错,那么使用api指令。使用implementation会使编译速度有所增快

finish

最后希望有问题大家指正.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值