Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/soymatudev/Pokedex-Fleek/llms.txt

Use this file to discover all available pages before exploring further.

Overview

PokéDex Fleek uses Expo Application Services (EAS) for building and deploying the app. EAS handles the complex native build process in the cloud, so you don’t need to set up Xcode or Android Studio locally.

Prerequisites

1. Create an Expo Account

# Sign up at https://expo.dev/signup

# Login to EAS CLI
eas login

2. Install EAS CLI

# Install globally
npm install -g eas-cli

# Verify installation
eas --version

3. Configure Project

The project is already configured with eas.json. Verify the configuration:
eas.json
{
  "cli": {
    "version": ">= 18.0.6",
    "appVersionSource": "remote"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {
      "autoIncrement": true
    }
  },
  "submit": {
    "production": {}
  }
}
The project is linked to EAS Project ID: 48249dfc-e43a-4b6c-bb06-0f1ac9742e05 (configured in app.json).

Build Profiles

EAS supports three build profiles, each serving a different purpose:
Purpose: Testing with dev tools and debuggingFeatures:
  • Includes Expo Dev Client
  • Fast Refresh enabled
  • Debug mode
  • Internal distribution only
When to use:
  • Testing native modules on real devices
  • Debugging camera features
  • Development iteration

Building for Android

Development Build

# Build development APK
eas build --profile development --platform android
This creates a debug APK that you can install on devices via:
  • Direct download from EAS dashboard
  • QR code scan
  • adb install app-debug.apk

Preview Build

# Build preview APK (internal testing)
eas build --profile preview --platform android

Production Build (APK)

# Build production APK (for direct distribution)
eas build --profile production --platform android
APK vs AAB:
  • APK - Direct installation, larger file size
  • AAB (Android App Bundle) - Required for Play Store, smaller downloads

Production Build (AAB for Play Store)

# Build Android App Bundle for Google Play
eas build --profile production --platform android --android-app-bundle

Building for iOS

iOS builds require an Apple Developer Account ($99/year). Simulator builds are free but have limited functionality (no camera).

Development Build

# Build development IPA
eas build --profile development --platform ios
Options:
  1. Simulator build (free, no Apple account needed):
    eas build --profile development --platform ios --simulator
    
    Drag .app file to Simulator to install.
  2. Device build (requires Apple Developer account):
    • EAS will prompt for credentials
    • Builds are signed with development certificate
    • Install via TestFlight or direct download

Preview Build

# Build preview IPA (internal testing)
eas build --profile preview --platform ios
Distribute via:
  • TestFlight (recommended)
  • Ad-hoc installation (limited to 100 devices)

Production Build (App Store)

# Build for App Store submission
eas build --profile production --platform ios
Production builds use App Store distribution certificate and must be submitted through App Store Connect.

Build Process Details

What Happens During a Build?

1

Code Upload

EAS uploads your source code to cloud build servers.
2

Dependency Installation

Installs all npm packages and native dependencies.
3

Native Code Generation

Runs expo prebuild to generate iOS/Android projects.
4

Compilation

  • Android: Gradle builds APK/AAB with ProGuard/R8 optimization
  • iOS: Xcode builds IPA with bitcode and symbols
5

Code Signing

Signs the app with appropriate certificates/provisioning profiles.
6

Upload

Uploads build artifacts to EAS servers for download.
Build times:
  • Android: 5-15 minutes
  • iOS: 10-20 minutes

Monitoring Build Progress

# Watch build logs in real-time
eas build --profile production --platform android

# Or view in dashboard
https://expo.dev/accounts/[your-account]/projects/Pokedex-Fleek/builds
Build logs show:
  • Dependency resolution
  • Native compilation output
  • Errors and warnings
  • Download URLs when complete

Credentials Management

Android Credentials

EAS automatically manages Android keystores:
# View Android credentials
eas credentials

# Or manage manually
eas credentials --platform android
What’s stored:
  • Keystore - Used to sign APKs/AABs
  • Key alias - Identifier for signing key
  • Key password - Protects the keystore
CRITICAL: Never lose your Android keystore! You cannot publish updates to the Play Store without the original keystore.

iOS Credentials

For iOS, EAS manages:
# View iOS credentials
eas credentials --platform ios
What’s stored:
  • Distribution Certificate - Signs app for App Store
  • Provisioning Profile - Device and entitlements configuration
  • Push Notification keys - For push notifications
Options:
  1. Let EAS manage (recommended) - Automatic credential creation
  2. Bring your own - Use existing certificates from Apple Developer

Platform-Specific Configuration

Android Configuration

Update Version Code/Name

app.json
{
  "expo": {
    "version": "1.0.0",
    "android": {
      "versionCode": 1,
      "package": "com.matudev.pokedexfleek"
    }
  }
}
With "autoIncrement": true in eas.json, version codes increment automatically on production builds.

Permissions

Required permissions are already configured in app.json:
"permissions": [
  "android.permission.CAMERA",
  "android.permission.RECORD_AUDIO"
]

ProGuard/R8 (Code Minification)

EAS automatically applies code shrinking in production builds.

iOS Configuration

Update Version/Build Number

app.json
{
  "expo": {
    "version": "1.0.0",
    "ios": {
      "buildNumber": "1",
      "bundleIdentifier": "com.anonymous.PokedexFleek",
      "supportsTablet": true
    }
  }
}

Info.plist Permissions

Camera permissions are configured:
"infoPlist": {
  "NSCameraUsageDescription": "Allow $(PRODUCT_NAME) to access your camera"
}

Bitcode

Bitcode is enabled by default for App Store optimization.

Testing Builds

Installing on Android

  1. Build completes on EAS
  2. Open build URL on your Android device
  3. Download and install APK
  4. Allow installation from unknown sources if prompted

Installing on iOS

# Build for simulator
eas build --profile development --platform ios --simulator

# Download .tar.gz and extract
tar -xvf build.tar.gz

# Drag .app to Simulator
open -a Simulator
# Then drag the .app file onto the simulator window

Submitting to App Stores

Google Play Store

1

Create Play Console Account

Register at https://play.google.com/console ($25 one-time fee)
2

Create App Listing

  • Add app name, description, screenshots
  • Set category and content rating
  • Add privacy policy URL
3

Build AAB

eas build --profile production --platform android --android-app-bundle
4

Submit via EAS

# Upload to Play Store
eas submit --platform android --latest

# EAS will prompt for service account credentials
5

Create Release

  • Go to Play Console → Production
  • Create new release with uploaded AAB
  • Review and roll out to production
Service Account Setup:
  1. Go to Google Cloud Console
  2. Create service account with Play Developer API access
  3. Download JSON key
  4. Upload to EAS when prompted

Apple App Store

1

Create App Store Connect Account

Requires Apple Developer Program membership ($99/year)
2

Create App Record

  • Go to App Store Connect
  • Click + to create new app
  • Set bundle ID: com.anonymous.PokedexFleek
  • Add app information
3

Build IPA

eas build --profile production --platform ios
4

Submit via EAS

# Upload to App Store Connect
eas submit --platform ios --latest

# Or use Transporter app manually
5

Complete App Review

  • Add screenshots and app preview video
  • Set pricing and availability
  • Submit for review
  • Wait 1-3 days for Apple review

Troubleshooting Build Errors

Common Android Errors

Error: OutOfMemoryError: Java heap spaceSolution:
# Create/edit android/gradle.properties
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m
Error: Version conflicts between librariesSolution:
# Clear node_modules and reinstall
rm -rf node_modules
npm install

# Rebuild
eas build --profile production --platform android --clear-cache
Error: Keystore signature mismatchSolution:
# Reset credentials (WARNING: only for new apps)
eas credentials --platform android
# Select "Remove Keystore"

# Build creates new keystore
eas build --profile production --platform android

Common iOS Errors

Error: No matching provisioning profile foundSolution:
# Regenerate credentials
eas credentials --platform ios
# Select "Set up new credentials"
Error: Pod install failuresSolution:
# Update Podfile.lock
cd ios
pod install --repo-update
cd ..

# Rebuild
eas build --profile production --platform ios --clear-cache
Error: Missing entitlementsCheck:
  1. App ID has required capabilities (Camera)
  2. Provisioning profile includes capabilities
  3. app.json declares required permissions

Build Cache Issues

# Clear all EAS caches
eas build --profile production --platform android --clear-cache
eas build --profile production --platform ios --clear-cache

# Or clear specific caches
eas build --profile production --platform android --no-cache

CI/CD Integration

GitHub Actions Example

.github/workflows/build.yml
name: EAS Build

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      
      - name: Install dependencies
        run: npm install
      
      - name: Setup EAS
        uses: expo/expo-github-action@v8
        with:
          expo-version: latest
          eas-version: latest
          token: ${{ secrets.EXPO_TOKEN }}
      
      - name: Build Android
        run: eas build --platform android --non-interactive --no-wait
      
      - name: Build iOS
        run: eas build --platform ios --non-interactive --no-wait
Set EXPO_TOKEN in GitHub repository secrets. Generate token at https://expo.dev/accounts/[account]/settings/access-tokens

Best Practices

Version Control

  • Tag releases in Git: git tag v1.0.0
  • Keep eas.json in version control
  • Document build settings in README

Testing Strategy

  • Use development profile during feature work
  • Use preview for beta testing
  • Only use production for final releases

Security

  • Never commit keystores or certificates
  • Use EAS credential management
  • Enable 2FA on Expo account

Performance

  • Enable Hermes for faster startup
  • Use ProGuard/R8 on Android
  • Test on real devices, not just simulators

Build Checklist

Before submitting to stores:
1

Update Versions

  • Increment version in app.json
  • Update versionCode (Android)
  • Update buildNumber (iOS)
2

Test Thoroughly

  • Test on real Android device
  • Test on real iOS device
  • Verify camera permissions
  • Test color detection accuracy
  • Check audio playback
3

Assets & Metadata

  • Update app icons
  • Create screenshots (5.5”, 6.5” for iOS)
  • Write store descriptions
  • Prepare privacy policy URL
4

Build & Submit

  • Build production builds
  • Test production builds
  • Submit to stores
  • Monitor review status

Next Steps

Project Structure

Review the codebase architecture

Running Locally

Set up your development environment

Build docs developers (and LLMs) love