带有风味的 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 变量不适用于多维的主要内容,如果未能解决你的问题,请参考以下文章

VaryByCustom 不适用于会话变量

命令不适用于Powershell中的变量[重复]

如何在 playframework 中提交带有多维数组的表单并将变量传递给控制器​​的操作

使用带有两个变量的 for 循环

小写不适用于环境变量

graphQl突变查询不适用于变量