플러터 MacOS CodeSign 에러
플러터 MacOS CodeSign 에러에 대해 "왜?"라고 물으면 답할 수 있으신가요?
\n\n> 플러터 MacOS CodeSign 에러에 대해 "왜?"라고 물으면 답할 수 있으신가요?\n# Flutter macOS CodeSign 에러 해결
에러 상황
M1 Mac 환경에서 Flutter macOS 앱을 빌드할 때 다음과 같은 에러가 발생했습니다.
$ 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 동기화가 되지 않는 경로 로 이동합니다.
# 별도 개발용 폴더 생성
mkdir -p ~/dev
cd ~/dev
# 프로젝트 생성 또는 이동
flutter create my_app
# macOS 빌드 실행
cd my_app
flutter run -d macos
피해야 할 경로
| 경로 | 이유 |
|---|---|
~/Documents | iCloud 동기화 대상 |
~/Desktop | iCloud 동기화 대상 |
~/Downloads | 환경에 따라 동기화 가능 |
**확인 방법 **: Finder에서 파일 옆에 구름 아이콘이 보이면 iCloud 동기화 중인 폴더입니다. 개발 프로젝트는
~/dev,~/workspace등 별도 경로에 두는 것을 권장합니다.
주의할 점
1. 인증서 만료 후 갱신하면 기존 프로비저닝 프로파일도 재생성해야 한다
인증서만 갱신하고 프로파일을 업데이트하지 않으면 동일한 CodeSign 에러가 반복됩니다.
2. Keychain Access에서 중복 인증서를 정리해야 한다
같은 이름의 인증서가 여러 개 있으면 Xcode가 잘못된 것을 선택할 수 있습니다.
댓글 로딩 중...