Android 组件化开发 使用介绍

组件化介绍以及搭建步骤


前言

随着APP开发功能越来越丰富,组件化开发已逐渐成为架构的优选。组件化是指解耦复杂系统,将多个功能模板拆分、重组的过程。组件化的目的是将相对集中的功能分列与同一Module中,单一Moudle能够独立运行,大大缩减每次项目的编译时间,增加同类型项目的复用性


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建架构

1.创建壳工程

也是创建一个安卓项目
在这里插入图片描述

2.创Module项目

这里我们创建三个module项目为例,分别为common ,moduleone,muduletwo,这里的common作为公共组件module使用
右击app -> New -> Module,选择 Android Library
在这里插入图片描述
在这里插入图片描述
重复上面的三个步骤 创建三个module,即为组件
在这里插入图片描述

3.build.gradle的配置

观察发现壳工程的build.gradle 使用的apply plugins 是com.android.application

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

mudule项目使用的是com.android.library

plugins {
    id 'com.android.library'
    id 'org.jetbrains.kotlin.android'
}

可以通过改变 module里的 apply plugins 为com.android.application

3.壳工程增加module的引用

点击File-> Project Structure-> Dependencies,选择app然后点+
在这里插入图片描述
在这里插入图片描述

5.common组件引用修改

将implementation 只能在当前组件使用第三方库修改为全局使用api的方式引用

dependencies {
    api 'androidx.core:core-ktx:1.8.0'
    api 'androidx.appcompat:appcompat:1.4.1'
    api 'com.google.android.material:material:1.5.0'
    api 'androidx.constraintlayout:constraintlayout:2.1.3'
}

6.在项目的的build中添加如下配置

allprojects{
    repositories {
        maven{ url 'https://maven.aliyun.com/repository/google'}
        mavenCentral()
        gradlePluginPortal()
    }
}

在这里插入图片描述
并去掉settings.gradle模块下的dependencyResolutionManagement
在这里插入图片描述

7.在需使用 common 的模块的build.gradle 中添加对common的依赖

dependencies {
    implementation project(path: ':common')
}

在这里插入图片描述
这样我们可以在moduleone中使用common的资源文件了
在这里插入图片描述

二、组件独立运行

前面已经介绍了module是作为壳app的组件运行 还是单独作为app运行是根据apply plugins 中插件的配置com.android.application 还是 com.android.library来决定,如果只有少量组件时可以使用手动修改的方式,但是如果组件过多则过于麻烦,这里使用一个全局配置开关来设置

1.在项目的build.gradle中添加全局配置 isModule

使用变量配置来控制module是以组件运行还是app的方式独立运行

ext{
    isModule=false
}

在这里插入图片描述

2.在module的build.gradle中添加控制语句

if (isModule){
    apply plugin: 'com.android.application'
}else {
    apply plugin: 'com.android.library'
}

在这里插入图片描述 设置isModule=true,然后Sync Now 一下可以发现module变成可运行状态
在这里插入图片描述

3.moduleone的mainfest没有Launcher Activity

如果在现有架构模式下增加

            android:name=".ModuleAActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

在合并mainfest时会有冲突,为了解决这个问题,我们为moduleone独立运行是创建独立的AndroidManifest.xml
文件,在mian目录下新建mainfest目录,新建AndroidManifest.xml在文件增加以下在这里插入图片描述
通过定义的全局isModule字段来配置不同的场景下使用不同的mainfest文件,在moduleone的build.gradle下配置如下

 sourceSets {
        main {
            if (isModule) {
                manifest.srcFile('src/main/mainfest/AndroidManifest.xml')
            } else {
                manifest.srcFile('src/main/AndroidManifest.xml')
            }
        }
    }

在这里插入图片描述

三、统一版本号管理

由于不同的module不同的人开发,容易出现不同的module版本号不一致的问题,这里项目的build.gradle 增加一个全局的配置如下

  android=[
            compileSdkVersion: 33,
            buildToolsVersion: '31.0.0',
            minSdkVersion: 24,
            targetSdkVersion:33,
            versionCode :1,
            versionName:"1.0"
    ]

在这里插入图片描述
在组件中引用

 compileSdk rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion
    defaultConfig {
        minSdk rootProject.ext.android.minSdkVersion
        targetSdk rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName
    }

在这里插入图片描述

四、项目源码地址

https://download.csdn.net/download/believeinbelieve/87790664

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shunsix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值