Skip to content

Latest commit

 

History

History
214 lines (149 loc) · 6.98 KB

File metadata and controls

214 lines (149 loc) · 6.98 KB

Publishing to Google Play

Step-by-step guide to publish Dashing Magnifier to the Google Play Store.

Developer ID: 5492522591456909837


1. Generate an Upload Keystore

keytool -genkeypair \
  -alias upload \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000 \
  -keystore upload-keystore.jks

You'll be prompted for a password and identity info. Remember the passwords.

Place upload-keystore.jks in the project root (it's gitignored).

2. Create keystore.properties

Create keystore.properties in the project root (also gitignored):

storeFile=../upload-keystore.jks
storePassword=YOUR_STORE_PASSWORD
keyAlias=upload
keyPassword=YOUR_KEY_PASSWORD

3. Build the Release AAB

Google Play requires an Android App Bundle (.aab), not an APK.

./gradlew bundleRelease

Output: app/build/outputs/bundle/release/app-release.aab

4. Google Play Console Setup

Go to Google Play ConsoleCreate 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

5. Store Listing

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

Graphic assets

Upload the following (see store-listing.md for specs):

  1. App icon — 512×512 PNG (export from Android Studio: right-click ic_launcher → Export)
  2. Feature graphic — 1024×500 PNG/JPG (create in Figma, Canva, or similar)
  3. Phone screenshots — at least 2, taken on Pixel 10 or emulator

6. Content Rating

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

7. Privacy Policy

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.

8. Target Audience & Ads

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

9. Data Safety

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.

10. App Access

Go to Policy → App content → App access:

  • Select All functionality is available without special access

11. Create a Release

Go to Release → Production (or start with Closed testing first):

  1. Click Create new release
  2. App signing: Opt in to Play App Signing (recommended, lets Google manage the signing key)
  3. Upload app-release.aab
  4. Set release name: 1.0.0
  5. 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
  1. Click Review releaseStart rollout

12. Wait for Review

Google typically reviews new apps within 1–3 business days. You'll get an email when it's approved.


Shipping an Update

For an already-published app, most of the above is one-time setup. An update is:

  1. Bump versionCode (must strictly increase) and versionName in app/build.gradle.kts.
  2. ./gradlew bundleRelease
  3. Play Console → Release → Production → Create new release → upload the new .aab.
  4. Add release notes → Review releaseStart rollout.

Target API level requirement

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.

Release notes for 1.0.1

• Updated to target Android 17 for the latest security and privacy protections
• Refreshed camera and UI libraries
• No functional changes

Checklist

  • Upload keystore generated and stored safely
  • keystore.properties created (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