> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openv2.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Play Store

> Upload your Openv2 Android build to Google Play Console and roll it out to users.

Publishing your Openv2 app on Google Play involves building an **AAB** (Android App Bundle), uploading it to Play Console, and completing your store listing. Openv2 handles the Expo/EAS side of the build; the Play Console account, signing, store listing, and review compliance are yours to manage.

## Prerequisites

Have the following ready before starting your Android production build:

* **Google Play Developer account** — a one-time \$25 registration fee at [play.google.com/console](https://play.google.com/console).
* **Bundle identifier** — a unique reverse-domain ID (for example, `com.yourcompany.appname`) set in your `app.json`. This becomes your app's permanent package name and cannot be changed after publishing.
* **App signing** — Google recommends **Play App Signing**, where Google manages your release key. You generate an upload key and Google signs the final binary.
* **App icon** — a 512×512 PNG for the Play Store listing. Openv2 can generate or upload your icon and write it to the correct paths in your project (see [Mobile builds](/builds-mobile)).
* **Privacy policy URL** — required if your app collects personal data. Host it at a public URL before submitting.

<Note>
  Create your app in Play Console before uploading a build. You'll need to complete the store listing, content rating, and data safety sections before your app can go live.
</Note>

## Build your Android binary in Openv2

<Steps>
  <Step title="Open the build flow">
    From the **header** of your project, select the **Build** action to open the Expo build wizard.
  </Step>

  <Step title="Select Android">
    Choose the **Android** path. Then choose your output format:

    * **AAB** — required for Play Store production submissions and most updates
    * **APK** — useful for direct device installs, side-loading to testers, or internal testing without going through Play Console
  </Step>

  <Step title="Configure version numbers">
    Before building, confirm your `versionCode` and `versionName` in `app.json`. Play Console rejects uploads with a `versionCode` equal to or lower than any previously uploaded build. Increment `versionCode` by at least 1 for every new upload.
  </Step>

  <Step title="Complete the build">
    Follow the wizard's remaining prompts. The modal tracks build status. If a native dependency error appears, fix it with help from the AI assistant and restart the build.
  </Step>

  <Step title="Download the AAB or APK">
    When the build completes, download the artifact from the modal or build history.
  </Step>
</Steps>

## Upload to Play Console

<Steps>
  <Step title="Go to a testing track">
    In Play Console, navigate to your app and select a release track — **Internal testing**, **Closed testing**, or **Open testing** — before going to production. Internal testing is available immediately and is the fastest way to verify your build works.
  </Step>

  <Step title="Create a new release">
    Click **Create new release**, upload your AAB, and add release notes. If you're using Play App Signing, Play Console handles the final signing step.
  </Step>

  <Step title="Complete required sections">
    Play Console won't let you roll out to production until you complete:

    * **Data safety** — declare what data your app collects and how it's used
    * **Content rating** — complete the questionnaire to receive an age rating
    * **Store listing** — short description, full description, feature graphic, and at least two screenshots per supported device type
  </Step>

  <Step title="Roll out to production">
    Once testing is complete and all required sections are filled, promote your release to **Production**. You can do a **staged rollout** (for example, 10% of users first) to catch issues before full release.
  </Step>
</Steps>

## Testing tracks

Use testing tracks to distribute builds before going to production:

| Track                | Who can access                       | Review required     |
| -------------------- | ------------------------------------ | ------------------- |
| **Internal testing** | Up to 100 team members               | No                  |
| **Closed testing**   | Invited testers (email list or link) | Brief Google review |
| **Open testing**     | Anyone (public opt-in)               | Brief Google review |

Start with **internal testing** to validate your build, then move to closed or open testing to gather broader feedback before production.

## Common issues

### Target SDK version

Google Play requires apps to target a recent Android API level. If your build targets an outdated SDK, Play Console will warn you or block the release. Ask the AI assistant to update the `targetSdkVersion` in your Expo config if needed.

### Permissions declarations

Every Android permission your app requests must be justified. Play Console may ask you to explain why your app needs sensitive permissions like location, camera, or microphone. Remove any permissions your app doesn't actually use.

### Content rating

You must complete the **content rating questionnaire** in Play Console. Providing inaccurate answers can result in removal. Answer based on your app's actual content and functionality.

### `versionCode` conflicts

Each upload to Play Console must have a higher `versionCode` than all previous uploads for that app. If a build is rejected for this reason, increment the `versionCode` in `app.json` and rebuild.

<Warning>
  Google controls review timelines and policy enforcement. Review for new apps typically takes a few days, but can take longer. Use [Google Play's developer policies](https://play.google.com/about/developer-content-policy/) as the source of truth for what's allowed — Openv2 has no influence over Google's decisions.
</Warning>

## What comes next

<CardGroup cols={2}>
  <Card title="Mobile builds" icon="hammer" href="/builds-mobile">
    Understand the full build flow, app icon setup, and how to resolve native dependency issues.
  </Card>

  <Card title="App Store" icon="apple" href="/app-store">
    Publish your iOS build to the Apple App Store alongside your Android release.
  </Card>
</CardGroup>
