EAS Build 6,418 runs the same prebuild-and-Gradle (or Xcode 10 ) build on Expo 6,418 's servers: iOS apps without a Mac, identical builds for a team, and managed signing (on the first Android build it offers to generate the keystore). The Free plan includes 15 Android and 15 iOS builds a month; Starter costs $19 a month and Production $199. The CLI is eas-cli (https://github.com/expo/eas-cli 1,360 ) (24.7.0, MIT), and builds are described by profiles in eas.json, first written by eas build:configure:
{
"cli": { "version": ">= 24.7.0", "appVersionSource": "remote" },
"build": {
"development": { "developmentClient": true, "distribution": "internal" },
"preview": {
"distribution": "internal",
"env": { "APP_VARIANT": "preview" },
"android": { "buildType": "apk" }
},
"production": { "autoIncrement": true }
},
"submit": { "production": {} }
}development includes expo-dev-client (Development Builds); "internal" distribution yields files testers install from a link. preview builds an installable .apk instead of the default .aab and sets APP_VARIANT for app.config.js (Env and app.config); env values are committed, so never secrets. production builds an .aab for Google Play 1 , and with appVersionSource: "remote", autoIncrement raises android.versionCode on every build so you never upload a duplicate. Every EAS 6,418 command needs an Expo account, which this toolchain does not use, so a build stops at the login check:
eas whoami
eas build --platform android --profile preview --non-interactiveNot logged in
...
An Expo user account is required to proceed.
Either log in with eas login or set the EXPO_TOKEN environment variable if you're using EAS
CLI ...
Error: build command failed.With an account the sequence is eas login, eas build:configure and eas build --platform android --profile preview; --local runs the build on your own machine (not run here). Publishing submits the production build.