Skip to content

fastforgedev/fastforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

471 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

fastforge formerly Flutter Distributor

pub version pub downloads melos All Contributors

The ultimate all-in-one Flutter application packaging and distribution tool, providing a seamless solution for all your distribution needs.

Warning

Rust Migration In Progress: The core of Fastforge is being rewritten in Rust to deliver better performance, a smaller install footprint, and zero runtime dependencies on the Dart SDK. The new implementation lives in the crates/ directory and is being developed in parallel with the existing Dart packages.

What this means for you:

  • The current Dart-based CLI (dart pub global activate fastforge) continues to work and receives bug fixes.
  • The Rust CLI will be released as a native binary โ€” no Dart or Flutter SDK required to run it.
  • APIs and configuration formats are designed to remain compatible; any breaking changes will be clearly announced.
  • Contributions, feedback, and bug reports on the Rust implementation are very welcome โ€” see the Contributing section.

English | ็ฎ€ไฝ“ไธญๆ–‡


Documentation

Complete documentation is available at fastforge.dev.

Key Features

  • ๐Ÿš€ One-Click Build: Support for Android APK/AAB, iOS IPA, OpenHarmony HAP/APP and more
  • ๐Ÿ“ฆ Multi-Platform Release: Support for App Store, Google Play, Firebase, Pgyer, fir.im, etc.
  • ๐Ÿ”„ CI/CD Integration: Perfect integration with GitHub Actions, GitLab CI, and more
  • ๐Ÿ›  Flexible Configuration: Support for multiple environments, flavors, and custom build arguments

Supported Package Formats

Supported Distribution Platforms

Installation

dart pub global activate fastforge

Quick Start

  1. Add distribute_options.yaml to your project root:
variables:
  PGYER_API_KEY: "your api key" # Replace with your own API keys
output: dist/
releases:
  - name: dev
    jobs:
      # Build and publish APK to PGYER
      - name: release-dev-android
        package:
          platform: android
          target: apk
          build_args:
            target-platform: android-arm,android-arm64
            dart-define:
              APP_ENV: dev
        publish_to: pgyer

      # Build and publish IPA to PGYER
      - name: release-dev-ios
        package:
          platform: ios
          target: ipa
          build_args:
            export-options-plist: ios/dev_ExportOptions.plist
            dart-define:
              APP_ENV: dev
        publish_to: pgyer

Note: build_args are parameters supported by the flutter build command. Modify them according to your project requirements.

  1. Release your app:
fastforge release --name dev

CLI Commands

Package Your App

fastforge package --platform=android --targets=aab,apk

Publish a Package

fastforge publish --path dist/your-app-1.0.0+1-android.apk --targets pgyer

Release (Package + Publish)

fastforge release --name dev

Examples

Fastforge includes several example projects to help you get started:

Advanced Usage

Environment Variables

Fastforge supports using environment variables in your configuration files. This is useful for sensitive information like API keys:

variables:
  API_KEY: ${PGYER_API_KEY} # Uses the PGYER_API_KEY environment variable

CI/CD Integration

Fastforge works well in CI/CD environments. For example, with GitHub Actions:

jobs:
  build-and-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2
      - name: Install Fastforge
        run: dart pub global activate fastforge
      - name: Build and release
        run: fastforge release --name production
        env:
          API_KEY: ${{ secrets.API_KEY }}

Check the documentation for more detailed CI/CD integration examples.

Who's Using It?

  • Biyi - A convenient translation and dictionary app.
  • Qianji - A purely bookkeeping app.
  • Airclap - Send any file to any device. cross platform, ultra fast and easy to use.

Contributing

Contributions are welcome! If you'd like to help improve Fastforge:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure to update tests as appropriate and follow the existing code style.

Contributors

LiJianying
LiJianying

๐Ÿ’ป
Zero
Zero

๐Ÿ’ป
Kingkor Roy Tirtho
Kingkor Roy Tirtho

๐Ÿ’ป
LAIIIHZ
LAIIIHZ

๐Ÿ’ป
Tomohiro Ueki
Tomohiro Ueki

๐Ÿ’ป
Sven Gehring
Sven Gehring

๐Ÿ’ป
GargantuaX
GargantuaX

๐Ÿ’ป
Hiperion
Hiperion

๐Ÿ’ป
Reuben Turner
Reuben Turner

๐Ÿ’ป
Ankit Mahato
Ankit Mahato

๐Ÿ“–
Tien Do Nam
Tien Do Nam

๐Ÿ’ป
zacks
zacks

๐Ÿ’ป
Mohammed  CHAHBOUN
Mohammed CHAHBOUN

๐Ÿ’ป
Prateek Sunal
Prateek Sunal

๐Ÿ’ป
lllgm
lllgm

๐Ÿ’ป
Arran Ubels
Arran Ubels

๐Ÿ’ป
Sherman Chu
Sherman Chu

๐Ÿ’ป ๐Ÿ“–
DrSheppard
DrSheppard

๐Ÿ“–
cranst0n
cranst0n

๐Ÿ’ป
duskygloom
duskygloom

๐Ÿ’ป
imnadev
imnadev

๐Ÿ’ป
jenken827
jenken827

๐Ÿ’ป
kecson
kecson

๐Ÿ’ป
zzqayy
zzqayy

๐Ÿ’ป
Add your contributions

License

MIT

About

The ultimate all-in-one Flutter application packaging and distribution tool, providing a seamless solution for all your distribution needs.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors

โšก