PackageTrack
Sign in Get early access

ann_flutter_flavor

Multi-flavor Flutter toolkit. Reads annspec.yaml, generates typed flavor classes, and wires Android, iOS, Firebase, AdMob and RevenueCat.

1.0.0 1.0K downloads/mo #571 most downloaded on pub.dev anntech-dev/ann-flavor-flutter

What this package is like to depend on

Last release today

23 Aug 2026

Release timing varies

gaps range from 8 days to 5 weeks

Nearly every release is documented

notes for 37 of 40 stable releases

1 version withdrawn

withdrawn after publishing

2 months old

41 releases · first in 2026

41 releases in the last 12 months

see the full history below

Release timeline

41 releases · Jun 2026 to Aug 2026
Release Pre-release Withdrawn

Releases

latest 41
  1. 4.0.6 24 Jun 2026 withdrawn

    Nothing published for this version

  2. 1.0.0 23 Aug 2026
    Release notes

    Added

    • tooling: section in annspec.yaml — declare gradle_plugin, cocoapods_plugin, and fastlane_plugin version constraints. sync reads these to patch android/settings.gradle.kts and Gemfile with the specified versions.
    • upgrade CLI command — resolves the latest matching version for each tooling: field from Maven Central (Gradle) or RubyGems (CocoaPods/Fastlane), patches annspec.yaml, and runs sync. Exact pins (x.y.z) are skipped; absent fields are skipped.

    Changed

    • kGradlePluginVersion is now a fallback used only when tooling.gradle_plugin is absent from annspec.yaml. Set tooling.gradle_plugin in your spec to manage the version explicitly.
    • sync Gemfile patching for CocoaPods and Fastlane now writes pessimistic version constraints (~> x.y.z) when a version is declared in tooling:.

    Open source →
  3. 0.7.11 22 Aug 2026
    Release notes

    Fixed

    • Bumped bundled Gradle plugin version to 2.3.6 — FirebaseCopyTask now correctly handles profile build type by reusing the release Firebase config (fixes #45).
    • Bumped bundled CocoaPods plugin version to 0.1.17 — Firebase plist build phase path corrected (fixes #46).

    Open source →
  4. 0.7.10 22 Aug 2026
    Release notes

    Fixed

    • Bumped bundled Gradle plugin version to 2.3.5 — google-services.json is no longer deleted after each build, preventing missing file errors on subsequent runs.

    Open source →
  5. 0.7.9 22 Aug 2026
    Release notes

    Changed

    • Version bump for pub.dev release — no functional changes.

    Open source →
  6. 0.7.8 22 Aug 2026
    Release notes

    Changed

    • Bumped bundled Gradle plugin version to 2.3.4 — AndroidManifest.xml is no longer rewritten on every build when there are no logical changes (fixes #44).

    Open source →
  7. 0.7.7 15 Aug 2026
    Release notes

    Fixed

    • Gemfile duplicate detection for ann-flavor-flutter now recognises both single and double quote styles, preventing duplicate gem lines.

    Open source →
  8. 0.7.6 14 Aug 2026
    Release notes

    Fixed

    • sync spec now writes both require 'ann-flavor-cocoapods' and require 'annai-flutter-flavor' in the Podfile header instead of a plugin directive.

    Open source →
  9. 0.7.5 14 Aug 2026
    Release notes

    Fixed

    • sync spec now writes plugin 'ann-flavor-cocoapods' in the Podfile instead of plugin 'ann-ios-flavorize', matching the actual gem name in the Gemfile.

    Open source →
  10. 0.7.4 14 Aug 2026
    Release notes

    Changed

    • Version bump — no functional changes.

    Open source →
  11. 0.7.3 14 Aug 2026
    Release notes

    Fixed

    • sync: Gemfile duplicate detection now recognises both single and double quote styles for gem "cocoapods".

    Open source →
  12. 0.7.2 14 Aug 2026
    Release notes

    Changed

    • sync-web: removed web icon generation — use the app icons command instead.
    • sync: removed automatic .gitignore mutation for web flavor outputs (manifest.json, index.html, version.json are intentionally tracked).

    Open source →
  13. 0.7.1 14 Aug 2026
    Release notes

    Added

    • Plan 027: sync-web _copyToWeb now excludes wrangler.toml (alongside *.tmpl.* files) so the rendered Cloudflare Workers config never enters web/.
    • WebTemplateRenderer adds {{output_dir}} template variable — resolves to build/web/<flavor> when a flavor is set, or build/web when no flavor is used.

    Open source →
  14. 0.6.0 12 Aug 2026
    Release notes

    Added

    • AnnFlavorConfig.appleId — exposes the stores.app_store.apple_id value from annspec.yaml in the generated ann_flavor.g.dart. Returns null when the field is not set. Access at runtime: AnnFlavor.current.appleId.

    Open source →
  15. 0.5.1 12 Aug 2026

    Nothing published for this version

  16. 0.5.0 12 Aug 2026
    Release notes

    Added

    • Plan 011: icon field added to AnnspecFlavor and platform defaults in the CLI model and reader. Parsed for android and iOS platforms.
    • Plan 011: IosIconGenerator generates per-flavor iOS icon sets via flutter_launcher_icons. Source PNG is validated (must be 1024×1024).
    • Plan 011: wireXcconfig patches <flavor>Release.xcconfig and <flavor>Debug.xcconfig with ASSETCATALOG_COMPILER_APPICON_NAME so Xcode picks up the generated icon set.
    • Plan 011: sync command now includes step 4 — iOS icon generation for all flavors with an icon configured, inserted between iOS wiring (step 3) and Firebase (step 5).
    • All three cores (Kotlin, Dart, Ruby) updated: icon field parsed and resolved with cascade (flavor.icon ?? default.icon); effectiveIcon / effective_icon exposed on ResolvedBuildOutput.

    Open source →
  17. 0.4.12 09 Aug 2026
    Release notes

    Fixed

    • DEF-024: _writeAuthGetter now correctly applies platform default auth for all four AnnPlatform values. Previously web and windows defaults were never applied (always emitting return null;), and android/ios defaults were also silently ignored when no flavor entry existed for that platform. Auth configured under <platform>.default.build_types.release/debug.auth in annspec.yaml is now emitted correctly for all platforms.
    Open source →
  18. 0.4.11 06 Aug 2026
    Release notes

    Fixed

    • DEF-023: Generated AnnPlatform switch statements in authRelease, authDebug, optionsRelease, and optionsDebug are now exhaustive. All four AnnPlatform arms (android, ios, web, windows) are always emitted; platforms without config emit return null;. Removes the Dart 3 non-exhaustive switch compile error in consumer projects that only configure android and ios.
    • Lint: Generated file now emits // ignore: depend_on_referenced_packages before the firebase_core import to suppress the lint warning for transitive dependencies.
    Open source →
  19. 0.4.10 07 Jul 2026
    Release notes

    Added

    • Three firebase helper functions: flavorFirebaseOptions() (auto-selects by build type), flavorFirebaseOptionsRelease() (always release), flavorFirebaseOptionsDebug() (always debug). The previous single flavorFirebaseOptions() function is replaced by this trio.
    • auth() concrete default on AnnFlavorConfig: dispatches to authRelease() or authDebug() based on AnnFlavor.buildType. Consumers no longer need to implement auth() themselves.

    Breaking

    • auth() renamed to authRelease() in AnnFlavorConfig. Any class that overrides auth() must rename the override to authRelease(). The ann_flutter_flavor sync command regenerates ann_flavor.g.dart with the correct method name automatically.
    • The _<Flavor>Firebase private class now exposes optionsRelease() instead of options(). Generated code is updated automatically on next sync.

    Fixed

    • DEF-021 (Gradle 2.0.16): PostBuildProcessingTask annotation fix — FirebaseCopyTask now runs reliably before cleanup. Update the Gradle plugin version in your project to 2.0.16.
    • Version sync — bundled Gradle plugin reference (kGradlePluginVersion) updated to 2.0.16.

    Open source →
  20. 0.4.9 06 Jul 2026
    Release notes

    Version sync — updated bundled Gradle plugin reference (kGradlePluginVersion) to 2.0.15 (DEF-020: google-services.json copy path fix).


    Open source →
  21. 0.4.8 06 Jul 2026
    Release notes

    Fixed

    • DEF-019: --target flag corrected to --ios-target — the flag name used by flutterfire configure v1.4.0.

    Open source →
  22. 0.4.7 06 Jul 2026
    Release notes

    Added

    • DEF-019 (target field): New optional target field inside firebase blocks (iOS only) — names the Xcode target passed to flutterfire configure --target. Resolves via a 4-level cascade identical to service_account. Defaults to "Runner" when absent at all cascade levels. Valid in default.firebase, default.build_types.<bt>.firebase, flavor.<n>.firebase, and flavor.<n>.build_types.<bt>.firebase.

    Fixed

    • DEF-019: iOS flutterfire configure now passes --ios-out ios/Runner/GoogleService-Info.plist (exact basename required by flutterfire v1.4.0) and &&-chains a cp to the stable committed path at lib/generated/firebase/GoogleService-Info-{flavor}-{buildType}.plist followed by rm. Previously --ios-out was set to the stable path directly, causing flutterfire v1.4.0 to throw ValidationException: --ios-out basename must be exactly GoogleService-Info.plist.

    Open source →
  23. 0.4.6 04 Jul 2026
    Release notes

    Added

    • DEF-017: New validate-testspec CLI command — validates anntestspec.yaml standalone, exits 1 if not found or if the file contains errors. Supports --format json for machine consumption (CI-friendly). The validate command also runs testspec validation automatically and includes a testspec key in its JSON output.
    • DEF-017: sync now adds gem 'ann-flavor-cocoapods' to the Gemfile when iOS is configured in annspec.yaml. Previously the CocoaPods plugin gem was never added automatically, causing pod install to fail with "plugin ann-ios-flavorize not installed".

    Fixed

    • DEF-018: Generated firebase.sh now sets export CI=true at the top of the script. This suppresses flutterfire's ANSI escape codes and spinner sequences ([A[2K⠹ …) when the script is run in an IDE terminal or any non-TTY context.

    • DEF-014: firebase.sh now writes google-services.json and GoogleService-Info.plist to lib/generated/firebase/ with stable flavor/buildType-scoped filenames instead of routing them to $ANN_TEMP_DIR. These files are safe to commit and are read by the Gradle and CocoaPods build plugins on every build.

      sync now appends .gitignore entries to prevent the build-plugin target copies (android/app/src/**/google-services.json and ios/**/GoogleService-Info.plist) from being committed.

      The script cleanup step is narrowed from rm -rf lib/generated/firebase/* to rm -f lib/generated/firebase/*_firebase_options.dart so committed JSON/plist sources are not wiped on re-run.


    Open source →
  24. 0.4.5 04 Jul 2026
    Release notes

    Fixed

    • DEF-006: _patchSettings() now updates the Gradle plugin version in-place when the entry already exists but carries a stale version, for both KTS and Groovy DSL. Previously only the first-time insertion path wrote the correct version.

    Changed

    • --firebase-mode default changed from run to script (breaking change in default behaviour)

      dart run ann_flutter_flavor sync now generates lib/generated/scripts/firebase.sh by default instead of executing flutterfire configure inline. This prevents the sync step from hanging when Firebase auth is not available at sync time.

      Migration: if you relied on the old inline-execution default, add --firebase-mode inline explicitly. The --firebase-mode run value has been removed — use inline instead.

      Old New
      dart run ann_flutter_flavor sync Equivalent to --firebase-mode inline (old) → now --firebase-mode script (default)
      dart run ann_flutter_flavor sync --firebase-mode run Use --firebase-mode inline
      dart run ann_flutter_flavor sync --firebase-mode script Unchanged

    Open source →
  25. 0.4.3 03 Jul 2026
    Release notes

    Version sync — updated bundled Gradle plugin reference (kGradlePluginVersion) to 2.0.11 (firebase android default fix). No Flutter CLI behaviour changes.


    Open source →
  26. 0.4.2 01 Jul 2026
    Release notes

    Comments in generated Podfile and Gemfileplugin 'ann-ios-flavorize' in ios/Podfile and gem "ann-flavor-flutter" in Gemfile are now preceded by a comment explaining they were added by ann_flutter_flavor, making it clear these lines should not be removed manually.

    applicationId and minSdk no longer overwrittensync no longer rewrites defaultConfig.applicationId or minSdk in android/app/build.gradle(.kts). These values are owned by the developer; per-flavor applicationId is managed by the ANN Gradle plugin at Gradle sync time.

    Firebase script improvements--firebase-mode script now generates a more robust shell script: old generated files are cleaned before re-running, each flutterfire configure call reports success/failure individually, and a summary is printed at the end. The script exits with a non-zero code if any command failed.

    Accurate flutterfire configure arguments — the generated commands (both run mode and script mode) now include -i/-a (bundle ID) and --ios-build-config (e.g. Release-ledger_in), ensuring flutterfire targets the correct registered app and Xcode build configuration in multi-flavor projects.

    Open source →
  27. 0.4.1 01 Jul 2026
    Release notes

    service_account 4-level cascadeservice_account can now be placed at default.firebase.service_account or flavor.<n>.firebase.service_account to share one key across all build types without repetition. Full cascade (most-specific wins):

    1. flavor.<n>.build_types.<bt>.firebase.service_account
    2. flavor.<n>.firebase.service_account
    3. default.build_types.<bt>.firebase.service_account
    4. default.firebase.service_account

    Open source →
  28. 0.4.0 01 Jul 2026
    Release notes

    --firebase-mode scriptsync accepts --firebase-mode script to write lib/generated/scripts/firebase.sh instead of running flutterfire configure inline. Use when Firebase auth is unavailable at sync time (e.g. the service account is decoded in a later CI step). The generated script navigates to the project root automatically.

    iOS config_file guard — sync now aborts with a clear error when an iOS firebase block has config_file without project_id. iOS must use project_id mode; config_file is Android-only.

    sync pre-flight validationsync now runs validate before generating any files. If the spec has errors, sync aborts immediately with exit 1 and no files are written. Warnings are printed but generation continues.

    Step reorder — Firebase (flutterfire configure) now runs after the fast deterministic steps (Dart → Android → iOS) instead of second. New step order: [0] validate → [1] Dart → [2] Android → [3] iOS → [4] Firebase → [5] Fastlane → [6] Melos.

    --format jsonsync and validate accept --format json to emit the pre-flight result as machine-readable JSON on stdout. All other output goes to stderr. Useful for IDE integrations and CI pipelines.

    doctor command — replaces version. Shows the ann_flutter_flavor version and checks each linked plugin's installed version against the expected target. The old version command has been removed.

    Firebase: config_file on iOS is now a hard errorsync exits 1 immediately when an iOS firebase block contains config_file. iOS must use project_id (which triggers flutterfire configure to generate the options file). See the Firebase Setup section in the README for setup guidance.

    Open source →
  29. 0.3.0 01 Jul 2026
    Release notes

    Firebase service account authflutterfire configure now authenticates exclusively via the service_account field in annspec.yaml. ADC (gcloud auth) and firebase login are no longer used or supported. Set service_account in your firebase block alongside project_id; sync will warn if project_id is set without a service account.

    validate --format json — the validate command now accepts --format json, emitting a single JSON object on stdout with all errors and warnings. Exit code 1 when any error is present. Used by the Studio plugin (1.1.0) for IDE-integrated validation.

    version command — new command that reads pubspec.lock, android/settings.gradle.kts, and Gemfile.lock to compare installed plugin versions against expected targets. Exits 1 when any detectable plugin is outdated.

    Firebase validation improvements — new checks:

    • Error: firebase.file key (renamed to config_file in 0.1.6) is now a hard error with a migration hint
    • Warning: project_id set without a service_account
    • Warning: service_account set alongside config_file (ineffective)
    • Warning: integrations.firebase: true set but no firebase blocks configured in spec
    Open source →
  30. 0.2.5 01 Jul 2026
    Release notes

    Internal publish-workflow improvements. No user-facing changes.

    Open source →
  31. 0.2.4 30 Jun 2026
    Release notes

    120-second timeout on flutterfire configure — prevents sync from hanging indefinitely when auth prompts or network issues stall the FlutterFire CLI.

    Signing path resolution — relative cert/key paths in credentials.signing are now resolved to absolute paths before being passed to Gradle, preventing build failures when pod install or gradle are invoked from a different working directory.

    Open source →
  32. 0.2.2 27 Jun 2026
    Release notes

    Redesigned summary command — output is now organised by flavor × build type, showing fully resolved (cascaded) values for every field:

    • Each flavor has a block per build type (release, debug, …)
    • Every field shown is the effective value after the default → flavor → build type cascade: id, name, version, firebase, auth, admob, stores, custom, and Android build-type flags
    • When no flavors are defined, the default values are shown per build type
    • The old top-level "default" block is removed
    Open source →
  33. 0.2.1 27 Jun 2026
    Release notes

    enabled: false support in validate — if annspec.yaml sets enabled: false, the validate command now shows a warning at the top explaining that all plugins will ignore the file, while still running full structural validation on the rest of the spec.

    Improved validate output — every error and warning now shows:

    • The exact YAML path where the problem is (e.g. app.android.flavor.free.stores.google_play.priority)
    • A precise description of what is wrong
    • A fix hint telling you what to add, change, or remove

    Also: parse-time errors (missing app: root key, old annai_app: key) now print a clear message with a migration hint instead of a raw Dart type error.

    Open source →
  34. 0.2.0 27 Jun 2026
    Release notes

    Breaking: annai_app: root key renamed to app:annspec.yaml files using the old annai_app: root key must be updated. The CLI shows a clear migration hint if the old key is detected.

    Open source →
  35. 0.1.9 27 Jun 2026
    Release notes

    Internal pub.dev score improvements (documentation, example, analysis options). No user-facing behaviour changes.

    Open source →
  36. 0.1.7 27 Jun 2026
    Release notes

    Expanded validate command — comprehensive field-level checks across the entire spec: bundle IDs, version formats, firebase mode conflicts, store IDs, signing paths, and unknown field detection.

    Open source →
  37. 0.1.6 26 Jun 2026
    Release notes

    buildType auto-detectionAnnFlavor.buildType is now derived automatically from Dart's kDebugMode / kReleaseMode. The buildType parameter is no longer needed in AnnFlavor.init().

    flutterfire configure invoked directly during sync — removes the generated firebase.sh shell script. Firebase configuration is now driven entirely by the project_id field in annspec.yaml.

    Firebase config refactoredpath, firebase_app_id, and build_target fields are replaced by two mutually exclusive modes:

    • config_file — path to a static google-services.json / GoogleService-Info.plist
    • project_id — runs flutterfire configure during sync to generate options files

    Example app added — a real flutter create example with free / pro flavors is included in the package.

    Open source →
  38. 0.1.5 26 Jun 2026

    Nothing published for this version

  39. 0.1.4 26 Jun 2026
    Release notes

    integrations block — new top-level integrations: key in annspec.yaml with fastlane and melos flags. When enabled:

    • fastlane: truesync generates a Gemfile wiring the Fastlane plugin
    • melos: truesync patches a managed block in pubspec.yaml with Melos scripts

    The managed block uses start/end markers so user-authored content outside the block is never overwritten.

    Open source →
  40. 0.1.3 25 Jun 2026
    Release notes

    Internal publish pipeline improvements (per-plugin tagging, unified workflow). No user-facing behaviour changes.

    Open source →
  41. 0.1.0 15 Jun 2026

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive