Android组件化工程结构以及项目实施

本文详细介绍了Android组件化的优点,包括代码解耦、方便协作和复用,以及组件化工程的结构。文章阐述了如何通过模块化管理、ARouter组件通信、单独及整体调试、资源管理和Application初始化等实现项目组件化。此外,还探讨了组件代码混淆的处理和组件库的独立发布与维护策略。
摘要由CSDN通过智能技术生成

组件化优点

1、代码解耦
2、方便多人协作开发
3、可复用性高,不同的APP可复用不同组件
4、每个组件可独立运行,方便开发调试

组件化工程结构

**第一层:**空壳app。应用的入口,存放启动页,依赖所有业务组件

**第二层:**业务组件。根据不同业务横向拆分出来的业务组件。任何一个业务组件都可以独立出来成为一个应用

**第三层:**功能组件。通用业务是从应用业务中抽取出来的交集,从应用上说,他属于业务,而针对应用业务而言则更像是一种功能,好比登录这种业务功能,不需要关心有没有界面,当中是怎样的逻辑,只需要提供结果即可

**第四层:**公共服务组件。可存放各个组件对外暴露的接口,接口实现在组件内部,可通过ARouter或者DI(依赖注入)实现跨组件服务调用;可存放路由跳转等信息和路由服务等与业务相关Base代码

**第五层:**基础组件。网络请求、图片加载、存储、utils、通用View的封装

项目组件化

1、代码解耦

代码解耦主要是从两个方面,其一是公共代码的抽取和归纳,其二是面向接口编程,接口下沉。

公共代码的抽取和归纳:
部分通用的功能性的代码抽出成utils,上层只关心结果,不关心具体的实现逻辑

面向接口编程:
当上层需要底层的某项服务时,将服务抽象成一个接口,上层持有这个接口,而不是具体的类,那么当底层发生了改变或是实现的时候,上层只需要实例化对应的新实现类即可,如果把这层实例化也作为接口去作,那么上层完全不用改变就能拥抱变化。

依赖注入:
横向的业务代码或者功能实现可以进行依赖注入的方式来达到解耦的目。

工程结构解耦:
结构的解耦其实一般针对应用的整体业务而言进行的一个"分Module"操作,根据业务类型的横向拆分,业务属性的纵向拆分以及功能SDK下沉。

2、组件module gradle管理

  • 在根目录下建立一个config.gradle文件
  • 编写对应的依赖常量代码
  • 在app module 的build.gradle中引用
  • 注意,如果想要在别的.gradle中使用声明的这些常量,一定要在抽取的xx.gradle文件中将对应的代码块用"ext"进行包裹

config.gradle

ext {
    android = [
            compileSdkVersion: 28,
            targetSdkVersion : 28,
            minSdkVersion    : 21,
    ]

    version = [
            retrofitSdkVersion      : "2.4.0",
            androidSupportSdkVersion: "28.0.0",
            butterknifeSdkVersion   : "8.8.1",
            espressoSdkVersion      : "3.0.1",
            canarySdkVersion        : "1.5.4",
            glideSdkVersion         : "4.8.0"
    ]


    dependencies = [
            //support
            "appcompat-v7"                : "com.android.support:appcompat-v7:${version["androidSupportSdkVersion"]}",
            "design"                      : "com.android.support:design:${version["androidSupportSdkVersion"]}",
            "support-v4"                  : "com.android.support:support-v4:${version["androidSupportSdkVersion"]}",
            "cardview-v7"                 : "com.android.support:cardview-v7:${version["androidSupportSdkVersion"]}",
            "annotations"                 : "com.android.support:support-annotations:${version["androidSupportSdkVersion"]}",
    ]
}

在工程根目录的build.gradle中加上如下代码:

apply from: "config.gradle"

在app module中的build.gradle中引用(其他组件module中引用类似):

apply plugin: 'com.android.application'


android {

    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    defaultConfig {
        applicationId "cn.com.xxx"
        minSdkVer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值