How to fix the 'The sandbox is not in sync with the Podfile.lock' error
Flutter “The sandbox is not in sync with the Podfile.lock.” 에러 해결 방법!
flutter를 다루면서 나의 스마트폰으로 ios 시뮬을 하려고 했는데 위와 같은 오류가 생겼습니다. 찾아보니 ios 시뮬을 할 때 빌드를 해줘야한다고 하네요 ㅠ 너무 번거롭다는 생각이 들지만 일단 아는 방법은 이것이니 위의 오류를 해결하는 방법을 공부해보려고 합니다.
Flutter에서 “The sandbox is not in sync with the Podfile.lock” 에러를 해결하려면, 다음과 같은 단계를 시도해 볼 수 있습니다.
1️⃣ flutter clean
1
flutter clean
명령어를 실행하여 캐시된 빌드 파일을 제거합니다.
- Flutter에서
flutter clean명령어는 현재 프로젝트의 모든 캐시 파일을 삭제하는 역할을 합니다. - 이를 통해 새로운 빌드를 시작할 때, 이전에 생성된 캐시 파일로 인해 발생할 수 있는 문제를 방지할 수 있습니다. 즉,
flutter clean명령어는 Flutter 프로젝트를 초기 상태로 변하게 합니다.
2️⃣ flutter pub get
1
flutter pub get
명령어를 실행하여 pubspec.yaml 파일에 지정된 종속성을 가져옵니다.
- Flutter에서
flutter pub get명령어는 pubspec.yaml 파일에 지정된 종속성을 가져오는 역할을 합니다. - Flutter에서 사용되는 패키지(라이브러리)들은 pub.dev 또는 다른 저장소에서 가져올 수 있습니다.
- 이러한 패키지들은 프로젝트의 pubspec.yaml 파일에 종속성으로 지정됩니다.
- “flutter pub get” 명령어는 이러한 종속성을 다운로드하고, Flutter 프로젝트에서 사용할 수 있도록 준비합니다. 따라서 새로운 패키지를 추가하거나, 기존 패키지를 업데이트하는 경우에는 “flutter pub get” 명령어를 실행해야 합니다.
- Flutter 프로젝트에서는 “flutter run” 명령어를 실행하기 전에 “flutter pub get” 명령어를 실행하여 모든 종속성을 미리 가져와야 합니다. 이를 통해 빌드 시간을 줄이고, 에러를 방지할 수 있습니다.
3️⃣ pod install
1. pod을 설치하기 전, 터미널에서 cd ios를 입력하여 ios 디렉터리로 이동합니다.
블로그 주인은 폴더를 디렉터리라고도 말하기도 합니다. 둘을 같이 사용할 수 있어서 헷갈리지 않게 미리 적어두겠습니다.
2. arch -x86_64 pod install --repo-update --clean-install를 입력하여 pod을 설치합니다.
arch -x86_64 pod install --repo-update --clean-install 명령어는 Rosetta 2 번역 레이어를 사용하여 Apple Silicon(M1) 기반의 macOS 시스템에서 CocoaPods 기반 프로젝트의 종속성(dependency)을 설치하는 데 사용됩니다.
이 명령어를 자세히 살펴보면 다음과 같습니다.
arch -x86_64- 이는 명령어에서 사용할 아키텍처를 지정합니다. 여기서는 x86_64, 즉 Intel 기반 아키텍처를 사용합니다. 이것은 CocoaPods가 아직 Apple Silicon과 완전히 호환되지 않기 때문에 Intel 아키텍처로 실행해야 한다고 합니다.pod install- 이는 프로젝트의 Podfile에서 지정된 종속성을 설치하는 CocoaPods 명령어입니다.--repo-update- 이 옵션은 종속성 설치 전 로컬 spec-repo(저장소)의 복사본을 업데이트합니다.--clean-install- 이 옵션은 CocoaPods가 종속성을 깨끗하게(install 이전의 상태로) 다시 설치하도록 강제합니다.
요약하면, 이 명령어는 Rosetta 2 번역 레이어를 사용하여 Apple Silicon(M1) 기반의 macOS 시스템에서 CocoaPods 기반 프로젝트의 종속성을 깨끗하게(install 이전의 상태로) 다시 설치하고, spec-repo를 업데이트합니다.
참고 !
Rosetta 2 번역 레이어는 Apple Silicon(M1) 기반의 Mac 컴퓨터에서 Intel 기반의 소프트웨어를 실행하기 위한 기술입니다. Rosetta 2는 소프트웨어의 기계어(machine code)를 Intel 명령어에서 Apple Silicon 명령어로 자동으로 번역하여 실행할 수 있게 합니다.
이것은 macOS에서 이전에 작성된 소프트웨어가 새로운 Apple Silicon 기반의 Mac 컴퓨터에서도 작동할 수 있도록 보장하기 위한 중요한 기술입니다. CocoaPods는 아직 Apple Silicon에 대한 완전한 호환성을 갖추지 않았으므로, Rosetta 2 번역 레이어를 사용하여 Intel 기반의 CocoaPods를 Apple Silicon에서 실행할 수 있게 됩니다.
따라서, arch -x86_64 pod install --repo-update --clean-install 명령어는 Rosetta 2 번역 레이어를 사용하여 Apple Silicon(M1) 기반의 Mac에서 CocoaPods를 실행하고, 프로젝트의 종속성(dependency)을 설치할 수 있도록 해줍니다.
또한 arch -x86_64 pod install --repo-update --clean-install 명령어는 CocoaPods를 설치하고 프로젝트의 종속성(dependency)을 업데이트하는 데 사용되는 여러 단계를 모아놓은 명령어입니다. 이 명령어를 사용하여 프로젝트의 종속성을 업데이트할 수 있지만, 이 명령어의 각 단계를 따로 사용할 수도 있습니다.
예를 들어,
pod install 명령어는 CocoaPods를 설치하고 프로젝트의 종속성을 업데이트하는 데 사용되는 명령어입니다. 이 명령어를 사용하여 프로젝트의 종속성을 업데이트할 수 있습니다. 또한, pod install --clean-install 명령어를 사용하여 이전에 설치된 CocoaPods 버전을 제거하고 프로젝트의 종속성을 깨끗하게(install 이전의 상태로) 다시 설치할 수 있습니다.
따라서, arch -x86_64 pod install --repo-update --clean-install 명령어는 CocoaPods를 설치하고 프로젝트의 종속성을 업데이트하기 위한 여러 가지 단계를 모아놓은 것이므로, 이 명령어의 각 단계를 따로 사용할 수 있습니다.
4️⃣ flutter build
build하기 전에 터미널에서 cd ..을 입력하여 프로젝트 메인 디렉터리로 이동합니다.
1
flutter build ios --no-sound-null-safety
flutter build 명령어는 Flutter 앱을 빌드하여 배포하기 위한 바이너리 파일을 생성하는 역할을 합니다.
--no-sound-null-safety는 이전 버전의 Flutter에서 사용되던 “null safety” 기능을 비활성화하는 옵션입니다. 이를 사용하면, null safety 관련 경고나 오류 메시지가 나타나지 않게 됩니다.
Flutter 2.0 이후부터는 “null safety”가 기본적으로 활성화되어 있으며, 이를 사용하면 코드에서 null 값을 사용할 때 발생할 수 있는 오류를 미리 방지할 수 있습니다. 하지만 일부 라이브러리나 패키지에서는 아직 “null safety”를 지원하지 않는 경우도 있습니다. 따라서 이러한 경우에는 --no-sound-null-safety 옵션을 사용하여 앱을 빌드할 수 있습니다.
🧐 오늘의 소감은?
플러터가 두가지 운영체제를 한번에 다룰 수 있다는 점이 메리트라 생각합니다. 벌써 부터 두가지 앱을 개발한다고 했으면 머리 아플 것 같네요
요즘에는 웹을 조금 다루다가 플러터를 하려고 하니 너무 어렵네요 ㅠㅠ 기초부터 차근차근 다져야 할텐데 아직 너무 어려운 것 같아요 ㅠㅠ 이번 에러는 그나마 조금 쉬운 에러여서 다행이었어요 ㅠ

