Release Android and iOS Apps with EAS
This guide shows how to use Expo Application Services (EAS) to build and release Android and iOS Apps.
Get Started
Login with eas to be able to run builds and submit.
npx eas login
Remote EAS Builds
You can trigger a build in the EAS cloud from the cli. It will display a link to the remote build.
# trigger eas build with remote credentials
eas build --platform all --profile preview
To run a EAS build locally, use the --local
flag. The profile is defined in the eas.json file that specifies how releases in the Play Store are configured (Internal, Alpha, Beta, Production).
By default, EAS will use credentials configured remotely in EAS to communicate with Google Play and App Store Connect. After the first time credential setup, you can run builds and submit to the Play Stores locally. If you want to authenticate against the Play Stores using local credentials, you need to configure “credentialsSource”: “local” for each platform in the build section of eas.json.
EAS Submit
You can submit a build to the Play stores like this. The CLI asks which remote build to submit. This requires properly configured credentials on the EAS side and Play store side (see below). For submitting a local build artifact, see Create a production build locally - Expo Documentation.
eas submit --platform android
eas submit --platform ios
First Time Configuration
Configure Credentials
Understand Play Store credentials by reading Security - Expo Documentation.
- Setup Google Service Account.
- Enable Google Play API in Google Cloud.
- Create The Apple Store Connect API Key once.
Setup Credentials for EAS and Play Stores
EAS handles configuring and registering the required credentials for Google Play and Apple Developer.
npx credentials
Follow the CLI to configure the credentials for each profile (development, preview, production)
- Setup Google Service Account, Enable Google Play API
- For Android, it generates an keystore file used to sign the Android APK after build which is required to upload the APK to Google Play. Google Play then resigns the APK with their own keystore.
- For iOS, each developer internal releases require a adhoc provisioning profile with registered devices. See below how to register them.
Inspect the credentials that EAS created on the Play Stores.
- Remote EAS credentials https://expo.dev/accounts/ACC/PROJECT/credentials).
- Google Service Accounts Service accounts – IAM and admin – Google Cloud console
- Apple Certificates and Provisioning Profiles Certificates, Identifiers & Profiles - Apple Developer
Download the credentials locally. Also see Using local credentials - Expo Documentation.
- The
credentials.json
contains paths and secrets for the credentials. - The credentials folder contains the downloaded credentials
- The Apple Store Connect API Key AppleAuthKey_69XC6MNS5S.p8. See https://github.com/expo/fyi/blob/main/creating-asc-api-key.md
- The Apple Distribution Certificate distcertpl2
- The Apple Provisioning Profile profile.mobileprovision
Understand credentials required by reading Internal distribution - Expo Documentation.
Register iOS Devices for Distribution Profile
When triggering an submission for internal usage in iOS, you need to register devices to the IOS Adhoc-provisioning profile.
npx eas device:create
npx eas device:list
Note: Apparently, a interactive build is required to sync the profile after registering a new devices.
Inspect created devices and rename them here Certificates, Identifiers & Profiles - Apple Developer