Last updated:
0 purchases
flutter release
flutter_release #
A tool for building and publishing Flutter apps, e.g. on GitHub, the Google Play Store and Apple's App Store.
See also the according GitHub action.
Example #
Build:
flutter_release build apk \
--app-name example \
--app-version v0.0.1-alpha.1 \
--build-arg=--dart-define=API_URL=https://example.com \
--build-arg=--dart-define=API_KEY=12345678
copied to clipboard
Publish:
flutter_release publish android-google-play \
--dry-run \
--stage internal \
--app-name wrestling_scoreboard_client \
--app-version v0.0.1-alpha.1 \
--build-arg=--dart-define=API_URL=https://example.com \
--build-arg=--dart-define=API_KEY=12345678 \
--fastlane-secrets-json-base64=$(base64 --wrap=0 android/fastlane-secrets.json) \
--keystore-file-base64=$(base64 --wrap=0 android/keystore.jks) \
--keystore-password=<mykeystorepassword> \
--key-alias=<mykeyalias>
copied to clipboard
If the command is not found (in the PATH), try: dart pub global run flutter_release ....
Note that you have to pass the base64 arguments without any newline characters:
MY_BASE_64=$(base64 --wrap=0 /myfile)
copied to clipboard
Or remove them afterward:
MY_BASE_64="${MY_BASE_64//$'\n'/}"
copied to clipboard
Options: #
app-name: The name of the app executable
app-version: Semantic version of the release (like v1.2.3), see https://semver.org/
build-number: Specify the build number (also used as version code for Android, but is handled automatically)
build-type: Release one of the following options: apk, web, ipk, macos, windows, debian
build-arg: Add options such as --dart-define to the flutter build command
Supported Features #
Platform
Android
iOS
web
Windows
macOS
Linux
Build
apk ✓
aab ✓
ipa ❌
web ✓
windows ✓
macos ✓
linux ✓
debian ✓
Publish
Google Play ✓
iOS App Store ✓
Web Server ✓
Microsoft Store ❌
Mac App Store ❌
Snap ❌
Ubuntu ❌
Support for other app distributors is planned.
Setup #
Android - Google Play Store (via Debian only) #
Create an App in your Google Play Console.
Make sure you have these files ignored in your ./android/.gitignore:
key.properties
**/*.keystore
**/*.jks
# Google Play Store credentials
fastlane-*.json
play-store-credentials.json
copied to clipboard
Configure signing in gradle.
This is needed to be able to execute the build via Flutter and not via Gradle.
Convert the keystore to a base64 string e.g. base64 --wrap=0 android/keystore.jks
Follow the guide of fastlane
for setting up supply.
Convert the Google Play Store credentials json to base64 e.g. base64 --wrap=0 android/fastlane-secrets.json
Manually build a signed app bundle and publish it on the Google Play Store at least once to be able to automate the
process, e.g.:
flutter build appbundle \
--release \
--build-name=0.0.1-beta.10 \
--dart-define=API_URL=https://example.com \
--dart-define=API_KEY=12345678
copied to clipboard
iOS - App Store #
Make sure you have these files ignored in your ./ios/.gitignore:
*.cer
*.certSigningRequest
*.mobileprovision
*.p12
*.p8
copied to clipboard
Create an App Store connect API Team key with App Manager permissions.
Copy the key into your ios folder. Also copy the Key ID and the Issuer ID for later.
Execute flutter_release prepare ios. Follow the steps.
To delete existing certificates, visit: https://developer.apple.com/account/resources/certificates/list
Make sure the certificate is selected in the App Store provisioning profile
Extract the information from the ios/fastlane/Appfile file.
Run flutter_release
flutter_release publish ios-app-store \
--dry-run \
--app-name wrestling_scoreboard_client \
--app-version v0.0.1-alpha.1 \
--build-arg=--dart-define=API_URL=https://example.com \
--build-arg=--dart-define=API_KEY=12345678 \
--apple-username=<apple_id> \
--api-key-id=<api-key-id> \
--api-issuer-id=<api-issuer-id> \
--api-private-key-base64=<api-private-key> \
--content-provider-id=<itc_team_id> \
--team-id=<team_id> \
--distribution-private-key-base64=<distribution-private-key>
copied to clipboard
Optionally add the --team-enterprise flag, if your team is in the Apple Developer Enterprise Program.
Web - Server (via Debian only) #
Generate a key pair on your client ssh-keygen -t ed25519 -f $HOME/.ssh/id_ed25519_flutter_release -C flutter_release without a passphrase
Add the output of cat $HOME/.ssh/id_ed25519_flutter_release.pub to your servers $HOME/.ssh/authorized_keys
Convert the private key to a base64 string e.g. base64 --wrap=0 $HOME/.ssh/id_ed25519_flutter_release
Run flutter_release
flutter_release publish web-server \
--dry-run \
--app-name wrestling_scoreboard_client \
--app-version v0.0.1-alpha.1 \
--build-arg=--dart-define=API_URL=https://example.com \
--build-arg=--dart-define=API_KEY=12345678 \
--host=host.example.com \
--path=/var/www/html \
--ssh-port=22 \
--ssh-user=<user> \
--ssh-private-key-base64=<private-key>
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.