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