Android Gradle 插件ProductFlavor 配置 ( AppExtension#variantFilter 过滤变体属性 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件ProductFlavor 配置 ( AppExtension#variantFilter 过滤变体属性 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、AppExtension#variantFilter 过滤变体属性



ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html

build.gradle#android 模块配置文档 : android-gradle-dsl/2.3/com.android.build.gradle.AppExtension.html


AppExtension#variantFilter 属性的作用是 , 控制哪些变体需要被编译 ;

属性原型 :

Action<VariantFilter> variantFilter

文档链接 : AppExtension#variantFilter


在上一篇博客 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 ) 中 , 分析了 ProductFlavor#dimension 维度属性 以及 AppExtension#flavorDimensionList 属性 和 AppExtension#flavorDimensions 方法 ;

创建了 2 2 2 个维度

    // 创建 2 个维度
    flavorDimensions("tom", "jerry")

以及 4 4 4 个风味

    // 创建产品风味 , 打渠道包就是在这里实现
    productFlavors 
        alpha
            // 此处可以指定 defaultConfig 配置
            // 如果不指定 , 则默认使用 defaultConfig 默认配置
            // 此处设置属性 , 可以覆盖 defaultConfig 配置
            dimension "tom"
        
        beta
            dimension "tom"
        
        delta
            dimension "jerry"
        
        pro
            dimension "jerry"
        
    

在 Build Variants 面板中 , 可以看到不同的打包配置 ;

AppExtension#variantFilter 过滤变体属性用法如下 :

在 build.gradle 的 " android " 层级下配置如下属性 , 遍历了一遍所有的 变体 , 将包含 " alpha " 的变体都忽略 ;

    // 设置过滤 带 alpha 的变体
    variantFilter 
        variant ->
            variant.flavors.each 
                if(it.name.contains("alpha")) 
                    setIgnore(true)
                
            
    

此时 , 在 " Build Variants " 面板中 , 已经过滤了 带 " alpha " 的变体 ;

配置了 productFlavors , 在创建 资源文件时 , 可以选择不同的 源集 :

以上是关于Android Gradle 插件ProductFlavor 配置 ( AppExtension#variantFilter 过滤变体属性 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )