> ## Documentation Index
> Fetch the complete documentation index at: https://docs.remind.tools/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform-Specific Issues

> Solutions for iOS, Android, Web, and Desktop platform issues

# Platform-Specific Troubleshooting

Detailed solutions for platform-specific issues in Remind Tools.

## iOS Issues

### Build & Deployment

<AccordionGroup>
  <Accordion title="App Store Connect upload failed">
    **Error**: `Invalid Bundle. The bundle does not support the minimum OS Version`

    **Solution**:

    ```yaml theme={null}
    # ios/Podfile
    platform :ios, '12.0'

    # ios/Runner.xcodeproj/project.pbxproj
    IPHONEOS_DEPLOYMENT_TARGET = 12.0;
    ```
  </Accordion>

  <Accordion title="Missing Push Notification Entitlement">
    **Error**: `Missing Push Notification Entitlement`

    **Solution**:

    1. Open `ios/Runner.xcworkspace` in Xcode
    2. Select Runner target
    3. Go to Signing & Capabilities
    4. Add Push Notifications capability
    5. Regenerate provisioning profile
  </Accordion>

  <Accordion title="CocoaPods version conflict">
    **Error**: `CocoaPods could not find compatible versions`

    **Solution**:

    ```bash theme={null}
    cd ios
    pod repo update
    pod install --repo-update
    # If still failing
    pod deintegrate
    pod setup
    pod install
    ```
  </Accordion>
</AccordionGroup>

### Runtime Issues

```dart theme={null}
// 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 devices`       |
| Reset simulator     | Device > Erase All Content        |
| Slow performance    | Disable "Debug > Slow Animations" |
| Network issues      | Reset network settings            |

## Android Issues

### Build Configuration

<Tabs>
  <Tab title="Gradle Issues">
    ```groovy theme={null}
    // 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
      }
    }
    ```
  </Tab>

  <Tab title="ProGuard">
    ```proguard theme={null}
    # android/app/proguard-rules.pro
    -keep class io.flutter.** { *; }
    -keep class com.google.** { *; }
    -keep class io.supabase.** { *; }
    ```
  </Tab>

  <Tab title="Signing">
    ```groovy theme={null}
    // android/app/build.gradle
    signingConfigs {
      release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
      }
    }
    ```
  </Tab>
</Tabs>

### Permission Issues

```xml theme={null}
<!-- 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

<Warning>
  Required for apps with >64K methods.
</Warning>

```groovy theme={null}
// android/app/build.gradle
dependencies {
  implementation 'androidx.multidex:multidex:2.0.1'
}

// Enable multidex
defaultConfig {
  multiDexEnabled true
}
```

## Web Issues

### CORS Problems

```dart theme={null}
// 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 html`      |
| CanvasKit | Better performance   | `--web-renderer canvaskit` |
| Auto      | Let Flutter decide   | `--web-renderer auto`      |

### PWA Configuration

```json theme={null}
// 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

<AccordionGroup>
  <Accordion title="Entitlements configuration">
    ```xml theme={null}
    <!-- 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>
    ```
  </Accordion>

  <Accordion title="Code signing">
    ```bash theme={null}
    # Sign for distribution
    codesign --deep --force --verify --verbose \
      --sign "Developer ID Application: Your Name" \
      --options runtime \
      build/macos/Build/Products/Release/Runner.app
    ```
  </Accordion>
</AccordionGroup>

### Windows

```yaml theme={null}
# 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

```bash theme={null}
# 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
```

## Cross-Platform Compatibility

### Platform Detection

```dart theme={null}
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

```dart theme={null}
// platform_service.dart
export 'platform_service_stub.dart'
  if (dart.library.io) 'platform_service_io.dart'
  if (dart.library.html) 'platform_service_web.dart';
```

## Performance Optimization

### Platform-Specific Optimizations

<CardGroup cols={2}>
  <Card title="iOS" icon="apple">
    * Metal rendering
    * Precompiled frameworks
    * App thinning
  </Card>

  <Card title="Android" icon="android">
    * R8/ProGuard
    * App bundles
    * APK splits
  </Card>

  <Card title="Web" icon="globe">
    * Tree shaking
    * Code splitting
    * Service workers
  </Card>

  <Card title="Desktop" icon="desktop">
    * Native compilation
    * Hardware acceleration
    * Window management
  </Card>
</CardGroup>
