FileSystemException: Failed to decode data using encoding ‘utf-8’

FileSystemException 에러는 파일 인코딩 문제 때문에 발생합니다. 특히 에러 메시지에 나온 ._로 시작하는 파일은 macOS에서 자동으로 생성하는 메타데이터 파일인데, 이 파일이 텍스트 파일이 아니기 때문에 빌드 시스템이 UTF-8로 읽으려다 실패하는 경우입니다.

이 문제는 주로 외장 하드나 특정 파일 시스템을 사용할 때 자주 발생합니다.


원인 분석 🧐

에러 메시지를 자세히 보면, 문제가 되는 파일 경로가 /.../._Pods-Runner.release.xcconfig인 것을 알 수 있습니다.

  • ._ 파일: 이 파일은 macOS가 파일 속성 같은 메타데이터를 저장하기 위해 만드는 숨김 파일입니다. 실제 설정 파일이 아니라서 텍스트 형식(UTF-8)이 아닙니다.
  • 빌드 오류: Flutter가 iOS 앱을 빌드할 때, Pods 폴더 안에 있는 .xcconfig 설정 파일들을 읽으려고 합니다. 이때 실제 설정 파일이 아닌 ._로 시작하는 메타데이터 파일까지 읽으려고 시도하면서 “UTF-8로 디코딩할 수 없다”는 에러가 발생하는 것이죠.

해결 방법 ✅

해결 방법은 간단합니다. 프로젝트의 ios 폴더 내에 있는 불필요한 ._ 메타데이터 파일들을 모두 삭제해 주는 것입니다.

아래 단계를 차근차근 따라 해 보세요.

1. 터미널 열기

  • 먼저 컴퓨터에서 터미널(Terminal) 앱을 실행해 주세요.

2. 프로젝트의 ios 폴더로 이동하기

  • 터미널에서 cd 명령어를 사용해 현재 작업 중인 Flutter 프로젝트의 ios 폴더로 이동합니다.

Bash

# '프로젝트_경로' 부분에 실제 프로젝트가 있는 경로를 넣어주세요.
cd /Volumes/01042390717/Home/kanghyunseo/Development/project_flutter_3/planner_example/ios/

3. 불필요한 메타데이터 파일 삭제하기

  • ios 폴더로 이동했다면, 아래 명령어를 터미널에 입력하고 실행해 주세요. 이 명령어는 현재 폴더와 하위 폴더에 있는 모든 ._로 시작하는 파일을 찾아 삭제합니다.

Bash

find . -name '._*' -delete

4. Flutter 프로젝트 클린하기

  • 파일 삭제 후, 프로젝트의 루트 폴더로 다시 돌아가서 flutter clean 명령어를 실행해 기존 빌드 캐시를 깨끗하게 지워주는 것이 좋습니다.

Bash

# 상위 폴더로 이동
cd ..

# Flutter 프로젝트 클린
flutter clean

5. 앱 다시 실행하기

  • 이제 다시 앱을 빌드하고 실행해 보세요. 아마 정상적으로 디버깅이 시작될 거예요!

Bash

flutter run


명령어 설명 📜

방금 사용한 find . -name '._*' -delete 명령어는 다음과 같은 의미를 가집니다.

  • find .: 현재 위치(.을 의미)부터 파일을 찾기 시작합니다.
  • -name '._*': 이름이 ._로 시작하는 (*는 모든 문자를 의미) 파일을 찾습니다.
  • -delete: 찾은 파일을 삭제합니다.

이 간단한 조치로 대부분의 인코딩 관련 파일 시스템 에러를 해결할 수 있습니다.


참고

댓글 남기기