基于风味的gradle依赖版本

时间:2019-05-15 09:01:16

标签: android gradle android-gradle dependencies

我有一个具有多种口味的应用程序:flava1flava2flava3 .....(随着时间的流逝,口味的数量不断增加)。

该应用使用版本some-lib的依赖项X.X.X。但是其中一个(例如flava2)要求该依赖项的版本为X.X.Y,而其他风味继续使用X.X.X

我尝试过这样使用基于风味的依赖项行:

dependencies {
  implementation 'com.example:some-lib:X.X.X'
  flava2Implementation 'com.example:some-lib:X.X.Y'
}

,但最终将始终使用X.X.X。我什至尝试更改这两行的顺序(先放置flava2Implementation),但这也不起作用。

是否有其他方法无需为flava1Implmentation以外的所有其他类型显式编写flava3Implmentationflava4Implmentationflava2等来完成此操作?因为每次添加新的风味时,我们都可能会忘记在依赖项中添加一行

1 个答案:

答案 0 :(得分:0)

我尝试用dimensions解决此问题:

flavorDimensions "flav1", "other"
productFlavors {
    flav1 {
        dimension "flav1"
        applicationIdSuffix ".flav1"
    }
    flav2 {
        dimension "other"
        applicationIdSuffix ".flav2"
    }
    flav3 {
        dimension "other"
        applicationIdSuffix ".flav3"
    }

    forOther {
        dimension "other"
    }

}

然后,我们只能添加forOther

的实现
 implementation 'com.example:some-lib:X.X.X'
flav1Implementation 'com.example:some-lib:X.X.Y'

forOtherImplementation 'com.example:some-lib:Z.Z.Z'

因为forOther/ <included in flav2/flav3>