Expo Android APK Build Guide

Using EAS Build (Expo Application Services)

1. Introduction

To build an Android APK for an Expo project, you must use EAS Build (Expo Application Services).

The old expo build command has been deprecated and is no longer supported.

EAS Build is the official solution to generate:

Windows users may need to set the following environment variable to avoid OpenSSL errors:

setx NODE_OPTIONS "--openssl-legacy-provider"

2. Prerequisites

npm install -g eas-cli

3. Step-by-Step Process to Create APK

Step 1: Login to Expo

eas login

Step 2: Configure EAS Build

eas build:configure
Select Android when prompted. This creates an eas.json file.

Step 3: Configure eas.json for APK

{
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal",
      "android": {
        "buildType": "apk"
      }
    },
    "preview": {
      "distribution": "internal",
      "android": {
        "buildType": "apk"
      }
    },
    "production": {}
  }
}

Step 5: Change App Name

To change the app name in a React Native Expo project and generate a new APK, update the Expo configuration file. In the Managed workflow, Expo automatically applies these changes during the next build.

Update Configuration

Open app.json (or app.config.js) and update the name property.

{
  "expo": {
    "name": "New App Name",
    "slug": "your-app-slug",
    "version": "1.0.1",
    "android": {
      "package": "com.yourname.newname"
    }
  }
}
Important Note: Changing the android.package value creates a completely new app. If you only want to change the visible app name under the icon, update only the name field.

Step 6: Change App Logo / Icon

For a React Native Expo project in 2026, the recommended app icon size is 1024 × 1024 pixels. Expo uses this high-resolution image to automatically generate all required sizes.

{
  "expo": {
    "icon": "./assets/images/icon.png",
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/images/adaptive-icon.png",
        "backgroundColor": "#FFFFFF"
      }
    }
  }
}
Ensure all icon paths exist before running the build to avoid asset errors.

Step 7: Download APK

Step 4: Run Build Command

Development APK

eas build --platform android --profile development

Preview / Testing APK (Recommended)

eas build --platform android --profile preview

Production AAB (Play Store)

eas build --platform android --profile production

Step 5: Download APK

4. Alternative: Local APK Build

You can build APK locally without Expo cloud.

eas build --platform android --local
The APK will be available inside the dist/ folder.

5. Problems Faced & Solutions

Problem:
Project config: Slug for project identified by "extra.eas.projectId" (mahsua-age-calculator) does not match the "slug" field (age-plus).

Solution:
Problem: Android build failed with “Unknown error”
Solution:
npx expo-doctor
Problem: Used wrong command expo doctor
Solution:
npx expo-doctor
Problem: Missing app icon
Solution: Create assets/icon.png
Recommended size: 1024 × 1024
Problem: .expo directory warning
Solution: Add to .gitignore:
.expo/
Problem: APK size ~60 MB
Explanation: Normal for Expo apps. AAB size is much smaller.

6. Conclusion