Skip to content

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.

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.

  1. In Google Cloud Console, open IAM and admin → Service accounts.
  2. Choose Create service account and give it a name, such as “Memberside publishing”. It needs no Google Cloud roles.
  3. Open the account, go to Keys → Add key → Create new key, and choose JSON.
  4. 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.

Google refuses every request from a project where the Google Play Android Developer API is switched off.

  1. In Google Cloud Console, pick the project your service account belongs to.
  2. Open APIs and services → Library and find Google Play Android Developer API.
  3. Choose Enable.
  4. Wait a few minutes, then choose Check again in Google Play setup.

Creating the account in Google Cloud gives it no access to Play. Play Console decides what it can touch.

  1. In Play Console, open Users and permissions → Invite new users.
  2. Paste the service account’s email address. Google Play setup shows it with a copy button.
  3. Under App permissions, add this app.
  4. Tick Release apps to testing tracks. Tick Release to production too if you will send builds there.
  5. Send the invitation.

Google can take a while to apply new permissions. Choose Check again afterwards.

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:

  1. In Google Play setup, download the .aab of your latest build signed with your upload key.
  2. In Play Console, open your app and go to Test and release → Testing → Internal testing.
  3. Create a new release and upload the .aab.
  4. Save it and roll it out to internal testing.
  5. 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.

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 showsMeaning
Sending to Internal testing…The upload is in progress. It usually takes a minute or two
In Play · Internal testingThe build is on that track
Draft in Play — roll it out in Play ConsolePlay 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 ConsoleYour app is set to have changes sent for review by hand. Send them in Play Console
Google Play refused itGoogle’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.

TrackWho gets itReviewed by Google
Internal testingUp to 100 testers you name, within minutesNo
Closed testingTesters you invite by email list or Google GroupYes
Open testingAnyone who joins from your Play listingYes
ProductionEveryone on Google PlayYes

Internal testing is selected by default. Sending to a track replaces what that track was offering with this build.

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.

SymptomCauseFix
“Google won’t issue a token for the saved account”The key was deleted in Google Cloud, or the account disabledCreate 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 projectEnable it — see API enabled
“The caller does not have permission”The account is not invited in Play Console, or not for this appSee 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 ConsoleIf 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 accountGoogle has not applied the invitation yet, or a different account was invitedCheck 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 oneRemove 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 keyThe upload key on your site is not the one Play has for this appUse 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 upBuild again, then send the new build
“This build’s files have expired”Builds are kept for 30 daysBuild again, then send the new build
The button opens the setup window instead of sendingA step in Sending builds to Google Play is not doneFollow the step it opens at

Preparing your store listing and Exporting your listing — sending a build does not fill in your Play listing.