FlutterFlowForge

A powerful tool for automating Flutter application builds and GitHub releases.

Features

  • Build Automation: Automate building Flutter applications (split architecture or universal APKs)
  • APK Renaming: Automatically rename APKs with custom app names and version numbers
  • GitHub Releases: Create GitHub releases and upload built artifacts
  • Advanced Error Handling: Network connectivity checks, rate limit detection, and more
  • Parallel Uploads: Efficiently upload multiple assets in parallel
  • Security: Secure handling of GitHub tokens and sensitive information

Installation

Global Installation

# Install globally using dart pub
dart pub global activate flutterflowforge

After installation, you should be able to run:

flutterflowforge --help

If the command is not found, you may need to add the Dart pub cache bin directory to your PATH:

Windows:

%USERPROFILE%\AppData\Local\Pub\Cache\bin

macOS/Linux:

$HOME/.pub-cache/bin

Local Project Installation

Add to your project's pubspec.yaml:

dependencies:
  flutterflowforge: ^1.0.0

Then run:

dart pub get

Development Installation

For development or testing purposes:

# Clone the repository
git clone https://github.com/iamthetwodigiter/flutterflowforge.git
cd flutterflowforge

# Activate the local copy
dart pub global activate --source path .

Troubleshooting Installation Issues

If you're having trouble with the CLI installation, run:

flutterflowforge --troubleshoot

Or if that doesn't work:

dart pub global run flutterflowforge:flutterflowforge --troubleshoot

Usage

Command Line

# Build a Flutter app with split architecture APKs
flutterflowforge --build

# Build a Flutter app with universal APK
flutterflowforge --universal

# Release to GitHub
flutterflowforge --release

# Full build and release
flutterflowforge --build --universal --release

# Create a draft release with auto-generated notes
flutterflowforge --release --tag=v1.0.0 --draft --generate-notes

# Show help and available options
flutterflowforge --help

Advanced Release Options

# Create a pre-release
flutterflowforge --release --tag=v1.0.0 --prerelease

# Specify a target branch or commit
flutterflowforge --release --tag=v1.0.0 --target-commitish=main

# Create a release with a linked discussion
flutterflowforge --release --tag=v1.0.0 --discussion-category=announcements

# Control if this is the "latest" release
flutterflowforge --release --tag=v1.0.0 --make-latest=legacy

As a Library

import 'package:flutterflowforge/flutterflowforge.dart';

void main() async {
  // Build app
  final buildOptions = BuildOptions(
    appName: 'MyAwesomeApp',
    appVersion: 'v1.0.0',
    cleanBuild: true,
    buildSplitApk: true,
    buildUniversalApk: true,
  );
  
  final builder = AppBuilder(buildOptions);
  final success = await builder.build();
  
  // Create GitHub release
  if (success) {
    final assetFiles = await builder.assetFilesList();
    final releaseOptions = ReleaseOptions(
      tagName: 'v1.0.0',
      releaseName: 'Version 1.0.0',
      releaseBody: 'New release with awesome features!',
      isDraft: false,
      isPrerelease: true,
      generateReleaseNotes: true,
      discussionCategoryName: 'announcements',
    );
    
    final releaser = GitHubReleaser(assetFiles, releaseOptions);
    await releaser.release();
  }
}

Environment Variables

For GitHub releases, create a .env file with the following variables:

# Required for GitHub Releases
GITHUB_TOKEN=your_github_personal_access_token
REPO_OWNER=your_github_username_or_org
REPO_NAME=your_repository_name

# Release Configuration
TAG_NAME=v1.0.0
RELEASE_NAME=Version 1.0.0
RELEASE_BODY=Release description goes here

# Optional Parameters
TARGET_COMMITISH=main
DISCUSSION_CATEGORY_NAME=announcements
MAKE_LATEST=true|false|legacy

GitHub Authentication Setup

FlutterFlowForge requires a GitHub Personal Access Token to create releases.

Getting a GitHub Personal Access Token

  1. Go to your GitHub account settings
  2. Navigate to Developer settings > Personal access tokens > Tokens (classic)
  3. Click Generate new token > Generate new token (classic)
  4. Give your token a descriptive name
  5. Select the following scopes:
    • repo (Full control of private repositories)
  6. Click Generate token
  7. Copy the token and store it securely

Troubleshooting

Rate Limiting

GitHub API has rate limits. If you encounter rate limit errors, the tool will show when the limit resets.

Large Files

GitHub has a 2GB file size limit for release assets. The tool will warn you about files that exceed this limit.

Network Issues

The tool checks for network connectivity before attempting to make API requests.

Contributors

Profile Image

Prabhat Jana

License

This project is licensed under the MIT License - see the LICENSE file for details.

Libraries

flutterflowforge