代码之家  ›  专栏  ›  技术社区  ›  Moaz Rashad

具有flavor的ext变量不适用于多维

  •  0
  • Moaz Rashad  · 技术社区  · 6 年前

    我不想使用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”运行我的应用程序时,应用程序ID仅为“com.exmaple.flavor1”,并且没有得到appIdSuffix的值

    0 回复  |  直到 5 年前
        1
  •  1
  •   Zbynek    6 年前

    不要为每种口味更改应用程序ID,而是尝试迭代应用程序变体:

    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
  •  0
  •   ror    6 年前

    假设您的最终目标是使用不同的应用程序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
    }