flutter-macos-duplicate-camera-plugin

Par divinevideo · divine-mobile

Corrige l'échec de build Flutter macOS causé par des plugins caméra en double. À utiliser quand : (1) le build macOS échoue avec l'erreur "Ambiguous use of 'CameraMacosPlugin.register(with:)'" , (2) `camera_macos` et `camera_macos_plus` sont tous les deux dans `pubspec.yaml`, (3) le build fonctionnait avant l'ajout d'un nouveau package caméra. Les plugins définissent le même nom de classe, provoquant des conflits d'enregistrement Swift.

npx skills add https://github.com/divinevideo/divine-mobile --skill flutter-macos-duplicate-camera-plugin

Correction du Plugin Camera en Doublon pour Flutter macOS

Problème

Les builds Flutter macOS échouent quand les deux packages camera_macos et camera_macos_plus sont présents dans pubspec.yaml. Les deux packages définissent la même classe CameraMacosPlugin, provoquant une ambiguïté d'enregistrement Swift.

Contexte / Conditions de Déclenchement

Message d'erreur :

Ambiguous use of 'CameraMacosPlugin.register(with:)'

Symptômes :

  • Le build macOS échoue lors de la compilation Swift
  • Le build iOS peut réussir (implémentations de plugin différentes)
  • L'erreur se produit dans le code de registration des plugins généré
  • Peut être accompagnée de plantages du système de build Xcode ou d'erreurs « stat cache file not found »

Scénarios courants :

  • Le projet a camera_macos pour le support de caméra basique
  • Ajout de camera_macos_plus pour des fonctionnalités supplémentaires
  • Une dépendance transitive a apporté le plugin en doublon
  • Copie de pubspec.yaml d'un autre projet avec des besoins de caméra différents

Solution

  1. Identifier les doublons - Vérifier pubspec.yaml pour les deux packages :

    # Chercher ceux-ci :
    camera_macos: ^0.0.9
    camera_macos_plus: ^0.0.3
  2. Choisir celui à conserver - camera_macos_plus est généralement préféré car c'est un fork plus complet de camera_macos

  3. Supprimer le doublon de pubspec.yaml :

    # Garder un seul :
    camera_macos_plus: ^0.0.3  # Suport de caméra macOS
  4. Nettoyer en profondeur - Le système de build Xcode peut être dans un état corrompu :

    flutter clean
    rm -rf build/
    rm -rf macos/Pods/
    rm -f macos/Podfile.lock
    rm -rf ~/Library/Developer/Xcode/DerivedData/Runner-*
    flutter pub get
  5. Rebuilder :

    flutter build macos

Vérification

Après la correction :

  • flutter build macos se termine avec succès
  • Aucune erreur « Ambiguous use » dans la sortie de build
  • L'app macOS se lance et la fonctionnalité de caméra fonctionne

Exemple

Avant (cassé) :

dependencies:
  camera_macos_plus: ^0.0.3
  divine_camera:
    path: packages/divine_camera
  camera_macos: ^0.0.9  # DOUBLON - provoque un conflit

Après (corrigé) :

dependencies:
  camera_macos_plus: ^0.0.3  # Support de caméra macOS (remplace camera_macos)
  divine_camera:
    path: packages/divine_camera
  # camera_macos supprimé

Notes

  • camera_macos_plus est un fork communautaire avec des fonctionnalités supplémentaires
  • Si vous avez spécifiquement besoin de camera_macos, supprimez camera_macos_plus
  • Vérifier les dépendances transitives avec flutter pub deps si les doublons réapparaissent
  • Le système de build Xcode peut se corrompre après cette erreur ; un nettoyage en profondeur (incluant DerivedData) peut être nécessaire
  • C'est spécifique à macOS - iOS utilise des implémentations différentes du plugin camera

Références

Skills similaires