{"id":13548516,"url":"https://github.com/AngeloAvv/flutter_flavorizr","last_synced_at":"2025-04-02T21:31:41.794Z","repository":{"id":37104407,"uuid":"262536132","full_name":"AngeloAvv/flutter_flavorizr","owner":"AngeloAvv","description":"A flutter utility to easily create flavors in your flutter application","archived":false,"fork":false,"pushed_at":"2025-03-26T21:29:45.000Z","size":1053,"stargazers_count":495,"open_issues_count":34,"forks_count":100,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-30T17:05:51.353Z","etag":null,"topics":["android","cross-platform","dart","dartlang","flavors","flutter","flutter-plugin","flutter-plugins","flutter-utility","ios","macos","mobile","mobile-app"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/flutter_flavorizr","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AngeloAvv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"AngeloAvv"}},"created_at":"2020-05-09T09:30:46.000Z","updated_at":"2025-03-29T02:59:35.000Z","dependencies_parsed_at":"2023-12-01T00:25:56.735Z","dependency_job_id":"f941bb0d-1b66-4800-ba12-a601ad83ad4f","html_url":"https://github.com/AngeloAvv/flutter_flavorizr","commit_stats":{"total_commits":90,"total_committers":19,"mean_commits":"4.7368421052631575","dds":0.4111111111111111,"last_synced_commit":"c6cfaef878a5dc13f311758a5d904461573777fb"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloAvv%2Fflutter_flavorizr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloAvv%2Fflutter_flavorizr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloAvv%2Fflutter_flavorizr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngeloAvv%2Fflutter_flavorizr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AngeloAvv","download_url":"https://codeload.github.com/AngeloAvv/flutter_flavorizr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246895793,"owners_count":20851328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","cross-platform","dart","dartlang","flavors","flutter","flutter-plugin","flutter-plugins","flutter-utility","ios","macos","mobile","mobile-app"],"created_at":"2024-08-01T12:01:11.380Z","updated_at":"2025-04-02T21:31:41.787Z","avatar_url":"https://github.com/AngeloAvv.png","language":"Dart","funding_links":["https://github.com/sponsors/AngeloAvv"],"categories":["实用工具","Dart","工具集","Utilities [🔝](#readme)","Utilities"],"sub_categories":["Top","热门的"],"readme":"# Flutter Flavorizr\n\nA flutter utility to easily create flavors in your flutter application\n\n[![Pub](https://img.shields.io/pub/v/flutter_flavorizr.svg)](https://pub.dev/packages/flutter_flavorizr)\n![Dart CI](https://github.com/AngeloAvv/flutter_flavorizr/workflows/Dart%20CI/badge.svg)\n[![Star on GitHub](https://img.shields.io/github/stars/AngeloAvv/flutter_flavorizr.svg?style=flat\u0026logo=github\u0026colorB=deeppink\u0026label=stars)](https://github.com/AngeloAvv/flutter_flavorizr)\n[![License: MIT](https://img.shields.io/badge/license-MIT-purple.svg)](https://opensource.org/licenses/MIT)\n[![](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026color=%23fe8e86)](https://github.com/sponsors/AngeloAvv)\n\nIf you want to support this project, please leave a star, share this project, or consider donating through [Github Sponsor](https://github.com/sponsors/AngeloAvv).\n\n## Getting Started\n\nLet's start by setting up our environment in order to run Flutter\nFlavorizr\n\n### Prerequisites\n\nSide note: this tool works better on a new and clean Flutter project.\nSince some processors reference some existing files and a specific base\nstructure, it could be possible that running Flutter Flavorizr over an\nexisting project could throw errors.\n\nBefore running Flutter Flavorizr, you must install the following\nsoftware:\n\n* [Ruby](https://www.ruby-lang.org/en/documentation/installation/)\n* [Gem](https://rubygems.org/pages/download)\n* [Xcodeproj](https://github.com/CocoaPods/Xcodeproj) (through RubyGems)\n\nThese prerequisites are needed to manipulate the iOS and macOS projects and\nschemes. If you are interested in flavorizing Android only, you can skip\nthis step.\n\nIf your app uses a Flutter plugin and you plan to create flavors for iOS and macOS, you need to make\nsure there's an existing Podfile file under the ios/macos folder. This might lead to problems like\n[\"Unable to load contents of file list\"](doc%2Ftroubleshooting%2Funable-to-load-contents-of-file-list%2FREADME.md).\n\n### Installation\n\nThis package is intended to support development of Flutter projects. In\ngeneral, put it under\n[dev_dependencies](https://dart.dev/tools/pub/dependencies#dev-dependencies),\nin your [pubspec.yaml](https://dart.dev/tools/pub/pubspec):\n\n```yaml\ndev_dependencies:\n  flutter_flavorizr: ^2.3.0\n```\n\nYou can install packages from the command line:\n\n```terminal\npub get\n```\n\n## Create your flavors\n\nOnce all of the prerequisites have been installed and you have added\nflutter_flavorizr as a dev dependency, you have to edit your\n[pubspec.yaml](https://dart.dev/tools/pub/pubspec) and define the\nflavors.\n\n### Example\n\nCreate a new file named flavorizr.yaml and define the name of the\nflavors, in our example *apple* and *banana*. For each flavor you have\nto specify the *app name*, the *applicationId* and the *bundleId*.\n\n```yaml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n\n    android:\n      applicationId: \"com.example.apple\"  \n    ios:\n      bundleId: \"com.example.apple\"\n    macos:\n      bundleId: \"com.example.apple\"  \n  banana:\n    app:\n      name: \"Banana App\"\n  \n    android:\n      applicationId: \"com.example.banana\"\n    ios:\n      bundleId: \"com.example.banana\"\n    macos:\n      bundleId: \"com.example.banana\"\n```\n\nAlternatively, add a new key named flavorizr and define a sub item named *flavors*. \nUnder the flavors array you can define the name of the\nflavors, in our example *apple* and *banana*. For each flavor you have\nto specify the *app name*, the *applicationId* and the *bundleId*.\nThis way of defining flavors will be deprecated in versions 3.x\n\n```yaml\nflavorizr:\n  flavors:\n    apple:\n      app:\n        name: \"Apple App\"\n\n      android:\n        applicationId: \"com.example.apple\"\n      ios:\n        bundleId: \"com.example.apple\"\n      macos:\n        bundleId: \"com.example.apple\"        \n    banana:\n      app:\n        name: \"Banana App\"\n\n      android:\n        applicationId: \"com.example.banana\"\n      ios:\n        bundleId: \"com.example.banana\"\n      macos:\n        bundleId: \"com.example.banana\"\n```\n\n### Available fields\n\n#### flavorizr\n\n| key                                     | type   | default                                                                             | required | description                                                                                   |\n|:----------------------------------------|:-------|:------------------------------------------------------------------------------------|:---------|:----------------------------------------------------------------------------------------------|\n| app                                     | Object |                                                                                     | false    | An object describing the general capabilities of an app                                       |\n| flavors                                 | Array  |                                                                                     | true     | An array of items. Each of them describes a flavor configuration                              |\n| [instructions](#available-instructions) | Array  |                                                                                     | false    | An array of instructions to customize the flavorizr process                                   |\n| assetsUrl                               | String | [link](https://github.com/AngeloAvv/flutter_flavorizr/releases/download/v2.3.0/assets.zip) | false    | A string containing the URL of the zip assets file. The default points to the current release |\n| ide                                     | String |                                                                                     | false    | The IDE in which the app is being developed. Currently only `vscode` or `idea`                |\n\n##### \u003ca href=\"#available-instructions\"\u003eAvailable instructions\u003c/a\u003e\n\n| value                   | category      | description                                                             |\n|:------------------------|:--------------|:------------------------------------------------------------------------|\n| assets:download         | Miscellaneous | Downloads the assets zip from the network                               |\n| assets:extract          | Miscellaneous | Extracts the downloaded zip in the project .tmp directory               |\n| assets:clean            | Miscellaneous | Removes the assets from the project directory                           |\n| android:flavorizrGradle | Android       | Adds the flavors to the Android flavorizr.gradle file                   |\n| android:buildGradle     | Android       | Imports the Android flavorizr.gradle file into build.gradle file        |\n| android:androidManifest | Android       | Changes the reference of the app name in the AndroidManifest.xml        |\n| android:dummyAssets     | Android       | Generates some default icons for your custom flavors                    |\n| android:icons           | Android       | Creates a set of icons for each flavor according to the icon directive  |\n| flutter:flavors         | Flutter       | Creates the flutter flavor configuration file                           |\n| flutter:app             | Flutter       | Creates the app.dart entry                                              |\n| flutter:pages           | Flutter       | Creates a set of default pages for the app                              |\n| flutter:main            | Flutter       | Creates the main target to run the app                                  |\n| google:firebase         | Google        | Adds Google Firebase configurations for Android and iOS for each flavor |\n| huawei:agconnect        | Huawei        | Adds Huawei AGConnect configurations for Android for each flavor        |\n| ide:config              | IDE           | Generates debugging configurations for each flavor of your IDE          |\n| ios:podfile             | iOS           | Updates the Pods-Runner path for each flavor                            |\n| ios:xcconfig            | iOS           | Creates a set of xcconfig files for each flavor and build configuration |\n| ios:buildTargets        | iOS           | Creates a set of build targets for each flavor and build configuration  |\n| ios:schema              | iOS           | Creates a set of schemas for each flavor                                |\n| ios:dummyAssets         | iOS           | Generates some default icons for your custom flavors                    |\n| ios:icons               | iOS           | Creates a set of icons for each flavor according to the icon directive  |\n| ios:plist               | iOS           | Updates the info.plist file                                             |\n| ios:launchScreen        | iOS           | Creates a set of launchscreens for each flavor                          |\n| macos:podfile           | macOS         | Updates the Pods-Runner path for each flavor                            |\n| macos:xcconfig          | macOS         | Creates a set of xcconfig files for each flavor and build configuration |\n| macos:configs           | macOS         | Creates a set of xcconfig files for each flavor and build configuration |\n| macos:buildTargets      | macOS         | Creates a set of build targets for each flavor and build configuration  |\n| macos:schema            | macOS         | Creates a set of schemas for each flavor                                |\n| macos:dummyAssets       | macOS         | Generates some default icons for your custom flavors                    |\n| macos:icons             | macOS         | Creates a set of icons for each flavor according to the icon directive  |\n| macos:plist             | macOS         | Updates the info.plist file                                             |\n\n#### android (under app)\n\n| key              | type   | default       | required | description                                                        |\n|:-----------------|:-------|:--------------|:---------|:-------------------------------------------------------------------|\n| flavorDimensions | String | \"flavor-type\" | false    | The value of the flavorDimensions in the android build.gradle file |\n| resValues        | Array  | {}            | false    | An array which contains a set of resValues configurations          |\n| buildConfigFields| Array  | {}            | false    | An array which contains a set of buildConfigFields configurations          |\n\n#### ios (under app)\n\n| key           | type       | default | required | description                                                                                    |\n|:--------------|:-----------|:--------|:---------|:-----------------------------------------------------------------------------------------------|\n| buildSettings | Dictionary | {}      | false    | An XCode build configuration dictionary [XCode Build Settings](https://xcodebuildsettings.com) |\n\n#### macos (under app)\n\n| key           | type       | default | required | description                                                                                    |\n|:--------------|:-----------|:--------|:---------|:-----------------------------------------------------------------------------------------------|\n| buildSettings | Dictionary | {}      | false    | An XCode build configuration dictionary [XCode Build Settings](https://xcodebuildsettings.com) |\n\n#### app (under *flavorname*)\n\n| key  | type   | default | required | description                   |\n|:-----|:-------|:--------|:---------|:------------------------------|\n| name | String |         | true     | The name of the App           |\n| icon | String |         | false    | The icon path for this flavor |\n\n#### android (under *flavorname*)\n\n| key                 | type   | default | required | description                                                                |\n|:--------------------|:-------|:--------|:---------|:---------------------------------------------------------------------------|\n| applicationId       | String |         | true     | The applicationId of the Android App                                       |\n| firebase            | Object |         | false    | An object which contains a Firebase configuration                          |\n| resValues           | Array  |         | false    | An array which contains a set of resValues configurations                  |\n| buildConfigFields   | Array  |         | false    | An array which contains a set of buildConfigFields configurations          |\n| customConfig        | Array  |         | false    | An array which contains a set of custom configs, *overrides defaultConfig* |\n| generateDummyAssets | bool   | true    | false    | True if you want to generate dummy assets (icon set, strings, etc)         |\n| icon                | String |         | false    | The icon path for this android flavor                                      |\n| adaptiveIcon        | Array  |         | false    | An array which contains foreground, background, monochrome (optional) of adaptive icon   |\n\n#### ios (under *flavorname*)\n\n| key                 | type       | default | required | description                                                                                                   |\n|:--------------------|:-----------|:--------|:---------|:--------------------------------------------------------------------------------------------------------------|\n| bundleId            | String     |         | true     | The bundleId of the iOS App                                                                                   |\n| buildSettings       | Dictionary | {}      | false    | A flavor-specific XCode build configuration dictionary [XCode Build Settings](https://xcodebuildsettings.com) |\n| firebase            | Object     |         | false    | An object which contains a Firebase configuration                                                             |\n| variables           | Array      |         | false    | An array which contains a set of variables configurations                                                     |\n| generateDummyAssets | bool       | true    | false    | True if you want to generate dummy assets (xcassets, etc)                                                     |\n| icon                | String     |         | false    | The icon path for this iOS flavor                                                                             |\n\n#### macos (under *flavorname*)\n\n| key                 | type       | default | required | description                                                                                                   |\n|:--------------------|:-----------|:--------|:---------|:--------------------------------------------------------------------------------------------------------------|\n| bundleId            | String     |         | true     | The bundleId of the macOS App                                                                                 |\n| buildSettings       | Dictionary | {}      | false    | A flavor-specific XCode build configuration dictionary [XCode Build Settings](https://xcodebuildsettings.com) |\n| firebase            | Object     |         | false    | An object which contains a Firebase configuration                                                             |\n| variables           | Array      |         | false    | An array which contains a set of variables configurations                                                     |\n| generateDummyAssets | bool       | true    | false    | True if you want to generate dummy assets (xcassets, etc)                                                     |\n| icon                | String     |         | false    | The icon path for this macOS flavor                                                                           | \n\n#### firebase\n\n| key    | type   | default | required | description                                                                                                                   |\n|:-------|:-------|:--------|:---------|:------------------------------------------------------------------------------------------------------------------------------|\n| config | String |         | false    | The path to the Firebase configuration file (google-services.json for Android and GoogleService-Info.plist for iOS and macOS) |\n\n#### agconnect (for Android)\n\n| key    | type   | default | required | description                                                            |\n|:-------|:-------|:--------|:---------|:-----------------------------------------------------------------------|\n| config | String |         | false    | The path to the AGConnect configuration file (agconnect-services.json) |\n\n#### resValue (for Android)\n\n| key   | type   | default | required | description                                                                                                                              |\n|:------|:-------|:--------|:---------|:-----------------------------------------------------------------------------------------------------------------------------------------|\n| type  | String |         | true     | The type of the [resValue](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/ResValue) variable |\n| value | String |         | true     | The value of the resValue variable                                                                                                       |\n\n```yaml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n      resValues:\n        variable_one:\n          type: \"string\"\n          value: \"example variable one\"\n        variable_two:\n          type: \"string\"\n          value: \"example variable two\"\n  \n    ios:\n      bundleId: \"com.example.apple\"\n```\n\n#### buildConfigField (for Android)\n\n| key   | type   | default | required | description                                                                                                                              |\n|:------|:-------|:--------|:---------|:-----------------------------------------------------------------------------------------------------------------------------------------|\n| type  | String |         | true     | The type of the [buildConfigField](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/BuildConfigField) variable |\n| value | String |         | true     | The value of the buildConfigField variable                                                                                                       |\n\n```yaml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n      buildConfigFields:\n        field_one:\n          type: \"String\"\n          value: \"example field one\"\n        field_two:\n          type: \"char\"\n          value: \"y\"\n        field_three:\n          type: \"double\"\n          value: \"20.0\"\n  \n    ios:\n      bundleId: \"com.example.apple\"\n```\n\n#### variable (for iOS and macOS)\n\n| key    | type   | default | required | description                                                                                                                                                                                                                                          |\n|:-------|:-------|:--------|:---------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| target | String |         | false    | The type of the [target](https://medium.com/geekculture/what-are-debug-and-release-modes-in-xcode-how-to-check-app-is-running-in-debug-mode-8dadad6a3428) (debug, release, profile). Do not specify a target if you want to apply it to all of them. |\n| value  | String |         | true     | The value of the variable                                                                                                                                                                                                                            |\n\n```yaml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n  \n    ios:\n      bundleId: \"com.example.apple\"\n      variables:\n        VARIABLE_ONE:\n          value: \"variable1\"\n        VARIABLE_TWO:\n          target: \"Debug\"\n          value: \"variable2\"        \n```\n#### customConfig (for Android only)\n\nYou can define any custom property for android\n```yml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n      customConfig:\n          versionNameSuffix: \"\\\"-green-prod\\\"\" # Don't forget to escape strings with \\\"\n          signingConfig: flavorSigning.green\n          versionCode: 1000\n          minSdkVersion: 23\n          # ..... and any custom property you want to add\n```\n\nThis .yml part, generate this custom android flavor:\n\n```groovy\napple {\n  dimension \"flavor-type\"\n  applicationId \"com.example.apple\"\n  versionNameSuffix \"-green-prod\"\n  signingConfig flavorSigning.green\n  versionCode 1000\n  minSdkVersion 23\n}\n```\n\n#### adaptiveIcon (for Android only)\n\nYou can define adaptiveIcon for android:\n```yml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n      icon: \"assets/icon/appleApp/ic_launcher.png\"\n      adaptiveIcon:\n        foreground: \"assets/adaptive_icon/appleApp/ic_launcher_foreground.png\"\n        background: \"assets/adaptive_icon/appleApp/ic_launcher_background.png\"\n        monochrome: \"assets/adaptive_icon/appleApp/ic_launcher_monochrome.png\"\n```\n\n* monochrome (Themed icons on Android \u003e= 13) is optional.\n* After removing adaptiveIcon key, the adaptive icons generated before will still exist. Please delete adaptiveIcon manually.\n\n\n## Usage\n\nWhen you finished defining the flavorizr configuration, you can proceed by running the script with:\n\n```terminal\nflutter pub run flutter_flavorizr\n```\n\nYou can also run flutter_flavorizr with a custom set of processors by appending the -p (or --processors) param followed by the processor names separated by comma:\n\n```terminal\nflutter pub run flutter_flavorizr -p \u003cprocessor_1\u003e,\u003cprocessor_2\u003e\n```\n\nExample\n\n```terminal\nflutter pub run flutter_flavorizr -p assets:download\nflutter pub run flutter_flavorizr -p assets:download,assets:extract\n```\n\n## Run your flavors\n\nOnce the process has generated the flavors, you can run them by typing\n\n```terminal\nflutter run --flavor \u003cflavorName\u003e\n```\n\nExample\n\n```terminal\nflutter run --flavor apple\nflutter run --flavor banana\n```\n\nCurrently, due to a bug in the Flutter SDK, it's not possible to run the macOS flavors from the terminal.\nYou can run them from XCode by selecting the proper schema and by pressing play.\n\n### Default processors set\n\nBy default, when you do not specify a custom set of processors by appending the -p (or --processors) param, a default processors set will be used:\n\n* assets:download\n* assets:extract\n* android:androidManifest\n* android:flavorizrGradle\n* android:buildGradle\n* android:dummyAssets\n* android:icons\n* flutter:flavors\n* flutter:app\n* flutter:pages\n* flutter:main\n* ios:podfile\n* ios:xcconfig\n* ios:buildTargets\n* ios:schema\n* ios:dummyAssets\n* ios:icons\n* ios:plist\n* ios:launchScreen\n* macos:podfile\n* macos:xcconfig\n* macos:configs\n* macos:buildTargets\n* macos:schema\n* macos:dummyAssets\n* macos:icons\n* macos:plist\n* google:firebase\n* huawei:agconnect\n* assets:clean\n* ide:config\n\n## Customize your app\n\nFlutter_flavorizr creates different dart files in the lib folder. In the\nflavors.dart file we have the F class which contains all of our\ncustomizations.\n\n```dart\nclass F {\n  static Flavor? appFlavor;\n\n  static String get title {\n    switch (appFlavor) {\n      case Flavor.apple:\n        return 'Apple App';\n      case Flavor.banana:\n        return 'Banana App';\n      default:\n        return 'title';\n    }\n  }\n\n}\n```\n\nThe process creates a simple title customization: a\nswitch which checks the current appFlavor (defined in our app starting\npoint) and returns the correct value. Here you can write whatever you\nwant, you can create your custom app color palette, differentiate the\nURL action of a button, and so on.\n\nIf you are wondering how to use these\ngetters, you can find an example under the pages folder: in the\nmy_home_page.dart file, the page shown after the launch of the app, we\ncan see a clear reference on the title getter defined in the F class.\n\n## Third party services\n\n### Google Firebase\n\nIn order to flavorize your project and enable Firebase in your flavor you have to define a firebase object below each OS flavor. Under the firebase object you must define the config path of the google-services.json (if you are under Android configuration) or GoogleService-Info.plist (if you are under iOS or macOS configuration).\n\nAs you can see in the example below, we added the path accordingly\n\n```yaml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n      firebase:\n        config: \".firebase/apple/google-services.json\"\n  \n    ios:\n      bundleId: \"com.example.apple\"\n      firebase:\n        config: \".firebase/apple/GoogleService-Info.plist\"\n  \n  banana:\n    app:\n      name: \"Banana App\"\n      \n    android:\n      applicationId: \"com.example.banana\"\n      firebase:\n        config: \".firebase/banana/google-services.json\"\n    ios:\n      bundleId: \"com.example.banana\"\n      firebase:\n        config: \".firebase/banana/GoogleService-Info.plist\"\n```\n\n### Huawei AppGallery Connect\n\nIn order to flavorize your project and enable AppGallery Connect in your flavor  \nyou have to define an agconnect object below each Android flavor. Under the agconnect object you must define the config path of the agconnect-services.json.\n\nAs you can see in the example below, we added the path accordingly\n\n```yaml\nflavors:\n  apple:\n    app:\n      name: \"Apple App\"\n  \n    android:\n      applicationId: \"com.example.apple\"\n      agconnect:\n        config: \".agconnect/apple/agconnect-services.json\"\n  \n    ios:\n      bundleId: \"com.example.apple\"\n  \n  banana:\n    app:\n      name: \"Banana App\"\n      \n    android:\n      applicationId: \"com.example.banana\"\n      agconnect:\n        config: \".agconnect/banana/agconnect-services.json\"\n    ios:\n      bundleId: \"com.example.banana\"\n```\n\n## Troubleshooting\nHow to fix the error [\"Unable to load contents of file list\"](doc%2Ftroubleshooting%2Funable-to-load-contents-of-file-list%2FREADME.md)\n\n## Docs \u0026 Tutorials (from the community)\n[Easily build flavors in Flutter (Android and iOS) with flutter_flavorizr](https://angeloavv.medium.com/easily-build-flavors-in-flutter-android-and-ios-with-flutter-flavorizr-d48cbf956e4) - Angelo Cassano\n\n[Get the best out of Flutter flavors with flutter_flavorizr](https://pierre-dev.hashnode.dev/get-the-best-out-of-flutter-flavors-with-flutterflavorizr) - Pierre Monier\n\n## Further developments\n\n* Let the user define its custom set of available instructions.\n\n## Questions and bugs\n\nPlease feel free to submit new issues if you encounter problems while using this library.\n\nIf you need help with the use of the library or you just want to request new features, please use\nthe [Discussions](https://github.com/AngeloAvv/flutter_flavorizr/discussions) section of the \nrepository. Issues opened as questions will be automatically closed.\n\n## License\n\nFlutter Flavorizr is available under the MIT license. See the LICENSE\nfile for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAngeloAvv%2Fflutter_flavorizr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAngeloAvv%2Fflutter_flavorizr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAngeloAvv%2Fflutter_flavorizr/lists"}