Releasing to the Google Play Store
This guide walks through releasing a code push app to the Google Play Store and applying a patch to that release.
The app we will be releasing in this guide is Time Shift
, our demo code push app. (source)
Prerequisitesβ
This guide assumes that you have an existing Shorebird app. If you don't have one, you can create one by following the code push quickstart guide.
Creating a releaseβ
Determine next release versionβ
Navigate to your app on the Shorebird console
to see the current set of releases. For our app, we see that the latest release
version is 1.0.2+5
, so the version of our next release will be 1.0.3+6
.
Make code changesβ
Version 1.0.3+6
of Time Shift will change the default clock face from particle
to generative
.
To make this change, edit lib/main.dart
:
final clock = ClockFace.values.firstWhere(
(clock) => clock.name == clockName,
- orElse: () => ClockFace.particle,
+ orElse: () => ClockFace.generative,
);
Verify that this change does what we expect by running the app with shorebird run
.
Once this change has been verified, commit this change and push it to GitHub:
git add lib/main.dart
git commit -m "Change default clock face to generative"
git push
Update app versionβ
Next, bump the app version in pubspec.yaml
:
name: time_shift
description: Demo app showing Shorebird updates.
publish_to: "none"
-version: 1.0.2+5
+version: 1.0.3+6
environment:
sdk: ">=2.19.4 <3.0.0"
Commit, tag, and push the change.
git add pubspec.yaml
git commit -m "Update app version to 1.0.3+6"
git tag v1.0.3+6
git push # Push the commit
git push --tags # Push the tag
Create a Shorebird releaseβ
To create a Shorebird release, run shorebird release android
. You should see output similar to the following:
bryanoltman@boltman ~/Shorebird/time_shift (main)
β shorebird release android
β Building release (17.0s)
β Fetching apps (0.3s)
β Detecting release version (0.2s)
π Ready to create a new release!
π± App: time_shift (51751336-6a7c-4972-b4ec-8fc1591fb2b3)
π¦ Release Version: 1.0.3+6
πΉοΈ Platform: android (arm64, arm32, x86_64)
Would you like to continue? (y/N) Yes
β Fetching releases (70ms)
β Fetching Flutter revision (22ms)
β Creating release (61ms)
β Creating artifacts (2.5s)
β
Published Release!
Your next step is to upload the app bundle to the Play Store.
./build/app/outputs/bundle/release/app-release.aab
See the following link for more information:
https://support.google.com/googleplay/android-developer/answer/9859152?hl=en
Upload to the Play Storeβ
As per the instructions above, we must upload the generated .aab
to the Play Store.
- Navigate to the Play Console.
- Choose your developer account (for us, it's Shorebirdbird.dev).
- Select the Time Shift app.
- Select "Testing -> Open Testing" from the side bar.
- Click the "Create new release" button.
Upload the .aab
file located at ./build/app/outputs/bundle/release/app-release.aab
.
- From the root directory of the project, run
open ./build/app/outputs/bundle/release/
to open the folder containing the.aab
in Finder. - Drag
app-release.aab
into the Play Console to upload.
Once the upload completes, the Play Store will correctly recognize the new version as 6 (1.0.3)
.
Click "Next" and then "Save" (both in the bottom-right corner) to submit.
This will take you to the publishing overview page. Click "Submit for review" to submit the release for review.
You should now see a release in the Play Store console with an "In review" status:
Now you must wait for the Play Store to approve the release.
Create a GitHub releaseβ
It's recommended to create a GitHub release as well.
- Navigate to https://github.com/shorebirdtech/time_shift/releases.
- Click "Draft a new release".
- Choose the tag we created earlier (
v1.0.3+6
). - Title the release "v1.0.3+6".
- Add a description of the release ("Changes the default clock face to 'generative'").
- Publish the release.
After the release is approvedβ
Once the release has been approved, you will be able to download it from the Play Store.
Creating a patchβ
Patches can be pushed to fix bugs in the 1.0.3+6
release without requiring a new submission to the Play Store.
Make the changeβ
Start by checking out the v1.0.3+6
release tag:
git checkout v1.0.3+6
Next, create a branch, as this change will represent a divergence from the main
branch:
git checkout -b v1.0.3+6-patch1
For the purposes of this guide, we will change the default clock face back to particle
in lib/main.dart
:
(clock) => clock.name == clockName,
- orElse: () => ClockFace.generative,
+ orElse: () => ClockFace.particle,
);
Commit the change and push our new patch branch:
git add lib/main.dart
git commit -m "Change default clock face to particle"
git push --set-upstream origin v1.0.3+6-patch1
Tag this commit as v1.0.3+6-patch1
:
git tag v1.0.3+6-patch1
git push --tags
Create a Shorebird patchβ
Finally, push the patch with shorebird patch android
. You should see output similar to the following:
bryanoltman@boltman ~/Shorebird/time_shift (main)
β shorebird patch android
β Building patch (17.2s)
β Fetching apps (0.7s)
β Detecting release version (0.2s)
β Fetching release (99ms)
β Fetching Flutter revision (13ms)
β Fetching release artifacts (0.2s)
β Downloading release artifacts (1.0s)
β Creating artifacts (1.0s)
π Ready to publish a new patch!
π± App: time_shift (51751336-6a7c-4972-b4ec-8fc1591fb2b3)
π¦ Release Version: 1.0.3+6
πΊ Channel: stable
πΉοΈ Platform: android [arm64 (135 B), arm32 (150 B), x86_64 (135 B)]
Would you like to continue? (y/N) Yes
β Creating patch (0.1s)
β Uploading artifacts (0.9s)
β Fetching channels (90ms)
β Promoting patch to stable (61ms)
β
Published Patch!
This patch will now be available to users with version 1.0.3+6
of the app.
Cleanupβ
Delete the branch to keep the repository tidy:
git checkout main
git branch -D v1.0.3+6-patch1
git push origin --delete v1.0.3+6-patch1
Note: this change is still accessible via the
v1.0.3+6-patch1
tag.