Sending builds to Google Play
Once this is set up, each Android build in your build list has a Google Play button beside its APK and AAB. Press it, choose a track, and the build is uploaded to your app in your own Play Console. Nothing is downloaded to your computer and nothing is uploaded by hand.
You need two things before the button works:
- A build signed with your own upload key. A build signed for testing cannot go to Play at all. See Android signing.
- A Google Play service account: a Google Cloud account that you create, invite in Play Console, and save on your site. Memberside uploads as that account.
The steps below appear in the Google Play setup window under Sending builds to Google Play, in the same order. When the button cannot send yet, it opens that window at the first step in the way.
Plugin support
Section titled “Plugin support”Your site’s Memberside plugin has to be a version that can hand out an upload token. If the step says so, open Plugins on your site and update Memberside.
Service account
Section titled “Service account”- In Google Cloud Console, open IAM and admin → Service accounts.
- Choose Create service account and give it a name, such as “Memberside publishing”. It needs no Google Cloud roles.
- Open the account, go to Keys → Add key → Create new key, and choose JSON.
- In Google Play setup, choose Choose JSON file and pick the file you downloaded.
The file goes straight to your site. You can also save it there yourself, under Memberside → API Keys → Android signing → Google Play publishing service account.
If your site already has a service account for in-app purchases, you can skip this step: Memberside uses that account when the publishing one is empty, and the setup window says so. That account then needs the release permissions in Permissions in Play Console as well as the ones it already has.
API enabled
Section titled “API enabled”Google refuses every request from a project where the Google Play Android Developer API is switched off.
- In Google Cloud Console, pick the project your service account belongs to.
- Open APIs and services → Library and find Google Play Android Developer API.
- Choose Enable.
- Wait a few minutes, then choose Check again in Google Play setup.
Permissions in Play Console
Section titled “Permissions in Play Console”Creating the account in Google Cloud gives it no access to Play. Play Console decides what it can touch.
- In Play Console, open Users and permissions → Invite new users.
- Paste the service account’s email address. Google Play setup shows it with a copy button.
- Under App permissions, add this app.
- Tick Release apps to testing tracks. Tick Release to production too if you will send builds there.
- Send the invitation.
Google can take a while to apply new permissions. Choose Check again afterwards.
First upload
Section titled “First upload”Google Play does not let the API see a new app until its first bundle has been uploaded in Play Console by hand. Until then, Google answers as if the app did not exist.
Google gives the same answer for an app that is live but that your service account cannot see yet, so the step cannot tell the two apart on its own. If your app already has a build in Play Console, on any track, do not upload again. Tick This app already has a build in Play Console, and the setup points you at Permissions in Play Console instead.
For an app with nothing uploaded yet:
- In Google Play setup, download the
.aabof your latest build signed with your upload key. - In Play Console, open your app and go to Test and release → Testing → Internal testing.
- Create a new release and upload the
.aab. - Save it and roll it out to internal testing.
- Choose Check again in Google Play setup.
If Play Console keeps an earlier bundle in the new release, remove it, or Play warns that the older version is shadowed and will not be served.
You do this once per app. Every build after it can go from the build list.
Sending a build
Section titled “Sending a build”Press Google Play beside a build, choose a track, optionally add what’s new, and send. The build list shows where it is:
| The build list shows | Meaning |
|---|---|
| Sending to Internal testing… | The upload is in progress. It usually takes a minute or two |
| In Play · Internal testing | The build is on that track |
| Draft in Play — roll it out in Play Console | Play has the build, but your app has never been published, so Play only accepts it as a draft. Roll it out in Play Console |
| In Play — send it for review in Play Console | Your app is set to have changes sent for review by hand. Send them in Play Console |
| Google Play refused it | Google’s own reason is shown, with a link to the setup step that fixes it when there is one |
A build already in Play is not uploaded again. Pressing Send again on it and choosing another track moves the same build there, which is how you promote a build from testing to Production.
Tracks
Section titled “Tracks”| Track | Who gets it | Reviewed by Google |
|---|---|---|
| Internal testing | Up to 100 testers you name, within minutes | No |
| Closed testing | Testers you invite by email list or Google Group | Yes |
| Open testing | Anyone who joins from your Play listing | Yes |
| Production | Everyone on Google Play | Yes |
Internal testing is selected by default. Sending to a track replaces what that track was offering with this build.
Sending every build automatically
Section titled “Sending every build automatically”Once sending works, the app page offers Send new Android builds to Google Play. Pick a track and every new build signed with your upload key is sent there as soon as it finishes. A build signed for testing is never sent. Choose Off to stop.
When it does not work
Section titled “When it does not work”| Symptom | Cause | Fix |
|---|---|---|
| “Google won’t issue a token for the saved account” | The key was deleted in Google Cloud, or the account disabled | Create a new JSON key and save it again |
| “has not been used in project … or it is disabled” | The Google Play Android Developer API is off in that project | Enable it — see API enabled |
| “The caller does not have permission” | The account is not invited in Play Console, or not for this app | See Permissions in Play Console. Allow time for Google to apply it |
| “Package not found” | Either the account cannot see the app yet, or the app has no build in Play Console | If the app already has a build, tick that in First upload and fix permissions. Otherwise upload the first bundle by hand |
| “The caller does not have permission” right after you invited the account | Google has not applied the invitation yet, or a different account was invited | Check that the invited address matches the one in Google Play setup. Wait a few hours and choose Check again |
| “This APK will not be served … shadowed by one or more APKs with higher version codes” | A release you made in Play Console still holds an older bundle beside a newer one | Remove the older version code from that release in Play Console. Releases sent from Memberside hold only the build you sent |
| Play says the bundle is signed with the wrong key | The upload key on your site is not the one Play has for this app | Use the keystore Play expects, or ask Google to reset your upload key in Play Console |
| “This build is signed for testing only” | That build was made before your upload key was set up | Build again, then send the new build |
| “This build’s files have expired” | Builds are kept for 30 days | Build again, then send the new build |
| The button opens the setup window instead of sending | A step in Sending builds to Google Play is not done | Follow the step it opens at |
Preparing your store listing and Exporting your listing — sending a build does not fill in your Play listing.