【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )(一)

简介: 【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )(一)

文章目录

一、组件模式下为组件 Module 指定 Java 源码路径

二、主应用的角色

三、BuildConfig 中生成当前 组件 / 集成 模式字段

四、Library Module 中的代码示例

1、build.gradle 完整代码

2、集成模式 下的 清单文件

3、组件模式 下的 清单文件

4、组件模式 下的 Application 类

五、博客资源





一、组件模式下为组件 Module 指定 Java 源码路径


在 1 11 个 Android 应用中只能存在 1 11 个 Application 类 , 但是组件化开发时 , 如果 Library 模块动态修改成 Application 模块 , 还想自己定义一个 Application 类 , 这里参考上一篇博客 【Android 组件化】使用 Gradle 实现组件化 ( 组件模式与集成模式切换 ) 三、使用 sourceSets 配置组件模式下使用的清单文件 章节 , 使用 sourceSets 资源配置 , 配置 Java 代码 ;



在组件模式下 , 如果需要配置一些额外的 Java 类 , 可以在 sourceSets 中进行配置 ;


Java 源文件目录 , 默认是在 " Component\app\src\main\java " 目录下 , 该目录也是可以自定义的 ;



在 sourceSets 的 main 中 , 使用 java.srcDirs 可以配置多个目录 , 路径字符串之间使用逗号隔开 ;


android {
    defaultConfig {
        if (!isModuleMode){
            // 组件模式 : 必须配置 applicationId
            applicationId appId["library1"]
        }
        // 资源配置
        sourceSets{
            main{
                if (!isModuleMode){
                    // 组件化模式下使用 ComponentAndroidManifest.xml 作为清单文件
                    manifest.srcFile 'src/main/component/AndroidManifest.xml'
                    // 配置额外的 Java 源文件目录
                    java.srcDirs 'src/main/component/java', 'src/main/java'
                }else{
                    // 集成模式 下使用默认设置
                }
            }
        }
    }
}



集成模式 下的目录效果 : src/main/component/java 目录是灰色的 , 并不是 Java 源码目录 ; ( 该模式下 依赖工程 是 Library Module )


image.png



组件模式 下的目录效果 : src/main/component/java 目录是蓝色的 , 是正式的 Java 源码目录 ; ( 该模式下 依赖工程 是 Application Module )


image.png






二、主应用的角色


组件化中的主应用 , 仅作为一个壳存在 , 一般不实现实际功能 , 应用的功能都是由各个组件进行实现的 ;


在主应用的 build.gradle 中配置了如下依赖库 ;


dependencies {
    if (isModuleMode){
        // 集成模式下才能引用这两个 Library Module
        implementation project(':library1')
        implementation project(':library2')
    }
}



如果是在 集成模式 中 , 会引入两个 Library 模块 ; 在 组件模式 中 , 两个模块是 Application 模块 , 不能引入到应用中 , 因此就不能依赖这两个 Module ;


这里就需要 主应用 与 2 22 个 Library 模块 的 耦合性不能太高 ;






三、BuildConfig 中生成当前 组件 / 集成 模式字段


如果想要在代码中 , 根据当前的组件化状态 ( 组件模式 / 集成模式 ) 进行不同的开发 , 就需在代码中获取当前 Module 是 Library Module ( 集成模式 ) 还是 Application Module ( 组件模式 ) ;



这里可以在 build.gradle 进行一些配置 , 在 BuildConfig.java 配置中 , 生成一些选项 , 如下代码就可以在 BuildConfig.java 类中生成 public static final boolean isModuleMode = false; 字段 ;


android {
    defaultConfig {
        // 在 BuildConfig 中生成如下字段
        // public static final boolean isModuleMode = false;
        buildConfigField("boolean", "isModuleMode", String.valueOf(isModuleMode))
    }
}


生成的 BuildConfig.java 类 :


/**
 * Automatically generated file. DO NOT MODIFY
 */
package kim.hsl.library1;
public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "kim.hsl.library1";
  public static final String BUILD_TYPE = "debug";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
  // Field from default config.
  public static final boolean isModuleMode = false;
}

image.png

目录
相关文章
|
15天前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
33 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
22天前
|
编解码 Linux
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
《FFmpeg开发实战》书中指导如何在Linux环境下为FFmpeg集成libwebp以支持WebP图片编解码。首先,从GitHub下载libwebp源码,解压后通过`libtoolize`,`autogen.sh`,`configure`,`make -j4`和`make install`步骤安装。接着,在FFmpeg源码目录中重新配置并添加`--enable-libwebp`选项,然后进行`make clean`,`make -j4`和`make install`以编译安装FFmpeg。最后,验证FFmpeg版本信息确认libwebp已启用。
38 1
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
|
28天前
|
Linux 编解码 Python
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
AV1是一种高效免费的视频编码标准,由AOM联盟制定,相比H.265压缩率提升约27%。各大流媒体平台倾向使用AV1。本文介绍了如何在Linux环境下为FFmpeg集成AV1编解码库libaom、libdav1d和libsvtav1。涉及下载源码、配置、编译和安装步骤,包括设置环境变量以启用这三个库。
45 3
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
|
9天前
|
C# Android开发 开发者
Android gradle编译时字节码处理
Android gradle编译时字节码处理
13 1
|
14天前
|
编解码 Windows
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是开源MPEG-4视频编码器,与DivX相似但后者非开源。早期MP4常使用XviD或DivX编码,现已被H.264取代。在Windows上集成FFmpeg的XviD编解码库libxvid,需访问<https://labs.xvid.com/source/>下载源码,解压后在MSYS环境中配置、编译和安装。之后重新配置FFmpeg,启用libxvid并编译安装。详细步骤包括configure命令、make和make install。成功后,通过`ffmpeg -version`检查是否启用libxvid。更多音视频开发技术可参考《FFmpeg开发实战:从零基础到短视频上线》。
55 0
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
|
25天前
|
Java API 项目管理
Java一分钟之-Gradle插件开发:自定义构建逻辑
【6月更文挑战第5天】Gradle插件开发详解:从入门到发布。文章介绍如何创建自定义插件,强调依赖管理、任务命名和配置阶段的理解。示例代码展示插件实现及避免常见问题的方法。最后,讨论插件的发布与共享,助你提升构建效率并贡献于开发者社区。动手实践,打造强大Gradle插件!
48 3
|
2天前
|
敏捷开发 jenkins 测试技术
软件测试中的自动化与持续集成:提高开发效率和产品质量
在软件开发的生命周期中,测试阶段扮演着至关重要的角色。随着敏捷开发模式的普及,自动化测试和持续集成(CI)已成为确保软件质量和加快交付速度的关键策略。本文深入探讨了自动化测试和持续集成的概念、实施步骤及其对软件开发流程的影响。通过引用最新的行业研究和案例分析,文章揭示了这些技术如何帮助团队减少人为错误,缩短反馈循环,并最终提升产品的稳定性和用户体验。
|
9天前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
20 0
|
2月前
|
编解码 5G Linux
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
AVS3是中国首个8K及5G视频编码标准,相比AVS2和HEVC性能提升约30%。解码器libuavs3d支持8K/60P视频实时解码,兼容多种平台。《FFmpeg开发实战》书中介绍了在Windows环境下如何集成libuavs3d到FFmpeg。集成步骤包括下载源码、使用Visual Studio 2022编译、调整配置、安装库文件和头文件,以及重新配置和编译FFmpeg以启用libuavs3d。
45 0
FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
|
2月前
|
编解码 Linux 5G
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3,中国制定的第三代音视频标准,是首个针对8K和5G的视频编码标准,相比AVS2和HEVC性能提升约30%。uavs3d是AVS3的解码器,支持8K/60P实时解码,且在各平台有优秀表现。要为FFmpeg集成AVS3解码器libuavs3d,需从GitHub下载最新源码,解压后配置、编译和安装。之后,重新配置FFmpeg,启用libuavs3d并编译安装,通过`ffmpeg -version`确认成功集成。
39 0
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器