Fix Flutter macOS build failure caused by duplicate camera plugins. Use when: (1) macOS build fails with "Ambiguous use of 'CameraMacosPlugin.register(with:)'" error, (2) Both camera_macos and camera_macos_plus are in pubspec.yaml, (3) Build worked before adding a new camera package. The plugins define the same class name causing Swift registration conflicts.
Scanned 5/27/2026
Install via CLI
openskills install divinevideo/divine-mobile---
name: flutter-macos-duplicate-camera-plugin
description: |
Fix Flutter macOS build failure caused by duplicate camera plugins. Use when: (1) macOS build
fails with "Ambiguous use of 'CameraMacosPlugin.register(with:)'" error, (2) Both camera_macos
and camera_macos_plus are in pubspec.yaml, (3) Build worked before adding a new camera package.
The plugins define the same class name causing Swift registration conflicts.
author: Claude Code
version: 1.0.0
date: 2025-01-28
---
# Flutter macOS Duplicate Camera Plugin Fix
## Problem
Flutter macOS builds fail when both `camera_macos` and `camera_macos_plus` packages are present
in pubspec.yaml. Both packages define the same `CameraMacosPlugin` class, causing Swift
registration ambiguity.
## Context / Trigger Conditions
**Error message:**
```
Ambiguous use of 'CameraMacosPlugin.register(with:)'
```
**Symptoms:**
- macOS build fails during Swift compilation
- iOS build may still succeed (different plugin implementations)
- Error occurs in the generated plugin registration code
- May be accompanied by Xcode build system crashes or "stat cache file not found" errors
**Common scenarios:**
- Project has `camera_macos` for basic camera support
- Added `camera_macos_plus` for additional features
- Transitive dependency pulled in duplicate plugin
- Copied pubspec.yaml from another project with different camera requirements
## Solution
1. **Identify the duplicates** - Check pubspec.yaml for both packages:
```yaml
# Look for these:
camera_macos: ^0.0.9
camera_macos_plus: ^0.0.3
```
2. **Choose one to keep** - `camera_macos_plus` is generally preferred as it's a
more feature-complete fork of `camera_macos`
3. **Remove the duplicate** from pubspec.yaml:
```yaml
# Keep only one:
camera_macos_plus: ^0.0.3 # macOS camera support
```
4. **Clean thoroughly** - The Xcode build system may be in a corrupted state:
```bash
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. **Rebuild:**
```bash
flutter build macos
```
## Verification
After the fix:
- `flutter build macos` completes successfully
- No "Ambiguous use" errors in build output
- The macOS app launches and camera functionality works
## Example
**Before (broken):**
```yaml
dependencies:
camera_macos_plus: ^0.0.3
divine_camera:
path: packages/divine_camera
camera_macos: ^0.0.9 # DUPLICATE - causes conflict
```
**After (fixed):**
```yaml
dependencies:
camera_macos_plus: ^0.0.3 # macOS camera support (replaces camera_macos)
divine_camera:
path: packages/divine_camera
# camera_macos removed
```
## Notes
- `camera_macos_plus` is a community fork with additional features
- If you specifically need `camera_macos` instead, remove `camera_macos_plus`
- Check transitive dependencies with `flutter pub deps` if duplicates reappear
- The Xcode build system can get into corrupted states after this error;
thorough cleaning (including DerivedData) may be required
- This is specific to macOS - iOS uses different camera plugin implementations
## References
- [camera_macos_plus on pub.dev](https://pub.dev/packages/camera_macos_plus)
- [camera_macos on pub.dev](https://pub.dev/packages/camera_macos)
- [Flutter macOS plugin registration](https://docs.flutter.dev/packages-and-plugins/developing-packages#macos)
No comments yet. Be the first to comment!