This document provides comprehensive instructions for building and deploying the Fermi Flutter app on iOS.
- macOS: Required for iOS development
- Xcode 16.0+: Download from Mac App Store
- Flutter 3.24+: Install from flutter.dev
- CocoaPods: Install with
sudo gem install cocoapods - Apple Developer Account: Required for device deployment
We've provided several scripts to simplify iOS development:
# Build for simulator (recommended for development)
./scripts/ios_build.sh
# Build for physical device
./scripts/ios_build.sh --device
# Clean build (resolves most issues)
./scripts/ios_build.sh --clean
# Build release version
./scripts/ios_build.sh --releaseInteractive menu for common tasks:
./scripts/ios_dev.shOptions include:
- Quick build for simulator
- Build for device
- Run on simulator/device
- Clean build
- Update dependencies
- Fix common issues
- Open in Xcode
- Check build settings
Diagnose and fix issues:
./scripts/ios_troubleshoot.shConfigure signing for your Apple Developer account:
./scripts/ios_setup_signing.shcd /Users/sallvain/Projects/Fermi
flutter pub get
cd ios
pod install-
Open Xcode:
open ios/Runner.xcworkspace
-
Select the Runner project in the navigator
-
Go to "Signing & Capabilities" tab
-
Select your team from the dropdown
-
Ensure "Automatically manage signing" is checked
# For simulator
flutter run -d ios
# For specific simulator
flutter run -d "iPhone 16"
# For physical device
flutter run -d <device-id>
# List available devices
flutter devicesThe app uses Firebase for backend services. The GoogleService-Info.plist file is already configured.
Current Firebase Bundle ID: com.academic-tools.fermi
If you need to use a different Firebase project:
- Download
GoogleService-Info.plistfrom Firebase Console - Replace the file in
ios/Runner/ - Ensure bundle IDs match
# Clean and reinstall
cd ios
rm -rf Pods Podfile.lock
pod installThe build scripts automatically apply patches for Swift 6 compatibility. If you still encounter issues:
./scripts/ios_build.sh --clean- Ensure you're signed into Xcode with your Apple ID
- Run the signing setup script:
./scripts/ios_setup_signing.sh
- Or manually configure in Xcode
First builds can take 10-15 minutes. Subsequent builds are faster. To speed up:
# Build for simulator (faster than device)
flutter build ios --simulator --debug
# Use hot reload during development
flutter run -d ios# Clear Xcode caches
rm -rf ~/Library/Developer/Xcode/DerivedData/*
./scripts/ios_build.sh --clean-
Build release version:
flutter build ios --release
-
Open in Xcode:
open ios/Runner.xcworkspace
-
Archive and upload:
- Product → Archive
- Distribute App → App Store Connect
- Upload
- Ensure all app metadata is complete in App Store Connect
- Build and archive as above
- Submit for review through App Store Connect
- Enables hot reload
- Shows debug banner
- Verbose logging
- No code obfuscation
- Optimized for performance
- No debug information
- Code obfuscation enabled
- Smaller app size
- Performance profiling enabled
- Some optimizations
- Used with Flutter DevTools
ios/
├── Runner/ # Main iOS app
│ ├── Info.plist # App configuration
│ ├── Runner.entitlements # App capabilities
│ └── GoogleService-Info.plist # Firebase config
├── Runner.xcodeproj/ # Xcode project
├── Runner.xcworkspace/ # Xcode workspace (use this)
├── Podfile # CocoaPods dependencies
└── Podfile.lock # Locked pod versions
- iOS 15.0+ (configured in Podfile)
- iPhone 6s and later
- iPad (5th generation) and later
- iPod touch (7th generation)
- Camera (for profile pictures)
- Photo Library (for image uploads)
- Notifications (for push notifications)
- Microphone (for voice messages)
- Use Simulator for Development: Faster build times and easier debugging
- Enable Hot Reload: Press 'r' in terminal while
flutter runis active - Check Console Logs: View in Xcode's debug console or
flutter logs - Profile Performance: Use
flutter run --profilewith Flutter DevTools - Test on Real Devices: Always test on physical devices before release
For issues specific to the iOS build:
- Run the troubleshooting script:
./scripts/ios_troubleshoot.sh - Check Flutter doctor:
flutter doctor -v - Review Xcode build logs
- Check Firebase Console for backend issues
- Flutter: 3.35.1
- Dart: 3.9.0
- CocoaPods: 1.16.2
- Firebase SDK: 12.0.0
- iOS Deployment Target: 15.0
Last updated: August 30, 2025