前言:这不是一个关于如何在Android应用程序中使用构建类型和产品风格的问题。我了解所涉及的基本概念。这个问题更多的是试图了解哪些配置应该在构建类型中指定,哪些配置应该在产品风格中指定,以及是否有必要进行区分。为什么构建类型与产品口味不同?
本周,我一直在学习更多关于Android应用程序的gradle配置。我最初认为自己对构建类型和产品风格有很好的把握,但是我越深入了解文档,就越意识到两者之间的区别对我来说根本不清楚。
由于有一个定义良好的层次结构(从构建类型中指定的属性优先于产品风格中指定的属性),我不明白为什么需要区分构建类型和产品口味在所有。将所有属性和方法合并到产品风格DSL对象中,然后将构建类型作为(默认)风格维度对待会不会更好?
一些具体的例子,导致我的困惑:
的
signingConfig
属性可以在两种类型的建设和产品的口味......但minifyEnabled
(?而且,我认为,shrinkResources
)设置只能是在构建类型中配置。applicationId
只能在产品口味中指定......而applicationIdSuffix
只能在生成类型中指定!?
的实际问题(S):
在上述的例子:有构建类型的产品VS口味的角色之间有明显的区别?
如果是这样,理解它的最好方法是什么?
如果不是,计划是否最终将构建类型和产品风格合并到一个可配置的DSL对象中?
“其配置应该在生成类型,其配置应该在一个产品的风味来指定来指定” - - 构建类型模拟您的开发生命周期(调试,“dogfood”,发布等)。产品口味为您的分销策略建模(Google IAP vs. Amazon IAP vs. BlackBerry IAP等)。这些是独立的概念。至于其他方面,我会想象有一些技术原因与实施有关,它们是如何设定DSL的,因此如果有合并计划,我会感到惊讶。 – CommonsWare
@CommonsWare在高层次上有很多意义。是的,例如,类型/风格的顺序处理可能会限制如何以及何时可以更改整个“applicationId”。 – stkent