android-gradle
Configurer les saveurs du produit
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
}
}