Platform-Specific Troubleshooting
Detailed solutions for platform-specific issues in Remind Tools.
iOS Issues
Build & Deployment
App Store Connect upload failed
Error : Invalid Bundle. The bundle does not support the minimum OS VersionSolution :# ios/Podfile
platform :ios, '12.0'
# ios/Runner.xcodeproj/project.pbxproj
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
Missing Push Notification Entitlement
Error : Missing Push Notification EntitlementSolution :
Open ios/Runner.xcworkspace in Xcode
Select Runner target
Go to Signing & Capabilities
Add Push Notifications capability
Regenerate provisioning profile
CocoaPods version conflict
Error : CocoaPods could not find compatible versionsSolution :cd ios
pod repo update
pod install --repo-update
# If still failing
pod deintegrate
pod setup
pod install
Runtime Issues
// iOS-specific code
if ( Platform .isIOS) {
// Request permissions
await Permission .appTrackingTransparency. request ();
// iOS-specific styling
SystemChrome . setSystemUIOverlayStyle (
SystemUiOverlayStyle .light,
);
}
Simulator Issues
Issue Solution Simulator not found xcrun simctl list devicesReset simulator Device > Erase All Content Slow performance Disable “Debug > Slow Animations” Network issues Reset network settings
Android Issues
Build Configuration
Gradle Issues
ProGuard
Signing
// android/gradle.properties
org . gradle . jvmargs =- Xmx4G
android . useAndroidX = true
android . enableJetifier = true
// android/app/build.gradle
android {
compileSdkVersion 34
defaultConfig {
minSdkVersion 21
targetSdkVersion 34
multiDexEnabled true
}
}
# android/app/proguard-rules.pro
-keep class io.flutter.** { *; }
-keep class com.google.** { *; }
-keep class io.supabase.** { *; }
// android/app/build.gradle
signingConfigs {
release {
keyAlias keystoreProperties[ 'keyAlias' ]
keyPassword keystoreProperties[ 'keyPassword' ]
storeFile file(keystoreProperties[ 'storeFile' ])
storePassword keystoreProperties[ 'storePassword' ]
}
}
Permission Issues
<!-- android/app/src/main/AndroidManifest.xml -->
< uses-permission android:name = "android.permission.INTERNET" />
< uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION" />
< uses-permission android:name = "android.permission.CAMERA" />
< uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" />
Multidex Issues
Required for apps with >64K methods.
// android/app/build.gradle
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
// Enable multidex
defaultConfig {
multiDexEnabled true
}
Web Issues
CORS Problems
// Configure CORS for web
class CorsConfiguration {
static void configure () {
if (kIsWeb) {
// Add CORS headers
HttpOverrides .global = WebHttpOverrides ();
}
}
}
// index.html
< script >
// Handle CORS in service worker
if ( 'serviceWorker' in navigator) {
navigator.serviceWorker. register ( 'flutter_service_worker.js' );
}
</ script >
Web Renderer Selection
Renderer Use Case Command HTML Better compatibility --web-renderer htmlCanvasKit Better performance --web-renderer canvaskitAuto Let Flutter decide --web-renderer auto
PWA Configuration
// web/manifest.json
{
"name" : "Remind Tools" ,
"short_name" : "Remind" ,
"start_url" : "." ,
"display" : "standalone" ,
"background_color" : "#0175C2" ,
"theme_color" : "#0175C2" ,
"orientation" : "portrait-primary" ,
"icons" : [
{
"src" : "icons/Icon-192.png" ,
"sizes" : "192x192" ,
"type" : "image/png"
}
]
}
Desktop Issues
macOS
Entitlements configuration
<!-- macos/Runner/Release.entitlements -->
< dict >
< key > com.apple.security.app-sandbox </ key >
< false />
< key > com.apple.security.network.client </ key >
< true />
< key > com.apple.security.files.user-selected.read-write </ key >
< true />
</ dict >
# Sign for distribution
codesign --deep --force --verify --verbose \
--sign "Developer ID Application: Your Name" \
--options runtime \
build/macos/Build/Products/Release/Runner.app
Windows
# windows/runner/Runner.rc
IDI_APP_ICON ICON "resources\\app_icon.ico"
# Build for Windows
flutter build windows --release
# Create installer with Inno Setup
iscc windows/installer.iss
Linux
# Install dependencies
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
# Build
flutter build linux --release
# Create AppImage
make appimage
# Create Snap
snapcraft
import 'dart:io' show Platform;
import 'package:flutter/foundation.dart' show kIsWeb;
class PlatformHelper {
static bool get isIOS => ! kIsWeb && Platform .isIOS;
static bool get isAndroid => ! kIsWeb && Platform .isAndroid;
static bool get isWeb => kIsWeb;
static bool get isMacOS => ! kIsWeb && Platform .isMacOS;
static bool get isWindows => ! kIsWeb && Platform .isWindows;
static bool get isLinux => ! kIsWeb && Platform .isLinux;
static bool get isMobile => isIOS || isAndroid;
static bool get isDesktop => isMacOS || isWindows || isLinux;
}
Conditional Imports
// platform_service.dart
export 'platform_service_stub.dart'
if (dart.library.io) 'platform_service_io.dart'
if (dart.library.html) 'platform_service_web.dart' ;
iOS
Metal rendering
Precompiled frameworks
App thinning
Android
R8/ProGuard
App bundles
APK splits
Web
Tree shaking
Code splitting
Service workers
Desktop
Native compilation
Hardware acceleration
Window management