假设我在两个级别都定义了一个常量:在构建类型中,我将其设置为"mybuild",并将其设置为"myflavor".
比如在这里:
buildTypes {
debug {
resValue "string", "analytics_key", "XXX_SANDBOX_KEY_XXX"
}
}
productFlavors {
appA {
resValue "string", "analytics_key", "XXX_KEY_FOR_A_XXX"
}
appB {
resValue "string", "analytics_key", "XXX_KEY_FOR_A_XXX"
}
}
Run Code Online (Sandbox Code Playgroud)
我想将不同应用程序(即风味)的事件发送到我的分析平台中的不同帐户.但是,如果我正在调试,我想将它们全部发送到我的沙盒帐户.
最初的问题是:哪个优先?从我的测试中,我已经可以回答:构建类型中的那个.
然而,更有趣的是:这有保证吗?
(或者,有更好的方法吗?)
这有保证吗?
对于同一级别的事物(例如,相同的模块),构建类型通常被认为优先于产品风格.引用文档:
通常,构建类型配置是覆盖其他配置的覆盖.例如,Build Type的packageNameSuffix被附加到Product Flavor的packageName.
但是,清单合并相当复杂,需要自己的一组文档.
在您的情况下,您正在创建资源.在这种情况下,它应该遵循相同的规则,就像您将这些值作为字符串资源放在相关的源集中一样:
所有资源(Android资源和资产)都使用覆盖优先级,其中构建类型会覆盖产品风格,后者会覆盖主要的sourceSet.
如果resValue开始的行为与使用sourcesets的等效行为不同,我会认为这是一个错误.
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |