Skip to main content

Build and Deployment

Guide for building and deploying the mobile app.

Building for Development

iOS

flutter run -d ios

Android

flutter run -d android

Building for Production

iOS

  1. Build iOS app
flutter build ios --release
  1. Open in Xcode
open ios/Runner.xcworkspace
  1. Archive in Xcode
    • Select "Any iOS Device" as target
    • Product → Archive
    • Upload to App Store

Android

  1. Build APK
flutter build apk --release
  1. Build App Bundle (for Play Store)
flutter build appbundle --release

Output: build/app/outputs/bundle/release/app-release.aab

Xcode Cloud

The project is configured for Xcode Cloud builds.

Pre-build Script

The ci_pre_xcodebuild.sh script runs before the build:

  • Installs Flutter dependencies
  • Runs flutter pub get
  • Installs CocoaPods dependencies

Requirements

  • Xcode Cloud workflow configured
  • Environment variables set in Xcode Cloud
  • Proper signing certificates

Environment Configuration

API Endpoint

Update API endpoint in lib/config/api_config.dart:

static const String baseUrl = 'https://api.thepluggnamibia.com';

Firebase

Ensure Firebase configuration files are present:

  • ios/Runner/GoogleService-Info.plist
  • android/app/google-services.json

Version Management

Update version in:

  • iOS: ios/Runner/Info.plist
  • Android: android/app/build.gradle.kts

Also update in pubspec.yaml:

version: 1.0.0+1

Format: version+buildNumber

Signing

iOS

  • Configure in Xcode project settings
  • Use App Store Connect for distribution
  • Requires Apple Developer account

Android

  • Configure signing in android/app/build.gradle.kts
  • Use keystore for release builds
  • Store keystore securely (never commit)

Troubleshooting

Build Failures

  1. Clean build:
flutter clean
flutter pub get
  1. iOS specific:
cd ios
pod deintegrate
pod install
cd ..
  1. Android specific:
cd android
./gradlew clean
cd ..

Common Issues

  • CocoaPods errors: Run pod install in ios/ directory
  • Gradle errors: Check Android SDK and build tools
  • Flutter version: Ensure compatible Flutter version
  • Dependencies: Run flutter pub get