๐Ÿš€ Share My APK

The Ultimate Flutter APK Build & Upload Automation Tool

Stop the build-and-drag-drop dance! ๐Ÿ’ƒ Your mouse deserves a break.

Pub Version License: MIT Status

From code to shareable link in one command โšก

Automate your Flutter Android APK builds and uploads with the power of magic (and some really good code)


๐ŸŽฏ Why Share My APK?

๐Ÿ˜ฉ Before Share My APK

  • Manual flutter build apk commands
  • Drag & drop APKs to upload sites
  • Manually manage file names and versions
  • Deal with upload failures and size limits
  • Remember different tokens for different services
  • Copy-paste download links manually

๐Ÿš€ After Share My APK

  • One command builds and uploads
  • Automatic FVM detection and Flutter commands
  • Comprehensive build pipeline (clean, pub get, gen-l10n)
  • Fully automated - no manual confirmations needed
  • Smart file naming with versions
  • Robust error handling and retries
  • Unified configuration management
  • Instant shareable links

โœจ What Makes It Special?

๐Ÿ† Feature ๐ŸŽฏ Benefit ๐Ÿ”ฅ Why It Matters
๐Ÿš€ One-Command Magic share_my_apk does it all Save hours of manual work
๐Ÿ”ง Comprehensive Pipeline Clean, deps, l10n, build Enterprise-grade reliability
โ˜๏ธ Multi-Provider Support Diawi + Gofile.io Never worry about size limits
๐Ÿ”„ Smart Auto-Switching Diawi โ†’ Gofile for 70MB+ files Zero upload failures
๐Ÿ“ Smart Configuration YAML-based setup Set once, use forever
๐Ÿ›ก๏ธ Reliable & Tested Production-ready Works every time
๐ŸŽจ Flexible Organization Custom naming & folders Keep your builds organized

๐Ÿ“š Usage

See the Quick Start and Usage Examples sections below for detailed instructions.


โฌ‡๏ธ Installation

Refer to the Installation Options section for how to install share_my_apk.


๐Ÿ’ก Examples

Check out the Usage Examples section for various ways to use this tool.


๐ŸŽ‰ What's New in v0.5.0?

๐Ÿš€ Fully Automated & Comprehensive Build Pipeline!

โœจ Key Improvements

โœ… Comprehensive Build Pipeline - Automatic FVM detection, flutter clean, pub get, and localization generation
โœ… Fully Automated Uploads - Removed confirmation dialog for streamlined CI/CD workflows
โœ… Enhanced Reliability - Professional-grade build process with step-by-step logging
โœ… Enterprise-Ready - Perfect for production environments and automated deployments

๐Ÿ‘€ Click to see the new logs in action!
 [32mโ„น๏ธ [12:55:55] ๐Ÿš€ Starting comprehensive APK build (mode: release)... [0m
 [32mโ„น๏ธ [12:55:55] Using Flutter command: fvm flutter [0m
 [32mโ„น๏ธ [12:55:55] ๐Ÿงน [1/4] Cleaning project... [0m
 [32mโ„น๏ธ [12:55:58] ๐Ÿ“ฆ [2/4] Getting dependencies... [0m
 [32mโ„น๏ธ [12:56:02] ๐ŸŒ [3/4] Generating localizations... [0m
 [32mโ„น๏ธ [12:56:04] ๐Ÿ”จ [4/4] Building APK (release mode)... [0m
 [36mโœจ [12:56:15] Build output: โœ“ Built build/app/outputs/flutter-apk/app-release.apk (55.1MB) [0m
 [32mโ„น๏ธ [12:56:15] โœ… APK built successfully: ./build/app/outputs/flutter-apk/app-release.apk [0m
 [32mโ„น๏ธ [12:56:15] Uploading APK... [0m
 [32mโ„น๏ธ [12:56:15] File: ./moonnote_1.0.1+a2_2025_07_09_12_55_55.apk [0m
 [32mโ„น๏ธ [12:56:15] Size: 55.10 MB [0m
 [32mโ„น๏ธ [12:56:15] Provider: diawi [0m
 [32mโ„น๏ธ [12:56:25] Upload successful: https://i.diawi.com/SzSiZc [0m
 [32mโ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— [0m
 [32mโ•‘ APK successfully uploaded to diawi!                                    โ•‘ [0m
 [32mโ•‘ Download link: https://i.diawi.com/SzSiZc                              โ•‘ [0m
 [32mโ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• [0m

โšก Quick Start

1๏ธโƒฃ Install

dart pub global activate share_my_apk

2๏ธโƒฃ Configure

share_my_apk --init

3๏ธโƒฃ Build & Upload

share_my_apk

4๏ธโƒฃ Share

Get instant download link! ๐Ÿ”—


Installation Options

๐ŸŒ Global Installation

dart pub global activate share_my_apk

Perfect for CLI usage across all projects

๐Ÿ“ฆ Project Dependency

dev_dependencies:
  share_my_apk: ^0.5.0

Perfect for team projects and CI/CD pipelines


๐ŸŽฎ Usage Examples

๐Ÿ”ง Basic Usage

# Initialize configuration (one-time setup)
share_my_apk --init

# Build and upload with default settings
share_my_apk

# Use specific provider
share_my_apk --provider gofile

# Custom naming and environment
share_my_apk --name MyApp_Beta --environment staging

# Debug build
share_my_apk --no-release

# Skip build pipeline steps (for faster builds)
share_my_apk --no-clean --no-pub-get

โš™๏ธ Advanced Configuration

Create share_my_apk.yaml in your project root:

# Provider settings
provider: diawi

# API tokens
diawi_token: your_diawi_token_here
gofile_token: your_gofile_token_here

# Build settings
release: true
path: .

# Build pipeline controls
clean: true          # Run flutter clean
pub-get: true        # Run flutter pub get
gen-l10n: true       # Generate localizations

# File organization
name: MyApp_Production
environment: prod
output-dir: build/releases

๐Ÿ”ฌ Library Usage

import 'package:share_my_apk/share_my_apk.dart';

void main() async {
  // Build APK with comprehensive pipeline
  final buildService = FlutterBuildService();
  final apkPath = await buildService.build(
    release: true,
    customName: 'MyApp_Beta',
    environment: 'staging',
    clean: true,           // Run flutter clean
    getPubDeps: true,      // Run flutter pub get
    generateL10n: true,    // Generate localizations
  );

  // Upload to cloud
  final uploader = UploadServiceFactory.create('gofile');
  final downloadLink = await uploader.upload(apkPath);
  
  print('๐Ÿš€ Download link: $downloadLink');
}

๐ŸŽฏ Command Reference

Command Alias Description Example
--help -h Show help message share_my_apk --help
--init - Generate config file share_my_apk --init
--path -p Project path share_my_apk -p /my/project
--provider - Upload provider share_my_apk --provider gofile
--name -n Custom APK name share_my_apk -n MyApp_Beta
--environment -e Environment folder share_my_apk -e staging
--output-dir -o Output directory share_my_apk -o build/apks
--diawi-token - Diawi API token share_my_apk --diawi-token abc123
--gofile-token - Gofile API token share_my_apk --gofile-token xyz789
--release - Release build (default) share_my_apk --release
--no-release - Debug build share_my_apk --no-release
--clean - Run flutter clean (default) share_my_apk --clean
--no-clean - Skip flutter clean share_my_apk --no-clean
--pub-get - Run flutter pub get (default) share_my_apk --pub-get
--no-pub-get - Skip flutter pub get share_my_apk --no-pub-get
--gen-l10n - Generate localizations (default) share_my_apk --gen-l10n
--no-gen-l10n - Skip localization generation share_my_apk --no-gen-l10n

๐Ÿ’ก Pro Tip: Share My APK automatically switches from Diawi to Gofile for files >70MB!


๐Ÿš€ Fully Automated Workflow

Share My APK now provides a completely automated experience, perfect for CI/CD pipelines and production workflows.

๐Ÿงน [1/4] Cleaning project...
๐Ÿ“ฆ [2/4] Getting dependencies...
๐ŸŒ [3/4] Generating localizations...
๐Ÿ”จ [4/4] Building APK (release mode)...
โ„น๏ธ [12:56:05] Uploading APK...
โ„น๏ธ [12:56:05] File: /path/to/your/app.apk
โ„น๏ธ [12:56:05] Size: 55.10 MB
โ„น๏ธ [12:56:05] Provider: diawi

๐Ÿ›ก๏ธ Reliability & Quality

Share My APK is production-ready and thoroughly tested to ensure it works reliably in real-world scenarios.

โœ… What We've Tested

  • โœ… Large File Uploads - Successfully tested with 113MB+ APKs
  • โœ… Network Resilience - Handles connection issues gracefully
  • โœ… Provider Switching - Automatic fallback works seamlessly
  • โœ… Build Pipeline - Comprehensive testing with FVM, clean builds, dependencies
  • โœ… Edge Cases - Handles special characters, long paths, and more
  • โœ… Cross-Platform - Works on Windows, macOS, and Linux
  • โœ… CI/CD Ready - Fully automated for production deployments

Ready for your production workflow! ๐Ÿš€


๐Ÿ“ File Organization Magic

Share My APK keeps your builds organized with smart naming:

output-directory/
โ”œโ”€โ”€ environment/                    # Optional environment folder
โ”‚   โ”œโ”€โ”€ MyApp_1.0.0_2025_07_09_14_30_45.apk
โ”‚   โ”œโ”€โ”€ MyApp_1.0.1_2025_07_09_15_15_30.apk
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ staging/
โ”‚   โ”œโ”€โ”€ MyApp_Beta_1.0.0_2025_07_09_12_00_00.apk
โ”‚   โ””โ”€โ”€ ...
โ””โ”€โ”€ prod/
    โ”œโ”€โ”€ MyApp_Production_1.0.0_2025_07_09_16_45_30.apk
    โ””โ”€โ”€ ...

Naming Pattern: {name}_{version}_{timestamp}.apk

๐Ÿ“š Need More Info?

๐Ÿ“– Resource ๐ŸŽฏ What's Inside
Release Notes What's new and version history
Changelog Detailed version changes

๐ŸŽ‰ Ready to Get Started?

dart pub global activate share_my_apk
share_my_apk --init
share_my_apk

That's it! You're now sharing APKs like a pro! ๐ŸŽฏ


๐Ÿ’ฌ Need Help?


Made with โค๏ธ for the Flutter community

GitHub License

Because sharing should be simple, not a chore โœจ

Libraries

share_my_apk
A library to build and upload Flutter Android APKs.