Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ihfaz297/MND/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The MND mobile app is built with Flutter, supporting both Android and iOS platforms. This guide covers building, signing, and submitting to app stores.Prerequisites
- Flutter SDK 3.0+
- Dart SDK 3.0+
- Android Studio (for Android builds)
- Xcode (for iOS builds, macOS only)
- Backend API running and accessible
Initial Setup
1. Install Flutter
Follow the official Flutter installation guide for your platform. Verify installation:2. Install Dependencies
provider- State managementhttp- Networkingshared_preferences- Local storagegoogle_maps_flutter- Map integrationflutter_dotenv- Environment configuration
3. Configure Environment
Create.env file:
Development Testing
Run on Emulator/Simulator
Android:Run on Physical Device
Android:- Enable Developer Options and USB Debugging on your Android device
- Connect via USB
- Run:
- Connect iPhone/iPad via USB
- Trust the computer on your device
- Run:
Hot Reload
While app is running:- Press
r- Hot reload - Press
R- Hot restart - Press
q- Quit
Android Deployment
1. Configure App Identity
Editandroid/app/build.gradle:
applicationId- Unique app identifier (reverse domain notation)versionCode- Integer version (increment for each release)versionName- Display version (e.g., “1.0.0”)
2. Configure Google Maps API Key
Editandroid/app/src/main/AndroidManifest.xml:
3. Create App Icon
Replaceandroid/app/src/main/res/mipmap-*/ic_launcher.png with your app icons:
mipmap-mdpi/ic_launcher.png(48x48)mipmap-hdpi/ic_launcher.png(72x72)mipmap-xhdpi/ic_launcher.png(96x96)mipmap-xxhdpi/ic_launcher.png(144x144)mipmap-xxxhdpi/ic_launcher.png(192x192)
flutter_launcher_icons package:
4. Generate Signing Key
Create keystore:android/key.properties:
5. Configure Signing in build.gradle
Editandroid/app/build.gradle:
6. Build APK
Standard APK:build/app/outputs/flutter-apk/app-release.apk
Split APK by ABI (smaller size):
app-armeabi-v7a-release.apk(32-bit ARM)app-arm64-v8a-release.apk(64-bit ARM)app-x86_64-release.apk(64-bit Intel)
7. Build App Bundle (for Play Store)
Recommended format for Google Play:build/app/outputs/bundle/release/app-release.aab
Benefits:
- Smaller download size (Google Play generates optimized APKs)
- Required for apps over 150MB
- Supports Dynamic Delivery
8. Test Release Build
Install APK on device:9. Submit to Google Play Store
- Create account at Google Play Console
- Pay one-time $25 registration fee
- Create new app
- Fill in app details:
- App name
- Short description
- Full description
- Screenshots (required: at least 2)
- Feature graphic (1024x500)
- App icon (512x512)
- Privacy policy URL
- Upload AAB file
- Complete Content Rating questionnaire
- Set pricing (free/paid)
- Select countries
- Submit for review
iOS Deployment
1. Configure App Identity
Editios/Runner/Info.plist:
2. Configure Google Maps API Key
Editios/Runner/AppDelegate.swift:
3. Create App Icon
Replace icons inios/Runner/Assets.xcassets/AppIcon.appiconset/
Or use flutter_launcher_icons (see Android section).
4. Open in Xcode
5. Configure Signing
In Xcode:- Select Runner project
- Select Runner target
- Go to Signing & Capabilities
- Check Automatically manage signing
- Select your Team (requires Apple Developer account)
- Set Bundle Identifier (must match App ID)
6. Register App ID
- Go to Apple Developer Portal
- Certificates, Identifiers & Profiles
- Identifiers → Click +
- Select App IDs → Continue
- Select App → Continue
- Enter:
- Description: MND Bus Routing
- Bundle ID: com.yourcompany.mndFlutter
- Capabilities: (select as needed)
- Register
7. Build Release
Command line:- Select Any iOS Device (arm64) as target
- Product → Archive
- Wait for archive to complete
- Organizer window opens
8. Distribute via Xcode
In Xcode Organizer:- Select your archive
- Click Distribute App
- Choose distribution method:
- App Store Connect - for App Store submission
- Ad Hoc - for testing on specific devices
- Enterprise - for internal distribution
- Development - for development testing
- Follow the wizard
- Upload to App Store Connect
9. Submit to App Store
- Go to App Store Connect
- Create new app:
- Platform: iOS
- Name: MND Bus Routing
- Primary Language: English
- Bundle ID: (select registered ID)
- SKU: unique identifier
- Fill in app information:
- Subtitle
- Description
- Keywords
- Support URL
- Privacy Policy URL
- Upload screenshots:
- 6.5” display (required)
- 5.5” display (optional)
- iPad Pro (if supporting iPad)
- Select build uploaded from Xcode
- Set pricing
- Submit for review
App Store Requirements
Screenshots
Android (Google Play):- Minimum 2 screenshots
- Format: JPEG or 24-bit PNG
- Minimum dimension: 320px
- Maximum dimension: 3840px
- Recommended: 1080x1920 (portrait) or 1920x1080 (landscape)
- Required for 6.5” display (iPhone 14 Pro Max)
- Optional for 5.5” and iPad Pro
- Format: JPEG or PNG
- Sizes:
- 6.5”: 1284x2778 or 2778x1284
- 5.5”: 1242x2208 or 2208x1242
- iPad Pro: 2048x2732 or 2732x2048
Privacy Policy
Both stores require a privacy policy URL. Include:- What data you collect
- How you use it
- Third-party services (Google Maps, Analytics)
- Data retention
- User rights
Environment Configuration
Production vs Development
Development (.env):Version Management
Semantic Versioning
Use format:MAJOR.MINOR.PATCH
- MAJOR: Breaking changes
- MINOR: New features
- PATCH: Bug fixes
1.2.3= versionName (Android) / CFBundleShortVersionString (iOS)4= versionCode (Android) / CFBundleVersion (iOS)
Incrementing Versions
Before each release:-
Update
pubspec.yaml: - Android auto-updates from pubspec
-
iOS: Update in Xcode or
Info.plist
App Signing Best Practices
Android Keystore
Backup your keystore:- Use a password manager
- Don’t commit to git
- Share securely with team (encrypted)
iOS Certificates
- Certificates expire after 1 year (auto-renewed by Xcode)
- Provisioning profiles expire after 1 year
- Distribution certificates limited to 3 per team
Testing Before Release
Beta Testing
Android (Google Play Console):- Create Internal/Closed/Open testing track
- Upload AAB
- Add testers by email
- Share opt-in URL
- Upload build via Xcode
- Go to App Store Connect → TestFlight
- Add internal testers (up to 100)
- Add external testers (up to 10,000)
- Testers install TestFlight app and opt-in
Pre-Launch Checklist
- App icon configured
- Splash screen configured
- All API endpoints use production URL
- Google Maps API key is restricted
- App permissions justified (location, etc.)
- Tested on physical devices (Android + iOS)
- Tested on different screen sizes
- Tested offline behavior
- Privacy policy created
- Screenshots captured
- Store listings written
- App signed with release key
- Version numbers updated
- Changelog prepared
Troubleshooting
Android Build Fails
iOS Build Fails
App Crashes on Launch
Check logs:- Missing .env file
- Invalid API URL
- Missing permissions
Google Maps Not Showing
- Verify API key is correct
- Check API key restrictions (bundle ID/package name)
- Ensure Maps SDK enabled in Google Cloud Console
- Check device has internet connection