Les flavours sont utiles pour gérer une version de développement et une version de production.
Pour créer des flavours « saveurs », par exemple une version de développement (dev) et une de production (prod) : https://cogitas.net/creating-flavors-of-a-flutter-app/
Dans app/build.gradle (avant buildTypes) :
flavorDimensions "app" productFlavors { dev { dimension "app" applicationId "com.xx.xxx.dev" manifestPlaceholders = [appLabel: "@string/app_name_dev"] versionCode 11 versionName "11.1.0" } prod { dimension "app" applicationId "com.xx.xxx" manifestPlaceholders = [appLabel: "@string/app_name_prod"] versionCode 10 versionName "10.1.0" } }Puis dans Android Studio / Edit Configurations et ajouter les flavors https://medium.com/@salvatoregiordanoo/flavoring-flutter-392aaa875f36Pour compiler :
To build apk or appbundle(to publish to the playstore) for each flavor you can use the commands(recommended) instead of using android studio.
For prod
you can use:
APK
flutter build apk --flavor prod -t lib/main_prod.dart
App Bundle
flutter build appbundle --flavor prod -t lib/main_prod.dart
and for dev
APK
flutter build apk --flavor dev -t lib/main_dev.dart
App Bundle
flutter build appbundle --flavor dev -t lib/main_dev.dart
Pour gérer des variables et aspects différents en fonction des flavour :
Utilisez le package : https://pub.dev/packages/flutter_flavor
exemple : https://github.com/stefandevo/flutter-flavor
Sinon juste ajouter dans main.dart :
FlavorConfig(
//-- Si DEV alors name:"DEV" et "flavour":"DEV" et "isPROD":false
//-- Sinon name commenté et "flavour":"PROD" et "isPROD":true
// name: "dev", // Commenter pour retirer le bandeau
color: Colors.green,
location: BannerLocation.bottomStart,
variables: {
"flavour": "PROD",
"isPROD": true,
},
);
Ensuite, dans le code récupérer les variables avec :
print("zzzzzzzzzzzzzzzzFlavour "+FlavorConfig.instance.variables["flavour"]+":"+FlavorConfig.instance.variables["isPROD"].toString());
Et éventuellement ajouter un bandeau avec :
return FlavorBanner(
color: Colors.green,
location: BannerLocation.bottomEnd,
child: MaterialApp(
Pour modifier le nom de l’application dépendant du flavour :
Le fichier android/src/main/AndroidManifest.xml doit comporter :
<application
android:label="${appLabel}"
android:icon="@mipmap/ic_launcher"
Et placez dans main/res/values/strings.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AndroRadio</string>
<string name="app_name_dev">RadioDEV</string>
<string name="app_name_prod">AndroRadio</string>
</resources>
Pour modifier le numéro de version :
Éditez le fichier android/app/build.gradle
flavorDimensions "app"
productFlavors {
dev {
dimension "app"
applicationId "com.andrologiciels.androradio.dev"
manifestPlaceholders = [appLabel:"@string/app_name_dev"]
versionCode 3
versionName "3.0.9"
}
prod {
dimension "app"
applicationId "com.andrologiciels.androradio"
manifestPlaceholders = [appLabel:"@string/app_name_prod"]
versionCode 3
versionName "3.0.9"
}
}
Pour changer les icônes :
Utilisez le package https://pub.dev/packages/flutter_launcher_icons
Attention, supprimer toutes les « adaptatives » les icônes doivent être nommées « ic_launcher » dans tous les répertories et sous répertoires de « res » des flavours mais aussi de « main«
Références :
https://medium.com/flutter-community/flavoring-flutter-applications-android-ios-ea39d3155346