Step-by-step guide to publish Dashing Magnifier to the Google Play Store.
Developer ID: 5492522591456909837
keytool -genkeypair \
-alias upload \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-keystore upload-keystore.jksYou'll be prompted for a password and identity info. Remember the passwords.
Place upload-keystore.jks in the project root (it's gitignored).
Create keystore.properties in the project root (also gitignored):
storeFile=../upload-keystore.jks
storePassword=YOUR_STORE_PASSWORD
keyAlias=upload
keyPassword=YOUR_KEY_PASSWORDGoogle Play requires an Android App Bundle (.aab), not an APK.
./gradlew bundleReleaseOutput: app/build/outputs/bundle/release/app-release.aab
Go to Google Play Console → Create app.
| Field | Value |
|---|---|
| App name | Dashing Magnifier |
| Default language | English (United States) |
| App or game | App |
| Free or paid | Free |
| Declarations | Check all required boxes |
Go to Store presence → Main store listing and fill in from store-listing.md:
- App name — Dashing Magnifier
- Short description — copy from store-listing.md
- Full description — copy from store-listing.md
Upload the following (see store-listing.md for specs):
- App icon — 512×512 PNG (export from Android Studio: right-click
ic_launcher→ Export) - Feature graphic — 1024×500 PNG/JPG (create in Figma, Canva, or similar)
- Phone screenshots — at least 2, taken on Pixel 10 or emulator
Go to Policy → App content → Content rating:
- Start the questionnaire
- Answer No to all questions (violence, sexuality, language, substances, misc)
- Result: Everyone across all regions
- Apply the rating
Go to Policy → App content → Privacy policy:
https://github.com/<your-username>/dashing-magnifier/blob/main/PRIVACY_POLICY.md
Replace <your-username> with your actual GitHub username.
Go to Policy → App content → Target audience and content:
- Target age group: 18 and over (simplest — avoids Designed for Families requirements)
- Ads: No, my app does not contain ads
Go to Policy → App content → Data safety:
| Question | Answer |
|---|---|
| Does your app collect or share user data? | No |
| Does your app handle data collected off-device? | No |
This is accurate — the app has no network permission and collects nothing.
Go to Policy → App content → App access:
- Select All functionality is available without special access
Go to Release → Production (or start with Closed testing first):
- Click Create new release
- App signing: Opt in to Play App Signing (recommended, lets Google manage the signing key)
- Upload
app-release.aab - Set release name:
1.0.0 - Add release notes:
Initial release of Dashing Magnifier.
• Live camera magnification with 1×–10× zoom
• Flashlight toggle
• Color filters: Normal, High Contrast, Inverted, Grayscale, Warm Tint
• Freeze frame capture with save and share
• Brightness/exposure control
• Focus lock
• Screen-as-light mode
• Quick Settings tile and home screen widget
- Click Review release → Start rollout
Google typically reviews new apps within 1–3 business days. You'll get an email when it's approved.
For an already-published app, most of the above is one-time setup. An update is:
- Bump
versionCode(must strictly increase) andversionNameinapp/build.gradle.kts. ./gradlew bundleRelease- Play Console → Release → Production → Create new release → upload the new
.aab. - Add release notes → Review release → Start rollout.
Google Play raises the minimum targetSdk every year. Missing the deadline means you can
no longer ship updates, and eventually the app stops being discoverable to new users on
recent Android versions.
Each deadline requires the API level released the previous year. Only the 2026 row is published policy; later rows follow the established annual pattern.
| Deadline | Required targetSdk |
|
|---|---|---|
| Aug 31, 2024 | 34 (Android 14) | past |
| Aug 31, 2025 | 35 (Android 15) | past |
| Aug 31, 2026 | 36 (Android 16) | satisfied by 1.0.1 |
| Aug 31, 2027 | 37 (Android 17) | satisfied by 1.0.1 |
| Aug 31, 2028 | 38 (Android 18) | next action required |
1.0.1 targets 37, the newest stable API, which is the furthest ahead it is possible to get.
Missing a deadline does not remove the app. It stops being discoverable to new users on
devices running Android newer than its targetSdk; existing users keep the app, can
re-install it, and it keeps working. An extension to Nov 1 of the deadline year can be
requested in Play Console.
Bumping targetSdk usually also means bumping compileSdk to match, and often AGP/Gradle
along with it. Check the Android 16 behavior changes
page for anything that applies at the new target level before shipping.
Note that compileSdk and targetSdk do not have to be equal — compileSdk only controls
which APIs are available at compile time, so it can run ahead (recent AndroidX releases
require it to) without opting the app in to new runtime behavior.
• Updated to target Android 17 for the latest security and privacy protections
• Refreshed camera and UI libraries
• No functional changes
- Upload keystore generated and stored safely
-
keystore.propertiescreated (gitignored) - Release AAB built successfully
- App created in Play Console
- Store listing text filled in
- App icon (512×512) uploaded
- Feature graphic (1024×500) uploaded
- At least 2 phone screenshots uploaded
- Content rating completed → Everyone
- Privacy policy URL set
- Target audience set to 18+
- Data safety form completed (no data collected)
- AAB uploaded to release track
- Release notes added
- Release submitted for review