Build APK + AAB

The Play Console half of a generated app

Everything Google asks for between a finished build and a published listing - in the order it asks - with the documentation for each answer.

A build is not a listing. Between the file your builder produces and an app anyone can install, Google Play asks a specific sequence of questions - some technical, some legal, several with no obvious right answer the first time you meet them.

This page is that sequence, in order, with a link to the documentation for each answer. The documentation itself is the Appwright integration guide, generated from the guide that ships inside the Appwright app; it is linked rather than reprinted so there is one version of it and it is the current one.

1. Before you upload anything

The signing key

Play identifies your app by the key that signed it, for as long as the app exists. Lose it and you cannot update your own app; sign an update with a different one and the upload is refused outright. Generate it once, back it up somewhere that is not your laptop, and never regenerate it "to fix" a rejection.

If you have already hit the error: fixing a Play upload key error covers the reset request and what Google needs to grant it.

The bundle, not the package

Upload the .aab. The APK is for testing on your own phone. Why Play wants a bundle explains what Google does with it.

2. If your app wraps a website you own

Play now asks you to prove the connection between the app and the domain it shows. Getting this wrong is a slow rejection rather than a fast one: the listing sits in review until you fix it.

Play Store ownership verification - what to put where, and how to check it took.

3. If you are going to make money

Selling from inside the app

Digital goods - an upgrade, extra content, a membership - must go through Play billing. Google takes its cut and pays you monthly; you do not handle a card number. The products have to be created and activated in the Play Console before your app can see them, and nothing can be purchased until the app is installed from the Play Store, which means testing happens on an Internal or Closed track.

In-app purchases - the Play Console steps and complete code, including subscriptions and restoring a purchase on a new phone.

Selling something physical

The reverse rule applies: physical goods and real-world services must not use Play billing. Use a normal processor. Stripe payments.

Ads

Ads bring their own paperwork: a consent flow in the regions that require one, an ads declaration on the listing, and a file on your website before AdMob will pay full rates.

4. The forms nobody reads carefully enough

Data safety

You declare every category of data the app collects or shares, and it must match what the app actually does. A wrapped website that loads third-party analytics is collecting data even if you never wrote a line of it. An app that sends notifications, reads a folder, or signs people in with Google is collecting more.

The place to check what your build actually asks for is the permission list it ships with - the feature chapters each say which permission they arm: notifications, folder access, Google Sign-In, sensors and background jobs.

Content rating, target audience, ads declaration

Answer these honestly the first time. A rating questionnaire answered optimistically is a takedown later, and re-answering it re-triggers review.

5. Testing tracks, in the right order

  1. Internal testing - up to 100 testers, available in minutes. This is where in-app purchases are first tested, because they need a Play-installed build.
  2. Closed testing - Google now requires a period of closed testing with real testers before a new personal developer account can go to production. Plan for it; it is not a formality you can skip on the day.
  3. Production - staged rollout, so a bad build reaches a fraction of your users rather than all of them.

Our publishing checklist is the shorter, printable version of this page.

6. After it is live

Reading this with a tool

Every page in the guide has a plain Markdown twin at the same address with .md appended, and the whole thing is one file at /docs/llms-full.txt. This site's index is at /llms.txt.

Frequently asked questions

Do I upload an APK or an AAB?

An AAB. Google Play has required the Android App Bundle for new apps since August 2021; the APK is for testing on your own device and for distribution outside the store.

Why does Play reject my update with a signing key error?

Because the upload is signed with a different key from the first one you uploaded. Play identifies an app by its key, not its version. There is a recovery path and it is documented - see the upload key chapter linked below.

My app has in-app purchases. Anything extra?

Yes: the products have to exist and be activated in the Play Console before the app can see them, and purchases only work at all when the app was installed from the Play Store. A sideloaded APK can never complete one.