带有风味的 ext 变量不适用于多维
Posted
技术标签:
【中文标题】带有风味的 ext 变量不适用于多维【英文标题】:ext variables with flavor doesn't work with multiple dimension 【发布时间】:2019-07-14 03:34:32 【问题描述】:我的结构与下面的代码相同,我想将前缀添加到 applicationId 和不带点的后缀,并在 gradle 文件的末尾使用 applicationId 值。
我不想使用 applicationIdSuffix,因为它会自动添加点,我无法在 gradle 上获得它的值,也无法获得完整的 applicationId。
flavorDimensions "type", "version"
productFlavors.all
ext.appIdPrefix = "com.example"
ext.appId = ""
ext.appIdSuffix = ""
productFlavors
flavor1
dimension "type"
appId = ".flavor1"
full
dimension "version"
appIdSuffix = "Full"
productFlavors.all
applicationId appIdPrefix + appId + appIdSuffix
现在,当我使用“flavor1full”运行我的应用程序时,applicationId 仅为“com.exmaple.flavor1”并且没有获得 appIdSuffix 的值
我该如何解决?
【问题讨论】:
【参考方案1】:不要为每种风格更改应用 ID,而是尝试迭代 applicationVariants:
applicationVariants.all variant ->
def flavors = variant.productFlavors
variant.mergedFlavor.applicationId = flavors[0].appId + flavors[1].appIdSuffix ;
由于有两种构建类型,这将遍历每种风味组合两次。另见Multi-Dimension Flavor ApplicationId
还要注意问题中的一个错字:appIdSuffix "Full"
应该是 appIdSuffix="Full"
【讨论】:
【参考方案2】:假设您的最终目标是使用不同的应用程序 ID 构建不同的应用程序风格,您应该能够使用这样的东西:
flavorDimensions "type"
productFlavors.all
ext.appIdPrefix = "prefix"
ext.appId = "hello.world"
productFlavors
partial
dimension "type"
ext.appIdSuffix = "suffix1"
full
dimension "type"
ext.appIdSuffix = "suffix2"
productFlavors.all
applicationId appIdPrefix + "." + appId + "." + appIdSuffix
根据选择的构建变体,以上内容将为您生成以 suffix1 或 suffix2 结尾的应用程序 ID。不确定我是否理解您为什么需要另一个维度。
【讨论】:
是的,但是多维度的问题。如果完全分配给另一个维度并对 ext 中的第三个变量进行更改。它不会出现在applicationId中以上是关于带有风味的 ext 变量不适用于多维的主要内容,如果未能解决你的问题,请参考以下文章