플러터 MacOS CodeSign 에러에 대해 "왜?"라고 물으면 답할 수 있으신가요?

\n\n> 플러터 MacOS CodeSign 에러에 대해 "왜?"라고 물으면 답할 수 있으신가요?\n# Flutter macOS CodeSign 에러 해결

에러 상황

M1 Mac 환경에서 Flutter macOS 앱을 빌드할 때 다음과 같은 에러가 발생했습니다.

SHELL
$ flutter run -d macos
Launching lib/main.dart on macOS in debug mode...
/Users/${username}/Documents/.../${project_name}.app: resource fork, Finder information,
or similar detritus not allowed
Command CodeSign failed with a nonzero exit code
** BUILD FAILED **

flutter run -d chrome으로 웹 빌드는 정상 동작하지만, macOS 빌드에서만 실패하는 것이 특징입니다.


원인 분석

이 에러는 CodeSign 과정에서 macOS의 확장 속성(extended attributes)이 포함되어 코드 서명이 거부되는 문제 입니다.

단계상세
1. iCloud 동기화~/Documents, ~/Desktop 등 iCloud 동기화 폴더에서 파일에 com.apple.ResourceFork 등의 확장 속성이 자동 추가됨
2. Flutter 빌드빌드 과정에서 생성되는 바이너리(.app)에도 해당 확장 속성이 복사됨
3. CodeSign 거부보안상의 이유로 불필요한 메타데이터가 포함된 파일의 서명을 거부

즉, iCloud 동기화 폴더 자체가 파일에 불필요한 메타데이터를 자동으로 부여 하기 때문에 발생하는 문제입니다.


해결 방법

프로젝트를 iCloud 동기화가 되지 않는 경로 로 이동합니다.

SHELL
# 별도 개발용 폴더 생성
mkdir -p ~/dev
cd ~/dev

# 프로젝트 생성 또는 이동
flutter create my_app

# macOS 빌드 실행
cd my_app
flutter run -d macos

피해야 할 경로

경로이유
~/DocumentsiCloud 동기화 대상
~/DesktopiCloud 동기화 대상
~/Downloads환경에 따라 동기화 가능

**확인 방법 **: Finder에서 파일 옆에 구름 아이콘이 보이면 iCloud 동기화 중인 폴더입니다. 개발 프로젝트는 ~/dev, ~/workspace 등 별도 경로에 두는 것을 권장합니다.

주의할 점

1. 인증서 만료 후 갱신하면 기존 프로비저닝 프로파일도 재생성해야 한다

인증서만 갱신하고 프로파일을 업데이트하지 않으면 동일한 CodeSign 에러가 반복됩니다.

2. Keychain Access에서 중복 인증서를 정리해야 한다

같은 이름의 인증서가 여러 개 있으면 Xcode가 잘못된 것을 선택할 수 있습니다.

댓글 로딩 중...