flutter_release_manager 1.0.0
flutter_release_manager: ^1.0.0 copied to clipboard
Build, package, and distribute Flutter APK and IPA releases with a single command. Upload to Google Drive and Diawi automatically with guided setup and zero Google Cloud configuration.
Changelog #
3.0.0 #
Changed #
- Package renamed:
flutter_build_release→flutter_release_manager - Architecture: replaced Google Drive REST API (
googleapis) with rclone — no Google Cloud Console, no OAuth client IDs, no API keys required - Google Drive authentication is now fully browser-based:
flutter_release_manager initopens a browser once, stores the token securely, and never prompts again - Machine config moved to
~/.config/flutter_release_manager/config.json(Windows:%APPDATA%\flutter_release_manager\config.json) - Project config renamed to
.flutter_release_manager_config.json - rclone remote name changed to
flutter_release_manager - New command:
flutter_release_manager init— one-time setup wizard; installs rclone, signs into Google Drive, picks destination folder, optionally saves Diawi token - New command:
flutter_release_manager doctor— prerequisite health check with fix hints - Removed
--drive-folder-idand--flavourflags (Drive folder is now selected during init) - Removed
--rclone-remoteflag (remote is created and managed automatically) - rclone auth is 100% non-interactive:
rclone config reconnectis never called; OAuth token is obtained viarclone authorize(browser-only) and embedded at remote creation time
Added #
flutter_release_manager initsetup wizardflutter_release_manager doctorhealth check- Automatic rclone installation on macOS (Homebrew) and Linux (apt-get)
- Automatic migration of all configuration from
flutter_build_release:- Machine config (
~/.config/flutter_build_release/) copied on first run - Project config (
.flutter_build_release_config.json) copied on first run - rclone remote
flutter_build_releasemigrated without re-authentication
- Machine config (
- Deadlock prevention: stdin closed immediately on all rclone subprocesses; interactive prompt detection kills the process rather than hanging indefinitely
- Upload retry: 3 attempts with exponential back-off (3 s, 6 s)
- 30-minute upload timeout; 5-minute OAuth timeout
Removed #
googleapisandgoogleapis_authdependenciesDriveUploader,DriveAuthenticator,CredentialStoreclasses- All Google Drive REST API code
Migration Guide #
-
Install the new package:
dart pub global activate flutter_release_manager -
Run init (your existing Google Drive access is preserved automatically):
flutter_release_manager initOn first run, your old config, project settings, and rclone remote are migrated silently. No re-authentication is required.
-
Remove the old package:
dart pub global deactivate flutter_build_release -
Update CI scripts: replace
flutter_build_releasewithflutter_release_manager.
2.0.0 #
Breaking change — rclone is no longer required.
- Replace rclone with native Google Drive REST API (
googleapis+googleapis_auth) - First-run OAuth flow: browser opens automatically, refresh token saved to
~/.config/flutter_build_release/credentials.json - Subsequent runs load stored token and refresh it silently — no prompts for credentials
- Credentials (Drive refresh token, Diawi API token) moved to machine-level store; project config never contains secrets
ConfigStore.save()now auto-appends.flutter_build_release_config.jsonto.gitignore- v1.x
diawiTokenin project config is migrated toCredentialStoreon first run - Add
--skip-build/--upload-onlyflag: upload an already-built artifact without recompiling runLive()gains a 20-minute timeout; process is killed on expiry- Drive upload retries up to 3× with exponential back-off (3s, 6s)
- Diawi upload retries up to 3× with exponential back-off before polling
- Remove
--rclone-remoteflag (no longer relevant) - Drive folder URL accepted as input; folder ID extracted automatically
- Pre-flight validation now verifies Drive folder accessibility via the API before the build starts
- Prefer arm64-v8a APK; emit explicit warning when falling back to armeabi-v7a
1.0.3 #
- Fix: resolve correct package source directory when installing from pub.dev
1.0.2 #
- Auto-detect Flutter project directory when run from inside the project
- Auto-detect app name from
pubspec.yaml(converted to PascalCase) - Persist answers to
.flutter_build_release_config.json— no retyping on subsequent runs - Pre-flight checks: verify
flutter,rclone, andxcodebuildare available before building - Show a pre-build summary and require confirmation before starting
- Show all testing URLs together in a final summary after build completes
- Fix: CLI flags
--rclone-remote,--scheme,--export-methodnow correctly override saved config - Fix: error messages now always show both example values and the fix instruction
- Fix: invalid menu choices now retry instead of exiting
- Fix: upload
arm64-v8aAPK (modern devices) with fallback toarmeabi-v7a - Fix: auto-discover
.xcworkspacefile inios/instead of hardcodingRunner.xcworkspace - Fix: flavour menu uses consistent
1/2/3numbering to match platform menu - Warn when Diawi token is saved to disk for the first time
1.0.1 #
- Remove sensitive example credentials from documentation
1.0.0 #
- Initial release
- Build Flutter APK with
--split-per-abi - Build iOS IPA via xcodebuild archive + export
- Upload APK to Google Drive using rclone with
dev/prod/uatfolder structure - Upload IPA to Diawi with polling until processed
- Auto-copy Diawi link to clipboard on macOS