首页 > 解决方案 > 基于 Flavor 的 gradle 依赖版本

问题描述

我有一个具有多种口味的应用程序:flava1、、、 .....(随着时间的推移flava2flava3口味的数量不断增加)。

some-lib该应用程序使用version的依赖项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,flava3Implmentation等 因为每次添加新风味时,我们可能会忘记在依赖项中为其添加一行flava4Implmentationflava2

标签: androidgradleandroid-gradle-plugindependencies

解决方案


我试图解决这个问题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>


推荐阅读