ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🎬 Final Cut Pro Workflow Extension 개발 환경 세팅하기
    Apple🍎/Workflow Extensions 2025. 4. 23. 09:54

     

     

    Building a Workflow Extension | Apple Developer Documentation

    Create a workflow extension in Xcode by using the Final Cut Pro Workflow Extension template.

    developer.apple.com

    1️⃣ Workflow Extension 문서 요약

    📌 Workflow Extension이란?

    Final Cut Pro 내부에서 실행되는 macOS 앱 기반의 확장 프로그램이다.
    플러그인처럼 보일 수 있지만, 실제로는 macOS 앱이 Final Cut Pro 내부에서 구동되면서 독립적인 UI와 기능을 제공한다.
    이를 통해 사용자는 타임라인 마커, 편집 흐름, 메타데이터 등을 자동화하거나 외부 서비스와 연동할 수 있다.

    📌 SDK 버전 및 호환성

    • Final Cut Pro 지원 버전
      • Intel Mac: Final Cut Pro 10.4.9 이상
      • Apple Silicon: Final Cut Pro 10.5 이상
    • macOS: Big Sur(11) 이상
    • Xcode: 15.2 이상
    • 추천 macOS 버전: Ventura 13.5 이상

    📌 문서에서 언급된 주요 제약

    • Hardened Runtime의 Library Validation이 켜져 있으면 Extension이 동작하지 않음
    • Apple Events 권한 없이는 Final Cut Pro와의 통신 불가
    • 여러 경로에 동일 확장이 있을 경우 어떤 게 동작할지 알 수 없음
    • 확장은 ProExtensionHost.framework를 직접 링크하지 않음 (헤더만 제공됨)

     

    2️⃣ 용어와 개념 완전 정복

    🔐 Hardened Runtime

    • 정의: macOS에서 앱을 더 안전하게 실행하기 위해 Apple이 제공하는 런타임 보안 설정.
    • 하는 일: 외부 코드 주입 방지, 서명되지 않은 라이브러리 로딩 차단 등.
    • 왜 중요?: Workflow Extension은 Final Cut Pro에 Apple Events를 보내야 하는데, 이 과정에서 비서명 라이브러리나 통신이 필요하다.
      Hardened Runtime의 Library Validation이 켜져 있으면 이 통신이 차단된다.
    • 대응: Extension Target의 Library Validation을 비활성화해야 한다.

    📦 App Sandbox

    • 정의: macOS 앱이 시스템 리소스에 무단 접근하지 못하게 격리시키는 보안 시스템.
    • 하는 일: 앱이 허가된 디렉토리 외 접근 금지, Apple Events 차단 등.
    • 왜 중요?: 확장이 Final Cut Pro에 메시지를 보내기 위해선 sandbox 안에서도 권한을 명시적으로 열어줘야 한다.
    • 대응: com.apple.security.app-sandbox: true를 설정하고, scripting-targets 권한을 추가한다.

    📨 Apple Events

    • 정의: macOS에서 앱 간 메시지를 보내는 기술 
    • 하는 일: 예를 들어, 확장이 "Final Cut Pro야, 지금 선택된 클립의 정보를 줘"라고 요청하는 것.
    • 왜 중요?: Workflow Extension이 Final Cut Pro와 통신하는 핵심 수단이다.
    • 대응
      • Info.plist에 NSAppleEventsUsageDescription 추가
      • Entitlements에 com.apple.security.scripting-targets 추가
      • Xcode Capabilities에서 Apple Events 활성화

    📎 Library Validation

    • 정의: Hardened Runtime의 하위 기능. 앱이 로드하는 모든 라이브러리가 Apple 또는 동일 개발자 서명인지 확인.
    • 왜 문제?: Final Cut Pro와 통신에 필요한 일부 라이브러리가 비서명 상태이거나 동적 로딩 방식이라 막힌다.
    • 대응: Extension Target에서는 반드시 Library Validation을 꺼야 한다.

    🧱 ProExtensionHost Framework

    • 정의: Final Cut Pro가 Workflow Extension을 구동하기 위해 사용하는 내부 프레임워크.
    • 중요 포인트: 이 Framework는 바이너리를 제공하지 않고 헤더만 제공되므로 직접 링크하면 안 된다.
    • 대응: SDK의 제공 헤더만 참고하고, 런타임에 동적으로 객체 타입을 식별하는 방식(enum 등)을 사용.

    📍 Z-Ordering 문제

    • 정의: Final Cut Pro 내부의 floating window, popover 등과 확장의 창이 겹칠 때 창의 위/아래 순서가 엉키는 현상.
    • 대응: 완벽한 해결은 아직 없지만, UI 디자인 시 FCP 요소와 충돌하지 않도록 주의.

    📁 App 설치 위치 문제

    • 정의: 동일한 확장이 여러 경로(예: /Applications 외 경로)에 존재할 경우 어떤 걸 실행할지 시스템이 모름.
    • 대응: 오직 하나의 복사본만 응용 프로그램 폴더에 설치되어야 한다.

     

    3️⃣ Target별 설정 요약 (info.plist, entitlements, capabilities)

    ✅ App Target (컨테이너 앱)

    항목 설정

    Info.plist NSAppleEventsUsageDescription
    Entitlements com.apple.security.app-sandbox
    Capabilities App Sandbox만 활성화

    ✅ Extension Target (Workflow Extension)

    항목 설정

    Info.plist NSAppleEventsUsageDescription
    Entitlements com.apple.security.app-sandbox, com.apple.security.scripting-targets
    Capabilities App Sandbox ✅ / Apple Events ✅ / Library Validation ❌ 해제(Disable)

     

    댓글

Designed by Tistory.