> For the complete documentation index, see [llms.txt](https://docs.genvibe.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.genvibe.pro/features/android-builds.md).

# Android builds (APK & AAB)

Turn your mobile project into a **real installable Android app** — without a Mac, Android Studio, or a single command. GenVibe builds it for you and hands you the file.

Two formats, for two different jobs:

* **APK** — install straight onto an Android phone. Best for testing, or sending to someone to try.
* **AAB** — the format Google Play requires. Use this when you're ready to publish.

## Before you start

Builds run on **your own free Expo account**, which means the app, its signing key and its build history all belong to you — not to GenVibe. It's a one-time setup.

1. Open your mobile project and click the **Android icon** in the preview toolbar.
2. Follow the link to [Expo access tokens](https://expo.dev/settings/access-tokens) and sign up if you don't have an account.
3. Under **Personal access tokens**, click **Create token** and copy it.
4. Paste it into GenVibe and click **Connect Expo**.

{% hint style="warning" %}
That page also offers **Robot users**. You don't need one — pick a **personal access token**. A robot token can build, but it can't read the resulting build, so you'd never see the status or the download link.
{% endhint %}

Your token is encrypted, stored once for your whole account, and never shown again — so you only do this on your first build, not for every project. It's never sent to your browser and never reaches the AI.

## Build it

Click the **Android icon**, choose **APK** or **AAB**, and hit **Build**. That's it — you can close the dialog and carry on working.

The dialog shows live progress: your place in the queue, how long it's been running, and whether it's still waiting or actively compiling.

{% hint style="info" %}
Expo's free plan is **low priority**, so queue time varies a lot — sometimes a few minutes, sometimes over an hour before the build even starts. Compiling itself takes about 10–15 minutes. If you build often, Expo's [$19/mo Starter plan](https://expo.dev/pricing) is high priority.
{% endhint %}

## Download it

When the build finishes, a **Download** button appears in the same dialog.

* **APK** — open the file on an Android phone to install it. You may need to allow installs from unknown sources.
* **AAB** — upload it to [Google Play Console](https://play.google.com/console) to publish.

Builds keep running if you close GenVibe. Come back later, click the Android icon, and the status (or the download) is waiting for you.

## Building both formats

You can have one APK and one AAB in flight at the same time — useful when you want to test on your phone *and* prepare a Play Store release.

They won't run in parallel, though. Expo's free plan builds one at a time, so the second one starts when the first finishes. GenVibe tells you when that's happening.

You can't queue two of the *same* format at once — that would just cost you build minutes for an identical file.

## Publishing to Google Play

1. Build an **AAB**.
2. Create an app in [Google Play Console](https://play.google.com/console) (a one-time $25 developer fee applies).
3. Upload the AAB under a release track.
4. Fill in the store listing, content rating and privacy policy Google asks for.

Because the signing key lives on **your** Expo account, you can keep publishing updates independently — you're never locked into GenVibe.

## App name and package ID

The first time you build, GenVibe makes sure your `app.json` has the two things Android requires:

* a **slug** — the project name in your Expo dashboard
* an **`android.package`** — the unique ID Google Play identifies your app by, e.g. `app.genvibe.a1b2c3d4e5`

Both are derived from your app and left alone once set. To choose your own, just ask in chat before building:

> Set the Android package name to com.mycompany.myapp

{% hint style="warning" %}
Change the package ID **before** you publish. Once an app is live on Google Play, its package ID is permanent — a new one means a new listing that existing users won't be updated to.
{% endhint %}

## iOS

Coming soon. iOS builds need a paid Apple Developer account ($99/year) plus signing certificates, so they're not available yet. You can still preview your app on an iPhone today with the **QR code** and the Expo Go app — see [Mobile apps](/features/mobile-apps.md).

## Troubleshooting

**"No EXPO\_TOKEN found"** — the token wasn't saved. Reopen the Android dialog and connect again, making sure you copied a **personal access token**.

**The build failed** — the dialog shows Expo's actual error. The most common cause is a package that can't be installed; ask in chat to fix the dependency, then build again.

**It's been queued for ages** — that's Expo's free-tier queue, not a stuck build. It will finish. A paid Expo plan skips the queue.

**Want to disconnect?** Open the Android dialog and click **Disconnect** at the bottom. Builds already running on Expo aren't affected.

## Tips

* Build an **APK** first and try it on a real phone before preparing a Play Store release.
* Ask for your app icon and splash screen before building — they're baked into the file.
* Every build uses your Expo build minutes, so avoid rebuilding until you've actually changed something.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.genvibe.pro/features/android-builds.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
