flutter_distribute_manager 1.0.0
flutter_distribute_manager: ^1.0.0 copied to clipboard
A professional CLI that builds, packages and ships Flutter apps to QA — Android APK and iOS IPA — with Google Drive uploads via rclone and Diawi install links.
flutter_distribute_manager #
Build, package and ship your Flutter app to QA in one command — Android APK and iOS IPA — with automatic Google Drive uploads (via rclone) and one-tap Diawi install links. No OAuth setup, no manual Xcode archiving, no copy-pasting files into shared folders.
$ flutter_distribute_manager
━━ flutter_distribute_manager ━━
Project : my_app v1.4.2
? Which platform do you want to build?
1) Android (APK)
2) iOS (IPA)
3) Android + iOS
...
✔ my_app_UAT_2026_06_19_0930_arm64-v8a.apk (24 MB)
Share links:
Drive · my_app_UAT_2026_06_19_0930_arm64-v8a.apk
https://drive.google.com/…
Features #
- 📦 Android & iOS —
flutter build apk --split-per-abiandflutter build ipa(with an optional export-options plist for your Team ID). - ☁️ Google Drive uploads via rclone — no OAuth app required.
- 🗂 Tidy organisation — files land in
Folder/App/Year/Month/ENV/App_ENV_YYYY_MM_DD_HHmm.ext, with case-insensitive folder matching so re-runs never create duplicates. - 🍏 Diawi install links for iOS QA — share a single URL.
- 🌱 Environments — DEV / UAT / PROD tagging baked into file names and
folders (also passed to the build as
--dart-define=ENV=…). - 🔁 Resilient uploads — transfers retry with exponential backoff
(
--retry) and render a live[████░░░] 64% … ETA 6sprogress bar. - 🔔 Team notifications — post a build summary to a Slack/Discord/generic
webhook (
--notify-url). - 🤖 CI/CD ready — every prompt has a flag;
--yesruns fully non-interactive,--jsonemits a machine-readable result, and--dry-runpreviews the plan. - ⏱ Per-step timing in a polished, box-drawn summary table.
- 🩺
doctor(with a macOS Gatekeeper check) and a guidedinitso setup is a one-time affair.
Install #
dart pub global activate flutter_distribute_manager
flutter_distribute_manager --help
Make sure
$HOME/.pub-cache/binis on yourPATH.
Quick start #
# 1. One-time machine setup (installs rclone, connects Drive, saves Diawi token)
flutter_distribute_manager init
# 2. Confirm everything is wired up
flutter_distribute_manager doctor
# 3. From your Flutter project, build & ship
cd path/to/your/app
flutter_distribute_manager
Commands #
| Command | What it does |
|---|---|
flutter_distribute_manager |
Default build command (interactive). |
flutter_distribute_manager init |
One-time setup: rclone, Google Drive auth, Diawi token. |
flutter_distribute_manager doctor |
Health check: tools, config, Drive connectivity. |
flutter_distribute_manager config |
View & edit saved configuration (or reset it). |
Build flags #
| Flag | Alias | Description |
|---|---|---|
--platform |
-p |
android, ios or both. |
--app-dir |
-d |
Flutter project path (default: current dir). |
--app-name |
-n |
Label used in artifact file names. |
--environment |
-e |
DEV, UAT or PROD. |
--team-id |
-t |
Apple Developer Team ID (iOS). |
--scheme |
Xcode scheme (default Runner). |
|
--export-method |
development, release-testing, app-store. |
|
--diawi-token |
Diawi API token (overrides saved). | |
--upload-drive |
Upload artifacts to Google Drive. | |
--upload-diawi |
Upload the iOS IPA to Diawi. | |
--notify-url |
Slack/Discord/generic webhook notified after a ship. | |
--retry |
Upload attempts before giving up (default 3). |
|
--[no-]split-per-abi |
Split Android APKs per ABI (default on). | |
--skip-build / --upload-only |
Reuse the last build. | |
--dry-run |
Print the plan without building or uploading. | |
--json |
Emit a machine-readable JSON result on stdout. | |
--yes |
-y |
Assume defaults; never prompt (CI/CD). |
--verbose |
-v |
Verbose logging. |
--version |
Print version. |
CI/CD example #
flutter_distribute_manager \
--platform both \
--environment UAT \
--app-name MyApp \
--upload-drive \
--yes
How files are organised on Drive #
Flutter Builds/
└── MyApp/
└── 2026/
└── June/
├── DEV/
├── UAT/
│ └── MyApp_UAT_2026_06_19_0930_arm64-v8a.apk
└── PROD/
Configuration #
| Scope | Location | Holds |
|---|---|---|
| Machine | ~/.config/flutter_distribute_manager/config.json (%APPDATA%\flutter_distribute_manager\config.json on Windows) |
rclone remote, Drive folder, Diawi token. |
| Project | .flutter_distribute_manager.json in the project root |
last platform, app name, Team ID, scheme, export method, environment. |
Requirements #
- Flutter & Dart SDKs.
- rclone (installed for you by
init) for Google Drive uploads. - macOS + Xcode for iOS builds.
- A Diawi account & API token (optional, for iOS install links).
Programmatic use #
The building blocks are exported as a library too:
import 'package:flutter_distribute_manager/flutter_distribute_manager.dart';
final project = FlutterProject.detect(Directory.current.path);
final artifacts = await AndroidBuilder(const ProcessRunner(), Logger())
.build(project!, environment: ReleaseEnvironment.uat);
See example/ for more.
License #
MIT © 2026 flutter_distribute_manager authors