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 buildspreview- Preview builds for testingstaging- Staging environment buildsproduction- Production buildslive- 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
- Update
app.json
{
"expo": {
"version": "2.4.1",
"android": {
"versionCode": 26
}
}
}
- Commit changes
git add app.json
git commit -m "chore: bump version to 2.4.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