flutter_native_toolkit 1.0.0
flutter_native_toolkit: ^1.0.0 copied to clipboard
A powerful CLI tool to automate native Android and iOS configuration in Flutter projects. Set minSdkVersion, add permissions, configure Info.plist, and more with simple commands.
Flutter Native Helper #
A powerful CLI tool to automate native Android and iOS configuration in Flutter projects. Stop manually editing AndroidManifest.xml, build.gradle, and Info.plist files!
Features #
- Set Android minSdkVersion - Update
build.gradleorbuild.gradle.ktswith a single command - Add Android Permissions - Inject permissions into
AndroidManifest.xmlautomatically - Add iOS Plist Keys - Configure
Info.plistentries for iOS permissions and settings - Interactive Permission Selector - Choose from 60+ pre-configured permissions organized by category
- Cross-Platform Support - Add permissions to both Android and iOS simultaneously
- Smart Defaults - Auto-generates iOS usage descriptions for common permissions
- Add Dependencies - Quick wrapper for
flutter pub add
Installation #
Global Activation (Recommended) #
dart pub global activate flutter_native_helper
Then use it from any Flutter project:
flutter_native_helper <command>
Local Installation #
Add to your dev_dependencies:
dev_dependencies:
flutter_native_helper: ^1.0.0
Then run:
dart run flutter_native_helper <command>
Quick Start #
# Set Android minSdkVersion to 23
flutter_native_helper set-sdk --version 23
# Add camera permission to both platforms
flutter_native_helper add-permission --name camera
# Interactive mode - browse and select permissions
flutter_native_helper add-permission --interactive
# List all available permissions
flutter_native_helper list-permissions
Commands #
set-sdk - Set Android minSdkVersion #
Update the minSdkVersion in your Android build.gradle or build.gradle.kts file.
flutter_native_helper set-sdk --version <VERSION>
flutter_native_helper set-sdk -v <VERSION>
Options:
| Option | Short | Description | Required |
|---|---|---|---|
--version |
-v |
SDK version number (1-99) | Yes |
Examples:
# Set to API level 23 (Android 6.0)
flutter_native_helper set-sdk -v 23
# Set to API level 26 (Android 8.0)
flutter_native_helper set-sdk --version 26
Supports:
- Groovy DSL:
minSdkVersion 21orminSdkVersion = 21 - Kotlin DSL:
minSdk = 21 - Variable references:
minSdkVersion flutter.minSdkVersion
add-permission - Add Permissions #
Add permissions to Android's AndroidManifest.xml and/or iOS's Info.plist.
flutter_native_helper add-permission [OPTIONS]
Options:
| Option | Short | Description | Default |
|---|---|---|---|
--name |
-n |
Permission key(s) to add | - |
--platform |
-p |
Target: android, ios, or both |
both |
--ios-description |
-d |
Custom iOS usage description | Auto-generated |
--interactive |
-i |
Launch interactive selector | false |
--list |
-l |
List all available permissions | false |
Examples:
# Add single permission to both platforms
flutter_native_helper add-permission -n camera
# Add multiple permissions (comma-separated)
flutter_native_helper add-permission -n camera,location,microphone
# Add multiple permissions (multiple flags)
flutter_native_helper add-permission -n camera -n location -n microphone
# Android only
flutter_native_helper add-permission -n internet -p android
# iOS only with custom description
flutter_native_helper add-permission -n camera -p ios -d "We need camera to scan QR codes"
# Interactive mode
flutter_native_helper add-permission -i
flutter_native_helper add-permission --interactive
list-permissions - List Available Permissions #
Display all 60+ available permissions organized by category.
flutter_native_helper list-permissions [OPTIONS]
Options:
| Option | Short | Description |
|---|---|---|
--category |
-c |
Filter by category name |
Examples:
# List all permissions
flutter_native_helper list-permissions
# Filter by category
flutter_native_helper list-permissions -c camera
flutter_native_helper list-permissions -c bluetooth
flutter_native_helper list-permissions -c location
add-plist - Add iOS Plist Key #
Add custom key-value pairs to iOS Info.plist.
flutter_native_helper add-plist --key <KEY> --value <VALUE> [OPTIONS]
Options:
| Option | Short | Description | Default |
|---|---|---|---|
--key |
-k |
Plist key name | Required |
--value |
-v |
Value for the key | Required |
--type |
-t |
Value type: string, boolean, integer, array |
string |
Examples:
# Add string value
flutter_native_helper add-plist -k CFBundleDisplayName -v "My App"
# Add boolean value
flutter_native_helper add-plist -k UIRequiresFullScreen -v true -t boolean
# Add integer value
flutter_native_helper add-plist -k MinimumOSVersion -v 12 -t integer
add-dep - Add Dependency #
Quick wrapper for flutter pub add.
flutter_native_helper add-dep --name <PACKAGE> [OPTIONS]
Options:
| Option | Short | Description | Default |
|---|---|---|---|
--name |
-n |
Package name to add | Required |
--dev |
-d |
Add as dev dependency | false |
Examples:
# Add regular dependency
flutter_native_helper add-dep -n http
# Add dev dependency
flutter_native_helper add-dep -n mockito -d
flutter_native_helper add-dep --name build_runner --dev
Available Permissions #
Permission Categories #
| Category | Permissions | Description |
|---|---|---|
| Network & Connectivity | 10 | Internet, WiFi state, foreground services |
| Camera & Media Capture | 3 | Camera, microphone, flashlight |
| Location Services | 3 | Fine/coarse/background location |
| Storage & Files | 6 | Read/write storage, media access |
| Contacts & Calendar | 5 | Contacts, calendar, reminders |
| Phone & SMS | 9 | Calls, SMS, call logs |
| Bluetooth & NFC | 7 | Bluetooth LE, NFC, nearby WiFi |
| Sensors & Biometrics | 7 | Biometric auth, health data, motion |
| System & Notifications | 10 | Notifications, alarms, tracking |
Common Permission Keys #
| Key | Android Permission | iOS Key |
|---|---|---|
camera |
android.permission.CAMERA |
NSCameraUsageDescription |
microphone |
android.permission.RECORD_AUDIO |
NSMicrophoneUsageDescription |
location |
android.permission.ACCESS_FINE_LOCATION |
NSLocationWhenInUseUsageDescription |
background_location |
android.permission.ACCESS_BACKGROUND_LOCATION |
NSLocationAlwaysAndWhenInUseUsageDescription |
contacts_read |
android.permission.READ_CONTACTS |
NSContactsUsageDescription |
calendar_read |
android.permission.READ_CALENDAR |
NSCalendarsUsageDescription |
bluetooth_connect |
android.permission.BLUETOOTH_CONNECT |
NSBluetoothPeripheralUsageDescription |
biometric |
android.permission.USE_BIOMETRIC |
NSFaceIDUsageDescription |
photos |
android.permission.READ_MEDIA_IMAGES |
NSPhotoLibraryUsageDescription |
notifications |
android.permission.POST_NOTIFICATIONS |
- |
internet |
android.permission.INTERNET |
- |
Run flutter_native_helper list-permissions to see all 60+ available permissions.
Interactive Mode #
The interactive mode provides a guided experience for selecting permissions:
flutter_native_helper add-permission --interactive
Features:
- Browse permissions by category
- See descriptions for each permission
- Select multiple permissions at once (e.g.,
1,3,5orall) - Visual indicators for iOS-compatible permissions
- Review selections before applying
Interactive Flow:
╔════════════════════════════════════════════╗
║ PERMISSION SELECTOR ║
╚════════════════════════════════════════════╝
Select permissions by category. Enter numbers separated by commas
to select multiple permissions (e.g., 1,3,5).
📁 Select a category (or 0 to finish):
1. Network & Connectivity (10 permissions)
2. Camera & Media Capture (3 permissions)
3. Location Services (3 permissions)
...
0. ✓ Done - Add selected permissions
Enter choice: 2
📋 Camera & Media Capture
Enter numbers separated by commas, "all" for all, or "back" to go back
[ ] 1. Camera [iOS]
Take photos and videos
[ ] 2. Microphone [iOS]
Record audio
[ ] 3. Flashlight
Control camera flashlight
Enter choices (e.g., 1,3,5 or "all"): 1,2
Added 2 permission(s)
✅ Currently selected (2):
• Camera (camera)
• Microphone (microphone)
Add more permissions? (y/n): n
Adding 2 permission(s)...
• Camera (camera)
✓ Android: Successfully added permission: android.permission.CAMERA
✓ iOS: Successfully added "NSCameraUsageDescription" to Info.plist.
• Microphone (microphone)
✓ Android: Successfully added permission: android.permission.RECORD_AUDIO
✓ iOS: Successfully added "NSMicrophoneUsageDescription" to Info.plist.
Summary
──────────────────────────────
Android: 2 added
iOS: 2 added
Programmatic Usage #
You can also use the library programmatically in your Dart code:
import 'package:flutter_native_helper/flutter_native_helper.dart';
void main() {
final projectRoot = '/path/to/flutter/project';
// Android Manager
final androidManager = AndroidManager(projectRoot);
// Update minSdkVersion
final sdkResult = androidManager.updateMinSdk(23);
switch (sdkResult) {
case Success(:final message):
print('Success: $message');
case Failure(:final error):
print('Error: $error');
}
// Add permission
final permResult = androidManager.addPermission('android.permission.CAMERA');
// iOS Manager
final iosManager = IosManager(projectRoot);
// Add plist key
final plistResult = iosManager.addPlistKey(
'NSCameraUsageDescription',
'We need camera access for photos',
);
// Use permission constants
final cameraPermission = findPermission('camera');
if (cameraPermission != null) {
print('Android: ${cameraPermission.androidPermission}');
print('iOS Key: ${cameraPermission.iosPermissionKey}');
print('iOS Description: ${cameraPermission.iosDefaultDescription}');
}
}
Error Handling #
The CLI provides helpful error messages:
# Not in a Flutter project
$ flutter_native_helper set-sdk -v 23
Error: Not a Flutter/Dart project. Could not find pubspec.yaml in current directory.
# Invalid permission
$ flutter_native_helper add-permission -n invalid_perm
Warning: Permission "invalid_perm" not found. Use --list to see available permissions.
# Missing Android directory
$ flutter_native_helper set-sdk -v 23
Warning: Android directory not found. Run "flutter create ." to add Android support.
Requirements #
- Dart SDK:
^3.0.0 - Flutter project with
pubspec.yaml - For Android commands:
android/directory - For iOS commands:
ios/directory
Dependencies #
dependencies:
args: ^2.5.0 # Command-line argument parsing
xml: ^6.5.0 # XML parsing for AndroidManifest.xml
path: ^1.9.0 # Cross-platform path handling
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Changelog #
See CHANGELOG.md for a list of changes.
Support #
If you encounter any issues or have questions:
Made with Dart for Flutter developers