-
🎬 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) 'Apple🍎 > Workflow Extensions' 카테고리의 다른 글
Final Cut Pro 워크플로우 확장(Workflow Extensions) 알아보기 (0) 2025.04.22 - Final Cut Pro 지원 버전