我正在设置我的应用程序中的产品口味,遇到一个问题。我的两个产品口味非常相似,只有少量资源不同,我们称它们为 FlavorA 和 FlavorB。我想设置 FlavorA 为 FlavorB 的父级,这样 FlavorB 就可以覆盖 FlavorA 中的一些资源,然后 FlavorA 又可以覆盖 main 中的很多资源。是否有一种可以建立这样的口味层次结构的方法?目前,我需要在两个品种之间复制大量的资源才能使它工作,我想消除这种重复。
编辑:好的,我已经收到了一些回答(都被删除了),与我的问题无关,所以让我澄清一下。这与 Java 面向对象编程没有关系,我已经对此非常熟悉了。:)
我遇到的问题是,我有一个免费/付费版本的应用,还有几个只包含主题更改的白标签。付费版仅从免费版更改了少量资产(除代码更改外)。这是我的productFlavors
的样子:
productFlavors {
whiteLabelA {
applicationId "com.whiteLabelA.android"
}
whiteLabelB {
applicationId "com.whiteLabelB.android"
}
mainFree {
applicationId "com.mainFree.android"
}
mainPaid {
applicationId "com.mainFree.android.paid"
}
}
我希望mainPaid
覆盖mainFree
,因为它只更改了一些资源。我希望这样做而不是使用免费/付费的构建类型,因为白标没有付费版本,并且采用分层架构会更容易,如下所示:
mainPaid extends mainFree {
applicationId "com.mainFree.android.paid"
}
initWith
命令,允许复制gradle配置块(尽管依赖的构建类型仍需要自己的源集),但据我所知,口味没有相应的等价物。 - stkent