xref: /expo/docs/pages/submit/android.mdx (revision ae126461)
1---
2title: Submit to the Google Play Store
3sidebar_title: Submit to Google
4description: Learn how to submit your app to the Google Play Store from your computer and CI.
5---
6
7import { Terminal } from '~/ui/components/Snippet';
8
9This guide outlines how to submit your app to the Google Play Store from your own computer and from CI.
10
11## Prerequisites
12
13- A paid developer account is required — You can create a Google Play Developer account on the [Google Play Console sign-up page](https://play.google.com/apps/publish/signup/).
14- You have to create a [Google Service Account](https://expo.fyi/creating-google-service-account) and download its JSON private key.
15- After that, you'll have to create an app on [Google Play Console](https://play.google.com/apps/publish/) and upload your app manually at least once.
16- You will also need to have EAS CLI installed and authenticated with your Expo account: `npm install -g eas-cli && eas login`.
17
18### Creating a Google Service Account
19
20For more information, see [expo.fyi/creating-google-service-account](https://expo.fyi/creating-google-service-account).
21
22### Manually uploading your app for the first time
23
24Before using `eas submit -p android` for uploading your builds, you have to upload your app manually at least once. This is a limitation of the Google Play Store API.
25
26For more information, see [expo.fyi/first-android-submission](https://expo.fyi/first-android-submission).
27
28## 1. Build a standalone app
29
30You'll need a native app binary signed for store submission. You can either use [EAS Build](introduction.mdx) or do it on your own.
31
32## 2. Start the submission
33
34To submit the binary to the Play Store, run `eas submit -p android` from inside your project directory. The command will lead you step by step through the process of submitting the app. See the [Configuration with eas.json](./eas-json.mdx) page to learn how to pre-configure your submission.
35
36> Although it's possible to upload any binary to the store, each submission is associated with an Expo project. That's why it's important to start a submission from inside your project's directory - that's where your [app configuration](../workflow/configuration.mdx) is defined.
37
38To upload your Android app to the Google Play Store, run `eas submit --platform android` and follow the instructions on the screen.
39
40The command will perform the following steps:
41
42- Log in to your Expo account and ensure that your app project exists on EAS servers.
43- Prompt for the Android package name unless `android.package` is set in the app config.
44- Ask for which binary to submit. You can select one of the following:
45
46  - The latest finished Android build for the project on EAS servers.
47  - Specific build ID. It can be found on the [builds dashboard](https://expo.dev/builds).
48  - Path to an **.apk** or **.aab** archive on your local filesystem.
49  - URL to the app archive.
50
51  > This step can be skipped if one of the following CLI parameters is provided: `--latest`, `--id`, `--path`, or `--url`.
52
53- Unless `serviceAccountKeyPath` is provided in **eas.json**, you will be prompted for the path to your Google Services JSON key.
54- The summary of provided configuration is displayed and the submission process begins. The submission progress is displayed on the screen.
55- Your build should now be visible on Google Play Console. If something goes wrong, an appropriate message is displayed on the screen.
56
57## Submitting your app using CI
58
59The `eas submit` command can perform submissions from a CI environment. All you have to do is ensure that all required information is provided with **eas.json** and environment variables. Mainly, providing the archive source (`--latest`, `--id`, `--path`, or `--url`) is essential. Also, make sure that the Android package name is present in your [app config file](/workflow/configuration.mdx).
60
61For Android submissions, you must provide the path to your Google Services JSON key using the `serviceAccountKeyPath` key in **eas.json**. You may also find the `track` and `releaseStatus` parameters useful.
62
63Example usage:
64
65<Terminal cmd={['$ eas submit -p android --profile foobar']} />
66
67## Automating submissions
68
69To learn how to automatically submit your app after a successful build, refer to the ["Automating submissions" guide](/build/automate-submissions).
70