UYLLII

Blog › Publishing on Google Play

Publishing on Google Play

Automating a Google Play launch: from a 60-minute checklist to zero manual steps

By David4 min read
Spider Solitaire feature graphic

By the third game, publishing had become the slowest part of making one. The game itself took an afternoon. Then came about an hour of clicking: create the app in Play Console, fill in a dozen App content forms, create the AdMob app and ad units, tick it into the consent messages, set up the purchases, upload the listing in fifteen languages, choose countries, send for review. And every click was a chance to get one of them wrong.

So I wrote a launch tool. Its job is to take a game from "the repo builds" to "submitted for review" with no human steps. From Spider Solitaire onwards, that's how every game has shipped.

Steps that check before they act

The design is simple and it's the part I'd recommend to anyone. A launch is a list of steps, and every step has two halves:

launch run goes through the list, skips every step whose check already passes, and stops at the first one that fails, saving a screenshot and the page text. Fix the problem, run it again, and it carries on from there. Nothing is marked "done" because a script exited cleanly. It's done when the service says so.

That property paid for itself again and again. Every time a step was broken, its own check caught it. In a couple of hundred runs, nothing false has been marked done.

What the pipeline covers

About forty steps, in phases:

  1. Prepare: a unique upload key (Play refuses a key that already signs another app), privacy and delete-data pages on this site, a Firebase app, analytics wiring.
  2. Play record: create the app, contact details.
  3. Ads and billing: the AdMob app and its units, consent messages, RevenueCat products and entitlement.
  4. Build and upload: a release build, an ad smoke test on an emulator (the build must show canRequestAds: true and load a real ad; see the consent bug), the internal track, testers, one-time products, store listings.
  5. App content: data safety, privacy, ads, content rating, target audience, advertising ID and the rest, plus category and tags.
  6. Release: production draft, countries, confirm, submit.
  7. After approval: link AdMob to the live listing.

Where there's no API, drive the browser

A surprising amount of Play Console has no API: creating the app, most App content declarations, the store category, production countries, tester lists and "Send for review". AdMob won't create apps or ad units through its API for most accounts either.

Those steps drive a signed-in Chrome over the DevTools protocol. It works, but Google's consoles are built from Material components that ignore naive clicks, and the first live run broke in five places, every one of them "clicked, but nothing happened":

The lesson I wrote on the wall: a browser flow that clicked isn't a flow that worked. Every browser step re-reads the page afterwards to confirm the change actually stuck.

The results

What isn't automated: building the game, playing it, and deciding to press go. Those are the parts I want to spend my time on.

Failures that became checks

If you publish more than one or two apps, I'd strongly recommend this shape even if you automate only half the steps: read-only checks against the real services, plus a resumable run. It turns publishing from a checklist you hope you followed into one you can prove.