Skip to main content

Build & Deployment

Complete guide for building and deploying ZÈYA Mobile App.

Prerequisites

  • EAS CLI: Latest version
  • Expo Account: Required for EAS builds
  • Apple Developer Account: For iOS builds
  • Google Play Console: For Android builds

EAS Build Setup

Install EAS CLI

npm install -g eas-cli

Login to Expo

eas login

Configure Project

The project includes eas.json with build profiles:

  • development - Development client builds
  • preview - Preview builds for testing
  • staging - Staging environment builds
  • production - Production builds
  • live - Live production builds

Building the App

Development Build

# Build development client
eas build --profile development --platform ios
eas build --profile development --platform android

Preview Build

# Build preview version
eas build --profile preview --platform ios
eas build --profile preview --platform android

Staging Build

# Build staging version
eas build --profile staging --platform ios
eas build --profile staging --platform android

Production Build

# Build production version
eas build --profile production --platform ios
eas build --profile production --platform android

Build for Both Platforms

eas build --profile production --platform all

Build Configuration

Environment Variables

Environment variables are configured in eas.json:

{
"build": {
"production": {
"env": {
"EXPO_PUBLIC_API_URL": "zeyaapp.com/api/v1",
"EXPO_PUBLIC_HTTP_PROTOCOL": "https",
"EXPO_PUBLIC_APP_ENV": "production"
}
}
}
}

iOS Build Configuration

Requirements:

  • Apple Developer Account
  • App Store Connect API Key (for automated submission)
  • Provisioning profiles

Build Settings:

  • Minimum iOS version: 16.0
  • Bundle identifier: com.zeyaapp.zeya
  • Uses Apple Sign-In

Android Build Configuration

Requirements:

  • Google Play Console account
  • Signing key (keystore)

Build Settings:

  • Minimum SDK: 24
  • Target SDK: Latest
  • Package name: com.zeyaapp.zeya
  • ProGuard enabled for release builds

Local Builds

iOS (Requires macOS)

# Prebuild native code
npm run prebuild

# Build in Xcode
cd ios
open ZYA.xcworkspace
# Build and run from Xcode

Android

# Prebuild native code
npm run prebuild

# Build APK
cd android
./gradlew assembleRelease

# Build AAB (for Play Store)
./gradlew bundleRelease

Submitting to App Stores

iOS App Store

# Submit to App Store
eas submit --platform ios --profile production

Requirements:

  • App Store Connect API Key
  • App Store Connect app created
  • App Store review information completed

Google Play Store

# Submit to Play Store
eas submit --platform android --profile production

Requirements:

  • Google Play Console account
  • Play Store listing completed
  • Privacy policy URL

Version Management

Version Numbers

iOS:

  • Version in app.json: "version": "2.4.0"
  • Build number auto-increments in production profile

Android:

  • Version in app.json: "version": "2.4.0"
  • Version code in app.json: "versionCode": 25
  • Auto-increment configured in EAS

Updating Versions

  1. Update app.json
{
"expo": {
"version": "2.4.1",
"android": {
"versionCode": 26
}
}
}
  1. Commit changes
git add app.json
git commit -m "chore: bump version to 2.4.1"
  1. Build with new version
eas build --profile production --platform all

Over-the-Air (OTA) Updates

Publishing Updates

# Publish update
eas update --branch production --message "Bug fixes"

# Publish to specific channel
eas update --channel production --message "Bug fixes"

Update Configuration

  • Updates are published to EAS Update servers
  • Users receive updates automatically
  • No app store review required for updates

Build Profiles Explained

Development

  • Development client build
  • Includes dev tools
  • Internal distribution only
  • Fast refresh enabled

Preview

  • Internal testing builds
  • APK/IPA files for testing
  • Staging environment configuration
  • No app store submission

Staging

  • Staging environment builds
  • Testing with staging API
  • Internal distribution
  • Version auto-increment

Production

  • Production builds
  • Production API configuration
  • App store ready
  • Optimized and minified

Live

  • Live production builds
  • Production environment
  • App store submission
  • Version auto-increment

Troubleshooting

Build Failures

Common Issues:

  • Missing environment variables
  • Invalid credentials
  • Network issues
  • Code signing problems

Solutions:

# Check build status
eas build:list

# View build logs
eas build:view [BUILD_ID]

# Retry failed build
eas build --profile production --platform ios

Code Signing Issues

iOS:

  • Verify Apple Developer account
  • Check provisioning profiles
  • Ensure certificates are valid

Android:

  • Verify keystore exists
  • Check keystore password
  • Ensure signing config is correct

Environment Variable Issues

  • Verify variables in eas.json
  • Check build logs for missing variables
  • Ensure correct profile is used

CI/CD Integration

GitHub Actions Example

name: Build and Submit

on:
push:
tags:
- 'v*'

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm install
- run: npm install -g eas-cli
- run: eas build --profile production --platform all --non-interactive