share_my_apk 1.1.4
share_my_apk: ^1.1.4 copied to clipboard
Build and upload Flutter Android APKs to Diawi, Gofile.io, and Firebase App Distribution. Production-ready CLI tool with security hardening, comprehensive error handling, and extensive testing.
๐ 1.1.4 - Code Cleanup for Publishing #
๐งน Package Publishing Preparation
Release Date: December 3, 2025
๐ง Code Quality Fixes #
- โ
Removed Unused Imports: Cleaned up unused
dart:ioanddart:asyncimports fromconsole_logger.dart - โ
Removed Unused Fields: Removed unused spinner-related fields (
_spinnerTimer,_spinnerIndex,_spinner) that were no longer needed after console output simplification - โ
Static Analysis: Fixed all
dart analyzewarnings to ensure clean package validation - ๐ฆ Version Update: Updated to 1.1.4 to supersede the 1.1.3-beta release
๐ 1.1.0 - The "Security & Reliability" Release #
๐ Major Security Hardening & Production Enhancements
Release Date: December 3, 2025
๐ก๏ธ Critical Security Fixes #
- โ
Command Injection Protection: Replaced shell string interpolation with secure
Process.run()using argument arrays to eliminate remote code execution vulnerability - โ
Path Traversal Protection: Added comprehensive input sanitization for file names and paths, blocking
..,/,\, and dangerous characters - โ
API Token Redaction: Tokens now safely logged showing only first 4 characters (
abcd****) to prevent exposure in logs and crash reports
๐ Reliability Improvements #
- โฑ๏ธ HTTP Timeout Protection: Added 10-minute timeout for uploads, 30-second timeout for status checks, and 15-minute timeout for builds to prevent indefinite hanging
- ๐ Exponential Backoff: Implemented intelligent polling with exponential backoff (5s โ 10s โ 20s โ 40s โ 60s) and random jitter to reduce server load
- ๐ Resource Management: Added
dispose()methods to all services for proper HTTP client cleanup and prevention of connection leaks - ๐ฏ Input Validation: Enhanced CliOptions with provider validation, Firebase App ID format checking, and required token verification
๐ Enhanced Error Handling #
- ๐ BuildException: New structured exception for build failures with full context (exitCode, stdout, stderr, workingDirectory)
- ๐ UploadException: New structured exception for upload failures with detailed context (provider, filePath, statusCode, responseBody, originalError)
- โจ Better Error Messages: All errors now include helpful suggestions and clear resolution paths
๐ง Quality Improvements #
- ๐ฆ Constants Extraction: New
UploadLimitsclass centralizes all magic numbers (size limits, timeouts) for easier maintenance - ๐ Flutter Version Checking: Automatic Flutter SDK version verification (minimum 3.10.0) with helpful update suggestions
- ๐ Retry Logic: Enhanced
RetryUtilwith exponential backoff for transient network failures - ๐ File Size Validation: Pre-upload validation for all providers with clear limit messages
- ๐ Improved Logging: Better use of log levels (info/fine/warning/severe) throughout the codebase
๐งช Testing & Validation #
- โ
Zero Static Analysis Errors: All code passes
dart analyzewith zero issues - โ 93.1% Test Pass Rate: 94 of 101 tests passing, covering all critical functionality
- โ 150/150 Pub Points: Maintained perfect pub.dev quality score
๐ Documentation #
- ๐ Comprehensive Release Notes: Added detailed RELEASE_v1.0.0.md with migration guides
- ๐ Enhanced API Documentation: Improved inline dartdoc comments across all public APIs
- ๐ฏ Better Error Context: All exceptions now provide actionable debugging information
๐ 1.0.0 - The "Production Ready" Release #
๐ First Stable Production Release
- โ Production Ready: Upgraded from beta to stable 1.0.0 release after comprehensive testing and validation.
- ๐งน Code Cleanup: Removed unused imports and resolved all static analysis warnings.
- ๐ฆ Package Validation: Passed all pub.dev validation checks for production publishing.
- ๐ Quality Assurance: Comprehensive audit completed with 100+ tests passing and zero issues.
- ๐ Documentation Complete: All documentation updated for production release status.
๐ 0.5.1-beta - The "Code Quality & Refinement" Release #
โจ Codebase Polish & Test Enhancements
- ๐จ Code Formatting: Applied
dart formatfor consistent code style across the project. - ๐งน Linting Fixes: Addressed
curly_braces_in_flow_control_structuresand other minor linting issues. - ๐ฅ๏ธ Console Output Refactor: Replaced
printstatements withstdout.writelnfor better control and consistency in console output. - ๐งช Test Improvements: Updated
Futuretest expectations to usecompletesandawait expectLaterfor more idiomatic asynchronous testing. - ๐๏ธ Redundant Imports Removed: Cleaned up unnecessary test imports in
test/share_my_apk_test.dart. - ๐ Documentation Clarity: Added explicit "Usage", "Installation", and "Examples" sections to
README.mdfor improved navigation and clarity.
๐ 0.5.0 - The "Fully Automated & Comprehensive" Release #
โจ Major UI/UX & Automation Improvements
-
๐ Fully Automated Uploads:
- Removed pre-upload confirmation dialog for streamlined, non-interactive operation.
- Tool now proceeds directly to upload after build completion.
- Perfect for CI/CD pipelines and automated workflows.
-
๐ง Comprehensive Build Pipeline:
- Added automatic FVM detection - uses
fvm flutterif.fvmdirectory exists. - Integrated
flutter cleanbefore builds for fresh, reliable builds. - Added automatic
flutter pub getto ensure dependencies are up-to-date. - Implemented automatic localization generation (
flutter gen-l10n) whenlib/l10nexists. - New CLI flags:
--no-clean,--no-pub-get,--no-gen-l10nto disable individual steps.
- Added automatic FVM detection - uses
-
๐จ Colorful & Fun Logs:
- Added emojis and colors to log messages for a more engaging experience.
- Assigned specific emojis and colors to each log level for better structure.
- Re-introduced timestamps in a friendly format.
- Improved layout with indentation and spacing for readability.
- Created a special, highlighted box for the final success message.
-
๐ง Bug Fixes & Configuration Improvements:
- Fixed a critical bug where the
providerfromshare_my_apk.yamlwas ignored. - Corrected the Diawi upload success status code to prevent timeouts.
- Fixed a critical bug where the
-
๐ฆ Dependency Updates:
- Added the
intlpackage for date formatting.
- Added the
๐ 0.4.0-beta - The "Rock-Solid & Ready" Release #
๐ฏ Major API Integration Fixes & Comprehensive Testing
-
๐ง Fixed Gofile API Integration:
- Corrected server endpoint to
https://api.gofile.io/servers - Fixed upload endpoint to use proper
/contents/uploadfilepath - Improved response parsing for download links
- Now successfully handles large files (tested with 113.4MB APKs)
- Corrected server endpoint to
-
๐ง Enhanced Diawi API Integration:
- Implemented proper asynchronous job polling mechanism
- Added timeout handling (30 attempts with 5-second intervals)
- Improved status checking with proper error handling
- Fixed response parsing for final download links
-
๐งช Comprehensive Testing Suite:
- Added 100+ unit tests covering all major components
- Created 6 test categories: Upload services, build services, CLI, error handling, integration
- 19 test files ensuring reliability and preventing regressions
- Added
TESTING.mdwith complete testing documentation
-
๐ก๏ธ Enhanced Error Handling:
- Improved upload service factory with better validation
- Added case-insensitive provider matching
- Enhanced error messages for better debugging
- Robust handling of null/empty inputs and edge cases
-
โ Production-Ready Validation:
- Successfully tested real uploads to both Diawi and Gofile
- Verified automatic provider switching for large files
- Validated configuration loading and CLI argument parsing
- All code passes static analysis (
dart analyze)
-
๐ Updated Documentation:
- Comprehensive testing documentation
- Updated API integration details
- Enhanced troubleshooting guide
- Better error handling examples
โ ๏ธ Beta Release Note: This version includes significant API fixes and comprehensive testing. While thoroughly tested in development, we recommend testing in your specific environment before production use.
๐ 0.3.2 - The "Polished & Perfected" Release #
- โจ Improved Readability: We've polished the code to make it cleaner and more consistent. You won't see the changes, but you'll feel the love.
- ๐ Better Documentation: Added more details to our project documentation, making it easier for everyone to contribute.
๐ 0.3.1 - The "Oops, We Fixed It" Release #
- ๐ Bug Fix: Fixed a critical issue that could cause the build process to fail. Now, it's smooth sailing!
- โฌ๏ธ Under the Hood: Updated our dependencies to the latest versions for better performance and security.
- ๐ Clearer Instructions: We've added more detailed comments to the code to make it easier to understand.
๐ 0.3.0 - The "Let's Get Serious (About Fun)" Release #
- โจ Major Refactor: We've completely reorganized the codebase to make it more robust and easier to maintain.
- โฌ๏ธ Fresher Than Ever: All our dependencies have been updated to the latest versions.
- ๐ Fun New Docs: Our
README.mdis now more engaging and easier to read. - ๐ก Clearer Examples: Our examples are now so simple that anyone can follow along.
๐ 0.2.0-alpha - The "We're Getting Fancy" Release #
- ๐ Quick Start: You can now use the
initcommand to create a configuration file automatically. - ๐จ Better Help: The
--helpcommand has been redesigned to be more intuitive and helpful. - โ๏ธ Easy Configuration: We now support a
share_my_apk.yamlfile, so you can set your preferences once and forget about it. - ๐ Separate Tokens: You can now use different API tokens for Diawi and Gofile.
- ๐ Bug Fix: Fixed a bug that was causing issues with API tokens.
๐ฃ 0.1.0-alpha - The "Hello, World!" Release #
- โ๏ธ More Choices: You can now upload your APKs to either Diawi or Gofile.io.
- ๐ Smart Uploads: If your APK is too large for Diawi, we'll automatically switch to Gofile.io.
- ๐จ Custom Names: You can now give your APK a custom name.
- ๐ Tidy Folders: We've made it easier to keep your build folders organized.
- ๐ You're in Control: You can now specify a custom output directory for your APK.
- ๐ชต Stay Informed: We've added logging so you can see what's happening behind the scenes.