2015-05-29 96 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中的一個組成的...... –