Recherche…


Remarques

Les caractéristiques du produit prennent en charge les mêmes propriétés que defaultConfig car defaultConfig appartient en fait à la classe ProductFlavor. Cela signifie que vous pouvez fournir la configuration de base pour toutes les defaultConfig {} bloc defaultConfig {} , et que chaque version peut remplacer l'une de ces valeurs par défaut, par exemple un pplicationId .

Comment configurer le fichier build.gradle

android {
    ...
    defaultConfig {...}
    buildTypes {...}
    productFlavors {
        demo {
            applicationId "com.example.myapp.demo"
            versionName "1.0-demo"
        }
        full {
            applicationId "com.example.myapp.full"
            versionName "1.0-full"
        }
    }
}

Constantes de saveur et ressources dans build.gradle

Vous pouvez utiliser gradle pour avoir des constantes BuildConfig et des valeurs res sur une base par saveur. Ajoutez simplement la valeur à la saveur que vous souhaitez prendre en charge.

android {
    defaultConfig {
        resValue "string", "app_name", "Full App"
        buildConfigField "boolean", "isDemo", "false"
    }
    productFlavors {
        demo {
            resValue "String", "app_name", "Demo App"
            buildConfigField "boolean", "isDemo", "true"
        }
        full {
            // use default values
        }
    }
}

Gradle fera toutes les fusions / remplacements pour vous. Le code généré vous permettra également de voir d'où proviennent les valeurs, par exemple

<!-- Values from default config. -->
<string name="app_name" translatable="false">Default Name</string>

et

public final class BuildConfig {
    public static final String VERSION_NAME = "1.0";
    // Fields from product flavor: demo
    public static final boolean isDemo = true;
}

Utilisation de la dimension saveur

Lorsque l'application est basée sur plusieurs critères, au lieu de créer beaucoup de saveurs, vous pouvez définir des dimensions de saveur.

Les dimensions d'arôme définissent le produit cartésien qui sera utilisé pour produire des variantes.

Exemple:

flavorDimensions("dimA", "dimB")

productFlavors {

    row1 {
        ...
        dimension = "dimA"
    }
    row2 {
        ...
        dimension = "dimA"
    }
    row3 {
         ...
        dimension = "dimA"
    }

    col1 {
        ...
        dimension = "dimB"
    }
    col2 {
        ...
        dimension = "dimB"
    }
    col3 {
         ...
        dimension = "dimB"
    }
}

Cette configuration produira 18 (3 3 2) variantes (si vous avez les 2 types de build standard: debug et release ). Les variantes de construction suivantes seront créées:

row1-col1-debug 
row1-col2-debug 
row1-col3-debug 
row1-col1-release
row1-col2-release
row1-col3-release

row2-col1-debug 
row2-col2-debug 
row2-col3-debug 
row2-col1-release
row2-col2-release
row2-col3-release

row3-col1-debug 
row3-col2-debug 
row3-col3-debug 
row3-col1-release
row3-col2-release
row3-col3-release

L' ordre de la dimension est défini par android.flavorDimensions et les lecteurs dont l'arôme remplace l'autre , ce qui est important pour les ressources lorsqu'une valeur dans une saveur remplace une valeur définie dans une saveur de priorité inférieure.

La dimension de saveur est définie avec une priorité plus élevée en premier. Donc dans ce cas:

dimA > dimB > defaultConfig

Il existe également un dossier source "Combinaison de saveurs" disponible lorsque plusieurs dimensions de saveur sont utilisées. Par exemple src/flavor1Flavor2/ .

  • Notez que ceci est pour toutes les combinaisons de toutes les dimensions.
  • Sa priorité est supérieure à celle des sources à saveur unique, mais inférieure à celle des types de construction.

Ajouter des dépendances pour les saveurs

Vous pouvez ajouter différentes dépendances pour un produit spécifique.

Utilisez simplement le groupe <flavorName>Compile 'group:name:xyz' syntaxe:

android {
    ...    
    productFlavors {
        flavor1 {
           //.....
        }
        flavor2 {
           //.....
        }
    }
}

...
dependencies {

    compile 'com.android.support:appcompat-v7:24.2.0'
   
    // Add a dependency only for flavor1
    flavor1Compile 'group:name:x.y.z'

    // Add a dependency only for flavor2
    flavor2Compile 'group:name:x.y.z'
} 

Exemple de développement et production d'arômes de produit

productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 15
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow