Flutter : Flavour

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-392aaa875f36

Pour 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

Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories