flavor_tools 2.0.3
flavor_tools: ^2.0.3 copied to clipboard
CLI tool for creating and managing Flutter flavors. Configures iOS (Xcode, xcconfig, schemes) and Android (Gradle) automatically.
Flavor Tools #
A CLI utility for quickly creating and managing flavors in Flutter projects. Automatically configures iOS (Xcode project, xcconfig, schemes) and Android (Gradle, AndroidManifest).
Features #
- Create a flavor for iOS and Android with a single command
- Batch creation from a YAML config (
create-all) - Update existing flavors (
update) - Configure target device family for iOS
- Support for Kotlin DSL (
build.gradle.kts) and Groovy (build.gradle) - Auto-detection of settings from an existing Xcode project (SWIFT_VERSION, IPHONEOS_DEPLOYMENT_TARGET, etc.)
- Duplicate checking before creation
flutter_launcher_iconssupport
Installation #
dependencies:
flavor_tools: ^2.0.1
or
dart pub add flavor_tools
Global installation (optional) #
dart compile exe bin/flavor_tools.dart -o flavor_tools
mv flavor_tools /usr/local/bin/
Commands #
create — create a single flavor #
dart run flavor_tools create \
-p com.example.app \
-f dev \
-d "My App Dev"
| Flag | Short | Description |
|---|---|---|
--packageName |
-p |
Package name for iOS and Android |
--packageNameIos |
-i |
Package name for iOS only |
--packageNameAndroid |
-a |
Package name for Android only |
--flavorName |
-f |
Flavor name |
--displayName |
-d |
Display name of the application |
--teamId |
-t |
Apple Team ID (default: empty) |
--pathXcProject |
-x |
Path to project.pbxproj |
--iconsLauncher |
true if using flutter_launcher_icons |
create-all — batch creation from YAML #
dart run flavor_tools create-all -c flavor_tools.yaml
flavor_tools.yaml format:
flavors:
dev:
package_name: com.example.app.dev
display_name: "My App Dev"
staging:
package_name: com.example.app.staging
display_name: "My App Staging"
prod:
package_name: com.example.app
display_name: "My App"
team_id: "ABC123"
icons_launcher: true
Each flavor supports the following fields:
| Field | Description |
|---|---|
package_name |
Shared package name |
package_name_ios |
Package name for iOS only |
package_name_android |
Package name for Android only |
display_name |
Display name |
dimension |
Flavor dimension (default: default) |
team_id |
Apple Team ID |
icons_launcher |
flutter_launcher_icons support |
When running create-all again, it automatically detects changes and updates only those flavors whose config has changed.
update — update an existing flavor #
dart run flavor_tools update \
-f dev \
-p com.example.newpackage \
-d "New Display Name"
| Flag | Description |
|---|---|
--flavorName -f |
Flavor name (required) |
--packageName -p |
New package name for iOS and Android |
--packageNameIos |
New package name for iOS only |
--packageNameAndroid |
New package name for Android only |
--displayName -d |
New display name for iOS and Android |
--displayNameIos |
New display name for iOS only |
--displayNameAndroid |
New display name for Android only |
set-target-device-family — target iOS devices #
dart run flavor_tools set-target-device-family -d "1,2"
1— iPhone2— iPad1,2— iPhone and iPad
Running a flavor #
flutter run --flavor=dev
What gets generated #
iOS:
XCBuildConfigurationfor Debug, Release, Profile- xcconfig files (
ios/Flutter/Debug-{flavor}.xcconfig,Release-{flavor}.xcconfig) - Xcode scheme (
ios/Runner.xcodeproj/xcshareddata/xcschemes/{flavor}.xcscheme) Info.plistandRunner.entitlementsupdates
Android:
flavorDimensionsandproductFlavorsinbuild.gradle/build.gradle.ktsresValueforapp_namein each flavorAndroidManifest.xmlupdates