Before building
- ZIP opens in the builder preview on the start page you expect.
- Case checker: no mismatches, no missing files, no root paths.
- Permission scanner: the permissions you switched on match the APIs you use.
- No test code left in: Eruda,
console.lognoise, staging API URLs.
After building: check the APK itself
Confirm the package name is the one you intend to keep forever, the versionCode is higher than any build you have distributed, debuggable is false, and the permission list contains nothing surprising.
The 15-minute device script
- Install from the downloaded file. Icon and name look right on the home screen and in the app switcher.
- Launch: splash, then your first screen, with no white flash and no layout jump.
- Navigate every screen. Use the Android back button on each — it should go back, and exit only from the first screen.
- Rotate the phone (if you allow it) and bring up the keyboard on every form.
- Permissions: accept once, then reinstall and deny once. The page must cope with both.
- Links: tap every external,
tel:,mailto:and share link. - Offline: close the app, airplane mode on, cold-start it, repeat steps 2–3.
- Persistence: create some data, force-stop the app, reopen — the data is there.
A small device matrix
| Device | Catches |
|---|---|
| Your own recent phone | Functional bugs |
| An old or budget phone (Android 8–10, 3 GB RAM) | Slow JavaScript, old WebView features, memory |
| A small screen (≤ 360 dp wide) or a tablet | Layout overflow, tiny or huge touch targets |
Three devices find the overwhelming majority of real problems. Friends' phones count.
Upgrade test
Install the previous version, use it, then install the new APK over it without uninstalling. It must install (same package name, same signing key, higher versionCode) and keep the user's data. This is the test most often skipped and the failure users punish hardest: an update that wipes their data or refuses to install.
Google Play testing tracks
| Track | Who | Use it for |
|---|---|---|
| Internal testing | Up to 100 testers by email, available within minutes | Every candidate build |
| Closed testing | Invited groups; required for new personal developer accounts before production | A real-world beta |
| Open testing | Anyone who opts in from the store listing | Wider betas |
Play tracks take an AAB, which is part of Pro. New personal developer accounts must run a closed test with a minimum number of testers for a continuous period before they can publish to production — check the current requirement in Play Console and start it early.