Skip to main content

Deployment

Build for Play Store

cd /Users/dhilshad/Metaonus/syncad-parents

# Build release APK
flutter build apk --release --obfuscate --target-platform android-arm64

# Or for Play Store App Bundle (preferred)
flutter build appbundle --release --obfuscate --target-platform android-arm64

Build for iOS App Store

# Increment build number in pubspec.yaml first
flutter build ipa --release --obfuscate

The .ipa file is output to build/ios/ipa/.

Google Play Store Setup

1. Create Release

Upload the AAB to the Google Play Console under Release > Production > Create Release.

2. App Signing

  • Google Play App Signing is enabled — Google manages the signing key
  • Upload an .aab file (not .apk) for Play App Signing support

3. Required Assets

AssetSpecification
App Icon512×512 PNG (launcher)
Feature Graphic1024×500 PNG
ScreenshotsPhone: 1080×1920 PNG, 7+ screenshots
Privacy Policy URLRequired before publishing

4. Track Configuration

TrackPurpose
InternalFast testing with up to 100 internal testers
Closed (Alpha/Beta)External testers via Google Groups or email list
ProductionPublic release

App Store Connect (iOS)

1. Create App

In App Store Connect, create a new iOS app with:

  • Bundle ID matching androidPackage in pubspec.yaml
  • SKU (unique internal ID)

2. Upload Build

# With Xcode cloud or Transporter app
# Or use fastlane:
fastlane deliver --ipa "build/ios/ipa/syncad_parents.ipa"

3. Required Information

FieldValue
App NameSyncAD Parents
CategoryEducation
Content Rating4+ (everyone)
Privacy Policy URLRequired
Support URLRequired

4. Build Configuration

<!-- ios/Runner/Info.plist — minimum iOS version -->
<key>MinimumOSVersion</key>
<string>13.0</string>

<!-- Background modes for FCM -->
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
<string>fetch</string>
</array>

Environment Configuration

Dev

# lib/core/constants/api_constants.dart
class ApiConstants {
static const String baseUrl = 'https://dev-api.metaonus.in';
}

Staging / Production

# lib/core/constants/api_constants.dart
class ApiConstants {
static const String baseUrl = 'https://staging-api.metaonus.in';
// or
static const String baseUrl = 'https://api.metaonus.in';
}

Update via build flags:

flutter build apk --release --dart-define=API_BASE_URL=https://api.metaonus.in

Testing Flight (iOS)

# iOS TestFlight — upload .ipa via Transporter or:
xcrun altool --upload-app -f build/ios/ipa/syncad_parents.ipa -t ios -u "apple_id@email.com" -p "app-specific-password"

Post-Deployment Checklist

  • FCM server key updated in Firebase Console
  • App signing key stored securely (Android)
  • Bundle ID matches App Store Connect
  • Version + build number incremented
  • Privacy policy URL live
  • Test login + OTP flow on released build
  • Push notifications received on both platforms
  • Deep links (syncad://) verified