2015-02-05 17 views
8

In meinem Code habe ich bestimmte Vorlagen alle von einer Codebasis abgeleitet. Für jede Vorlage möchte ich bestimmte Dimensionen hinzufügen. Mit Geschmack Abmessungen und Produkt Aromen Ich habe diesen Code erreicht:Android Specific Gradle Produkt Geschmackskombinationen

flavorDimensions "template", "color" 

productFlavors { 

    templateA { 
     applicationId "com.templatea" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "template" 
    } 


    templateB { 
     applicationId "com.templateb" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "template" 
    } 

    templateC { 
     applicationId "com.templatec" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "template" 

    } 

    blue { 
     applicationId "com.blue" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "color" 
    } 

    green { 
     applicationId "com.green" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "color" 
    } 

    orange { 
     applicationId "com.orange" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "color" 
    }  

die das Ergebnis gibt (Ich habe die buildtypes ignoriert):

templateABlue

templateAGreen

templateAOrange

VorlageBBlue VorlageBGreen

templateBOrange templateCBlue

templateCGreen

templateCOrange

Natürlich ist dies das erwartete Verhalten ist, aber ich möchte so etwas erreichen:

templateA

templateBBlue

templateBOrange

templateC

templateCGreen

Somit Jede Vorlage leitet sich von einem Hauptcodebasis, und jede Vorlage verschiedene Varianten aus ihren Codebasis Herleiten haben kann. Gibt es eine Möglichkeit, anzugeben, welche Kombinationen von Flavour-Dimensionen verwendet werden können, oder um die Kombinationen auszuschließen, die ich nicht möchte? Nur um klar zu sein, jede Vorlage kann ohne Angabe einer Farbe funktionieren.

Ich hoffe meine Frage ist klar. Vielen Dank im Voraus.

Antwort

6

Sie gradle variantFilter verwenden können, um einige Konfigurationen ausschließen

Zum Beispiel:

productFlavors { 

    templateB { 
     applicationId "com.templateb" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "template" 
    } 

    templateC { 
     applicationId "com.templatec" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "template" 

    } 

    blue { 
     applicationId "com.blue" 
     versionCode 1 
     versionName "1.0.0" 

     flavorDimension "color" 
    } 
} 

android.variantFilter { variant -> 
    if(variant.getFlavors().get(0).name.equals('templateC') 
      && variant.getFlavors().get(1).name.equals('blue')) { 
     variant.setIgnore(true); 
    } 
} 
+0

Das funktioniert wie ein Charme. Danke Vincent! –