2015-05-29 84 views
3

风味是否可能基于其他风味?基于其他风味的Gradle风味

例如 的build.gradle:

productFlavors { 
    flavor1 { 
     flavorBase "main" 
    } 
    flavor2 { 
     flavorBase "main" 
    } 
    flavor3 { 
     flavorBase "main" 
    } 
    flavor4 { 
     flavorBase "flavor3" 
    } 
    flavor5 { 
     flavorBase "flavor3" 
    } 
} 

enter image description here

+0

你不能直接这样做......你能描述一个你想在不同口味之间分享哪些数据的例子吗? –

+1

例如主不包含的色彩和所有的逻辑, flavor1有自己的色彩和有一个自定义的功能,一样flavor2, flavor3包含flavor4&flavor5颜色, flavor4包含自定义功能, flavor5包含自定义功能 – bmooij

回答

2

我遇到了同样的问题和需要的东西像碱味和两个继承口味从那。

我结束了的尝试了很多事情在几个小时后最好的解决办法是:

  1. 创建额外的口味(香味4和5)一样的,你没有为1和2
  2. 为这些文件夹创建文件夹,并为通用代码/资源创建一个基础文件夹(例如,命名风格3;就像您为其他风格所做的那样)。
  3. 现在定义附加源台为您的孩子的口味

    flavor4 { 
        res.srcDirs = ['src/flavor3/res', 'src/flavor4/res'] 
        java.srcDirs = ['src/flavor3/java', 'src/flavor4/java'] 
        resources.srcDirs = ['src/flavor3/java', 'src/flavor4/java'] 
    } 
    flavor5 { 
        res.srcDirs = ['src/flavor3/res', 'src/flavor5/res'] 
        java.srcDirs = ['src/flavor3/java', 'src/flavor5/java'] 
        resources.srcDirs = ['src/flavor3/java', 'src/flavor5/java'] 
    } 
    

所以在flavor3(这是在这个意义上不是一个味道,但我把命名因为它是),你可以定义通用代码和资源。 唯一的缺点是,它不可能在基础文件夹和子文件夹中具有相同的类。

1

你可以使用香味维度来划分功能。例如:

flavorDimensions "color", "function", "data" 
productFlavors { 

    color1 { 
     flavorDimension "color" 
     // Something 
    } 
    color2 { 
     flavorDimension "color" 
     // Something else 
    } 

    functions1 { 
     flavorDimension "function" 
     // Something 
    } 
    functions2 { 
     flavorDimension "function" 
     // Something else 
    } 

    data1 { 
     flavorDimension "data" 
     // Something 
    } 
    data2 { 
     flavorDimension "data" 
     // Something else 
    }  
} 

然后你就可以使用这些尺寸类似的因式分解代码: Color1Function2Data1或Color2Function1Data1 ...

+0

这使得有可能把flavor4的功能放在flavor1的颜色上.. – bmooij

+0

不,你的味道是由每个flavorDimension中的一个组成的...... –