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)
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.
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
.
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.dartgit commit -m "Change default clock face to generative"git push
Next, bump the app version in pubspec.yaml
:
name: time_shiftdescription: Demo app showing Shorebird updates.publish_to: "none"
version: 1.0.2+5version: 1.0.3+6
environment: sdk: ">=2.19.4 <3.0.0"
Commit, tag, and push the change.
git add pubspec.yamlgit commit -m "Update app version to 1.0.3+6"git tag v1.0.3+6git push # Push the commitgit push --tags # Push the tag
To create a Shorebird release, run shorebird release android
. You should see output similar to the following:
$ 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
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 Shorebird.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.
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.
Once the release has been approved, you will be able to download it from the Play Store.
Patches can be pushed to fix bugs in the 1.0.3+6
release without requiring a new submission to the Play Store.
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.dartgit 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-patch1git push --tags
Finally, push the patch with shorebird patch android
. You should see output similar to the following:
$ 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.
Delete the branch to keep the repository tidy:
git checkout maingit branch -D v1.0.3+6-patch1git push origin --delete v1.0.3+6-patch1