【Android 组件化】使用 Gradle 实现组件化 ( 组件模式与集成模式切换 )(一)

简介: 【Android 组件化】使用 Gradle 实现组件化 ( 组件模式与集成模式切换 )(一)

文章目录

一、模块化 与 组件化 模式控制

二、applicationId 设置

三、使用 sourceSets 配置组件模式下使用的清单文件

四、组件模式 与 集成模式 切换示例

五、完整的 Gradle 配置

1、Project 层级的 build.gradle

2、Project 层级的扩展变量定义

3、主应用的 build.gradle

4、Library 模块的 build.gradle

六、博客资源


上一篇博客 【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 ) 中 , 在顶层的 build.gradle 中定义了相关参数变量 ;


在顶层的 build.gradle 中定义全局的变量 , 用于统一管理各个 Module 的编译相关版本号 ;


全局变量可以定义在 ext 扩展 中 , 也可以定义在 gradle.properties 属性 中 ;



组件化的本质就是可以实时切换依赖库 Module 的属性 , 该 Module 是 Application 可执行模块 , 还是 Library 依赖库模块 ;






一、模块化 与 组件化 模式控制


在顶层 build.gradle 定义扩展变量 , 用于标识当前是 模块化模式 还是 组件化模式 , 模块化模式 就是默认的模式 ;


// ext 是 extension 扩展的含义
// ext 后的 {} 花括号 , 是闭包 ,
ext{
    // 是否是模块化模式
    // 集成模式 true ( 默认模式 , 模块化 )
    // 组件模式 false ( 组件化 )
    isModuleMode = false
}


如果将变量定义在 build.gradle 构建脚本中 , 需要使用 ext 扩展变量 , 在 gradle.properties 可以直接定义 ;



在 Application Module 下的 build.gradle 保持不变 :


apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'


在 Library Module 下的 build.gradle 中控制当前 Module 是 Application 模块还是 Library 模块 ;


// 根据 isModuleMode 动态切换 集成模式 / 组件模式
if (isModuleMode){
    // 集成模式
    apply plugin: 'com.android.library'
}else{
    // 组件模式
    apply plugin: 'com.android.application'
}
apply plugin: 'kotlin-android'






二、applicationId 设置


Application 模块在 " android/defaultConfig " 层级下 , 必须有 applicationId ;


Library 模块不需要配置 applicationId ;



这里需要进行分别处理 , 如果是 Library 模块 , 在 组件模式 下 , 必须配置 " android / defaultConfig / applicationId " 选项 ; 但是在 集成模式 下 , 必须不能配置 " android / defaultConfig / applicationId " 选项 ;



主要配置如下 : 在 集成模式 下 , 不配置 applicationId ; 在 组件模式 下 , 才配置 applicationId 选项 ;


android {
    defaultConfig {
        if (!isModuleMode){
            // 组件模式 : 必须配置 applicationId
            applicationId appId["library1"]
        }
    }
}


注意 : 在 Application Module 下不进行上述配置 , 只有在 Library Module 下才进行上述配置 ;






三、使用 sourceSets 配置组件模式下使用的清单文件


使用 sourceSets 资源配置选项 , 可以配置 java , manifest , res , assets , 等目录 ;



Android Studio 中


默认的 Java 代码的路径是 Component\app\src\main\java ,

默认的清单文件路径是 Component\app\src\main\AndroidManifest.xml ,

默认的资源路径是 Component\app\src\main\res ,

默认的 Assets 资源路径是 Component\app\src\main\assets


在 Library Module 中 , 一般不会配置 Launcher Activity , 因此在 组件模式 下 , 需要指定一个新的 AndroidManifest.xml 清单文件 ;


这里在 main 目录下创建 component 目录 , 组件化 相关文件 , 都放在该目录中 ;



下图中 , 蓝色矩形框中是默认的清单文件 , 在 集成模式 下的 Library Module 中使用 ; 红色矩形框中是 组件模式 下使用的清单文件 , 在 Application Module 中使用 ;




配置 清单文件 示例 :


android {
    compileSdkVersion androidConfig.compileSdkVersion
    buildToolsVersion "30.0.3"
    defaultConfig {
        if (!isModuleMode){
            // 组件模式 : 必须配置 applicationId
            applicationId appId["library2"]
        }
        // 资源配置
        sourceSets{
            main{
                if (!isModuleMode){
                    // 组件化模式下使用 ComponentAndroidManifest.xml 作为清单文件
                    manifest.srcFile 'src/main/component/AndroidManifest.xml'
                }
            }
        }
    }
}



四、组件模式 与 集成模式 切换示例


将 component.gradle 中的 isModuleMode 变量设置为 true , 当前的模式就是默认的模块化模式 ;


编译后效果如下 : 1 11 个 Application 应用 , 2 22 个 Library 应用 ;


image.png



将 component.gradle 中的 isModuleMode 变量设置为 false , 当前的模式就是 组件模式 ;

image.png

目录
相关文章
|
22天前
|
设计模式 Android开发 Kotlin
Android经典实战之Kotlin委托模式和by关键字
本文介绍了Kotlin中`by`关键字在类及属性委托中的运用,通过实例展示了如何利用类委托简化接口实现,以及如何借助标准与自定义属性委托管理属性的读写操作。通过`by`关键字的支持,Kotlin使得委托模式的实现更为直观且高效。
41 4
|
1月前
|
缓存 负载均衡 Java
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
文章标题为“OpenFeign的Ribbon负载均衡详解”,是继OpenFeign十大可扩展组件讨论之后,深入探讨了Ribbon如何为OpenFeign提供负载均衡能力的详解。
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
|
20天前
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
231 0
Android Studio: 解决Gradle sync failed 错误
|
1月前
|
Java 开发工具 Maven
Flutter和Android中覆盖gradle中的repositories仓库地址
Flutter和Android中覆盖gradle中的repositories仓库地址
87 4
|
1月前
|
Android开发 Kotlin
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
32 3
|
20天前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
31 0
|
29天前
|
IDE API 开发工具
与Android Gradle Plugin对应的Gradle版本和Android Studio版本
与Android Gradle Plugin对应的Gradle版本和Android Studio版本
149 0
|
1月前
|
Android开发
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
137 0
|
2月前
|
存储 前端开发 测试技术
Android Kotlin中使用 LiveData、ViewModel快速实现MVVM模式
使用Kotlin实现MVVM模式是Android开发的现代实践。该模式分离UI和业务逻辑,借助LiveData、ViewModel和DataBinding增强代码可维护性。步骤包括创建Model层处理数据,ViewModel层作为数据桥梁,以及View层展示UI。添加相关依赖后,Model类存储数据,ViewModel类通过LiveData管理变化,而View层使用DataBinding实时更新UI。这种架构提升代码可测试性和模块化。
132 2
|
2月前
|
开发者 Windows
三类代码协同模式问题之判断项目的协同规模决定采用集成分支问题如何解决
三类代码协同模式问题之判断项目的协同规模决定采用集成分支问题如何解决