Android Gradle(3)— FlavorDimensions,构建变体

What:

我们知道Flavor的作用是将debug和releas维度扩大,而它是基于flavor的一个扩展,另维度再次扩大,它是一个属性,全名叫做:flavorDimensions,看名字可知,要用它,必须先要有会用Flavor。可能现在你还有点迷糊,下面看个例子。

Think:

在理解了flavor的前提下(Flavor基本使用),我们需要明白一个概念—————维度!

维度在gradle中的体现是:flavorDimensions,譬如:

flavorDimensions(“money”, “channel”)

这是一个正确的维度扩展思路

  • money
    场景,一个APP,我们推出收费和免费的版本。

  • channel
    场景,不同的市场渠道。

根据这个思路来改代码:

原有:


    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }

        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
    }


    productFlavors {
        baidu {
            manifestPlaceholders = [CHANNEL: "baidu"]
        }

        xiaomi {
            manifestPlaceholders = [CHANNEL: "xiaomi"]
        }
    }

目前是四个渠道:

添加flavorDimensions后:

android{

    ... 

    flavorDimensions("money", "channel")

    productFlavors {

        vip {
            dimension "money"
        }

        free{
            dimension "money"
        }

        baidu {
            manifestPlaceholders = [CHANNEL: "baidu"]
            dimension "channel"
        }

        xiaomi {
            manifestPlaceholders = [CHANNEL: "xiaomi"]
            dimension "channel"
        }
    }

    ...
}

目前是几个渠道?8个。

逻辑上就是:

由:

debug/releas(2) * 渠道(2) = 4个

变成了:

debug/releas(2) * 渠道(2) * 新增维度vip/free(2) = 4 * 2 = 8个

如下图所示:

然后我们再从代码理解上来:

  • 只要你定义了flavorDimensions,那么你后面的每个flavor就必须要写”dimension”这个属性。
  • baidu和xiaomi是属于渠道这个维度,所以它的dimension是channel。
  • vip和free这俩个flavor是属于money这个维度(收费与免费),所以它的dimension是money。

Error:

一个常规性的思维误区,类似这么定义一个flavorDimensions:

flavorDimensions("vip", "free")

vip和free实际上是属于同一个维度,即“money”,所以这么定义是不对的。
这也是我最开始犯的思维误区。

Demo:

github

Thanks:

官方ProductFlavor配置文档
官方BuildType配置文档
不错的博客1
不错的博客2

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值