flutter_ios_capabilities_setup 0.2.0
flutter_ios_capabilities_setup: ^0.2.0 copied to clipboard
Configure iOS capabilities for Flutter without Xcode. Firebase, Push Notifications, Background Modes, and Google Maps — from Windows, macOS, or Linux.
flutter_ios_capabilities_setup #
Configure iOS capabilities for your Flutter project — without Xcode, from any OS including Windows.
Why this tool exists #
Every Flutter developer building for iOS hits the same wall:
You need a Mac with Xcode just to:
- Drag
GoogleService-Info.plistinto the Runner folder - Enable Push Notifications in Signing & Capabilities
- Enable Background Modes
- Add your Google Maps API key to AppDelegate
This means:
- Windows developers are completely blocked
- Developers with no Mac access are stuck
This tool removes that wall entirely.
Run one command from any OS — Windows, macOS, Linux — and all iOS capabilities are configured correctly:
project.pbxprojupdated with correct UUIDsRunner.entitlementscreatedAppDelegate.swiftconfiguredInfo.plistupdated
After running the tool, push your code and build via any CI/CD. Your iOS app is ready — no Mac, no Xcode, no manual steps.
Features #
- ✅ Firebase & Push Notifications — full setup in seconds
- ✅ Background Modes — select only the modes you need
- ✅ Google Maps — API key + AppDelegate setup
- ✅ Works on Windows, macOS, and Linux — no Xcode required
- ✅ Idempotent — safe to run multiple times, never duplicates
- ✅ Validates
GoogleService-Info.plistbefore making any changes - ✅ After setup, build and deploy via any CI/CD without touching Xcode
Prerequisites #
Before running the tool:
1. Add your GoogleService-Info.plist #
Download it from Firebase Console → Your Project → iOS App → Download config file.
Place it at exactly this path:
your_project/
└── ios/
└── Runner/
└── GoogleService-Info.plist ← here
2. Match your Bundle ID #
The Bundle ID in GoogleService-Info.plist must match your Flutter project's Bundle ID.
Change your project's Bundle ID easily:
# Step 1 — Add the package
flutter pub add -d change_app_package_name
# Step 2 — Change the bundle ID
dart run change_app_package_name:main com.yourcompany.yourapp
To change iOS only:
dart run change_app_package_name:main com.yourcompany.yourapp --ios
See: https://pub.dev/packages/change_app_package_name
3. Dart SDK >= 3.0.0 #
Installation #
dart pub global activate flutter_ios_capabilities_setup
Usage #
Run from the root of your Flutter project:
flutter_ios_capabilities_setup
Windows users: If the command is not recognized, run:
dart pub global run flutter_ios_capabilities_setupOr add
%LOCALAPPDATA%\Pub\Cache\binto your system PATH.
Step 1 — Select capabilities #
🔧 Flutter iOS Configurator
by Mohsen Bahaj — https://github.com/MohsenBahaj/flutter_ios_capabilities_setup
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 Instructions:
SPACE = select / deselect
ENTER = confirm selection
↑ ↓ = navigate
? Select capabilities to configure
◯ Firebase & Push Notifications
◯ Background Modes
◯ Google Maps
Step 2 — Follow the prompts #
Select Background Modes if needed, enter your Google Maps API key if selected.
Step 3 — Done #
✅ Created Runner.entitlements
✅ Updated Info.plist — added UIBackgroundModes
✅ Updated AppDelegate.swift — added Firebase setup
✅ Updated project.pbxproj — registered GoogleService-Info.plist
✅ Updated project.pbxproj — iOS deployment target set to 15.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ iOS configuration complete!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 4 — Build via CI/CD #
Push your code and build via your preferred CI/CD service.
If you have Mac access — run pod install first:
cd ios && pod install
If you don't have Mac — use Codemagic or GitHub Actions. They handle pod install automatically as part of the iOS build process.
Codemagic (recommended — GUI based, no YAML needed):
- Connect your repo
- Select Flutter version and Xcode version
- Choose Debug / Release / Profile
- Start build — pod install runs automatically
GitHub Actions:
jobs:
build-ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: "3.32.8"
- run: flutter pub get
- run: cd ios && pod install
- run: flutter build ios --debug --no-codesign
What it configures #
Firebase & Push Notifications #
| File | Change |
|---|---|
Runner.entitlements |
Creates with aps-environment: development |
Info.plist |
Adds UIBackgroundModes: [fetch, remote-notification] |
AppDelegate.swift |
Adds Firebase imports, FirebaseApp.configure(), FCM delegate |
project.pbxproj |
Registers GoogleService-Info.plist, adds entitlements to all build configurations |
project.pbxproj |
Sets IPHONEOS_DEPLOYMENT_TARGET to 15.0 |
Background Modes #
| File | Change |
|---|---|
Info.plist |
Adds selected modes to UIBackgroundModes array |
Supports: fetch, remote-notification, location, audio, processing
If UIBackgroundModes already exists, only missing modes are added.
Google Maps #
| File | Change |
|---|---|
AppDelegate.swift |
Adds import GoogleMaps and GMSServices.provideAPIKey() |
Info.plist |
Adds NSLocationWhenInUseUsageDescription |
Author #
Built by Mohsen Bahaj
- GitHub: github.com/MohsenBahaj
- Portfolio: bahaj.net/en
- LinkedIn: linkedin.com/in/mohsen-bahaj
⭐ Support this project #
If this tool saved you time, please star the repository.
Found a bug or have a feature request? 👉 Open an issue
Contributing #
See CONTRIBUTING.md