本文へ移動
cccskills
無料GitHub で公開

flutter-macos-duplicate-camera-plugin

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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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:

    # 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:

    # 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:

    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:

    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):

dependencies:
  camera_macos_plus: ^0.0.3
  divine_camera:
    path: packages/divine_camera
  camera_macos: ^0.0.9  # DUPLICATE - causes conflict

After (fixed):

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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y". Use when: (1) ExternalSecret shows OutOfSync in ArgoCD but won't sync, (2) ArgoCD application status shows "namespace X is not permitted in project 'infrastructure'", (3) ExternalSecret targets a namespace managed by a different ArgoCD project, (4) Using apps-of-apps pattern with separate infrastructure and application projects.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月10日 更新

Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language. After selection, generates AI image prompts and visual briefs section-by-section. Use when the user shares content and needs visual direction, image sourcing, or creative direction for any material.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月10日 更新

Fix "Null check operator used on a null value" errors when an object is set to null during an async await. Use when: (1) Object reference is nullified while awaiting, (2) Code accesses object with ! after await returns, (3) Cancel/dispose operations run concurrently with async operations on same object. Solution: capture local reference before await.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月10日 更新

Add custom metadata headers (x-amz-meta-*) to AWS v4 signed requests for GCS S3-compatible API. Use when: (1) Adding custom metadata to GCS uploads via S3 API, (2) Getting signature mismatch errors after adding new headers, (3) x-amz-meta-* headers being ignored or causing 403 errors. Custom headers MUST be included in canonical headers and signed headers list.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月10日 更新

Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings. Use when: (1) Password authentication fails with correct password, (2) Secret created with `<<< "value"` syntax, (3) Error like "password authentication failed" or "invalid token" despite correct value. Bash here-strings (`<<<`) add a trailing newline that corrupts secrets.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月10日 更新

Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp). Use when: (1) Media moderation, transcoding, or analysis silently skips files from Blossom or content-addressed storage servers, (2) URL extraction from Nostr event tags (imeta, r tags) drops URLs without recognized extensions, (3) CDN fallback URLs append .mp4 but the actual server uses extensionless content-addressed paths like /{sha256}. Common in Nostr video events (kind 34236) where different clients use different URL formats.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月10日 更新

divinevideo のスキルをすべて見る

このスキルの問題を報告する