Flutter 개발 환경 구축 for Mac (+flutter doctor 이슈 체크)

2024. 12. 25. 19:30Project Log/학부 졸업프로젝트

Flutter 사용 이유

졸업프로젝트에서 클라이언트를 Flutter 프레임워크와 Dart 언어를 사용해서 구현하기로 했다. Flutter는 iOS, Android에서 호환되는 크로스 플랫폼이라는 장점이 있다. 이전에 사용했던 Kotlin 및 안드로이드 스튜디오와 비슷한 부분도 있을 것 같다.

 

하지만, Dart 언어를 사용하는 것이 처음이고 두 플랫폼에 호환되는 코드를 작성하는 방법에 대해 알아봐야 하므로, 공식 Flutter docs(https://docs.flutter.dev)를 참고하며 공부하기로 했다. 아직 프론트 디자인이 확정되지 않았기 때문에 이번 주는 다양한 위젯 사용법 익히기, Navigation route를 생성하기, TTS 테스트를 목표로 하고 있다.

 

Flutter Setup

먼저 운영체제와 개발할 앱의 타입을 선택하면 상세한 가이드를 확인할 수 있다.

 

'flutterApp'이라는 디렉토리를 생성하고 다음 과정을 진행하였다.

 

Apple silicon(M1, M2 등)을 사용하는 Mac에서는 일부 Flutter 구성 요소가 Rosetta 2 변환 프로세스가 필요하므로 Rosetta 2를 설치한다. flutterApp 경로에 있는 상태에서 vscode 터미널에 커맨드를 입력했다.

sudo softwareupdate --install-rosetta --agree-to-license

 

Flutter SDK 설치

Vscode extension에서 Flutter를 설치한다.

 

Command Palette(Command + Shift + P)를 열어주고, flutter라고 검색한다. 'Flutter: New Project.'를 선택한다. Flutter SDK가 이미 설치되어 있다면 Locate SDK가 나오고, 아직 없다면 Download SDK가 나온다. SDK를 설치할 경로를 선택하고 Clone Flutter를 누른다.

 

Flutter SDK를 설치하는 과정에서 다음 에러가 발생했다. 구글링해서 나온 방법들을 시도해 보았지만, 잘 해결되지 않았다. Use Vscode to install 탭 대신 Download and install 탭에 있는, 직접 SDK 파일을 압축 해제해서 PATH를 설정하는 방법을 사용하기로 했다. 

 

Flutter SDK를 설치한다. 나는 Apple Silicon용 파일을 다운로드 했다.

 

~/development 디렉토리를 생성하고, 아래 커맨드를 실행한다.

unzip ~/Downloads/flutter_macos_arm64_3.27.1-stable.zip \ -d ~/development/

 

 ~/.zshenv 파일을 vi로 열고, 아래 코드를 추가하고 저장한다.

export PATH=$HOME/development/flutter/bin:$PATH

 

flutter doctor 커맨드를 실행하면 권한 에러가 나올 수 있다. 앞에 sudo를 붙여서 실행하면 flutter doctor가 잘 실행되어 이슈를 확인할 수 있다. Android toolchain, Xcode, CocoaPods, Chrome, Android studio가 설치되지 않았다고 알려준다.

flutter doctor 권한 에러
sudo flutter doctor

 

Xcode 16과 CocoaPods 1.16을 설치해야 한다. Xcode는 Native Swift 또는 Objective-C 코드를 디버그 및 컴파일하기 위해 필요하며, CocoaPods는 Native 앱에서 Flutter 플러그인을 컴파일하고 활성화하기 위해 필요하다.

 

Xcode 설치

Xcode  설치 시 macOS 버전에 대한 메시지가 나온다면, 소프트웨어 업데이트를 해주면 된다.

 

Xcode 동의를 하고 필요한 컴포넌트를 설치한다. 

 

cmd에서 아래 커맨드도 실행한다.

sudo sh -c 'xcode-select -s /Applications/Xcode.app/Contents/Developer && xcodebuild -runFirstLaunch'
sudo xcodebuild -license

CocoaPods 설치

sudo gem install cocoapods

 

CocoaPods는 설치 과정에서 몇 가지 버전 에러가 나온다. 에러 메시지에서 Try 하라는 커맨드를 순서대로 잘 입력하다 보면, 정상적으로 CocoaPods가 설치된다.

 

~/.zshenv 파일에 아래 코드를 삽입하고 저장한다.

export PATH=$HOME/.gem/bin:$PATH

 

이렇게 하고 sudo flutter doctor를 실행했는데, 안타깝게도 제대로 CocoaPods가 인식되지 않는다.

 

스택 오버플로우에서 관련 에러를 처리하는 방법을 찾았다.

(https://stackoverflow.com/questions/65364073/flutter-doctor-cocoapods-installed-but-not-working)

방금 설치한 cocoapods를 제거하고 ruby 버전을 맞춘 후, cocoapods를 재설치한다. 하지만 에러는 해결되지 않았다...

sudo gem uninstall cocoapods
curl -L https://get.rvm.io | bash -s stable
rvm install ruby-2.7.2 
rvm --default use 2.7.2 
sudo gem install cocoapods

 

rvm install ruby-2.7.2를 실행했을 때 아래 에러가 나올 수도 있다.

 

rvm_make -j11 에러로 검색하여 스택오버플로우에서 비슷한 경우를 찾았다.

(https://stackoverflow.com/questions/76928819/error-running-rvm-make-j8-rvm-install-on-macos-ventura-or-sonoma) 

아무래도 macOS 버전을 업그레이드하면서 기존의 homebrew에 문제가 생긴 것 같다. 아래 커맨드를 입력하여 homebrew를 재설치했다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
sudo rm -rf /opt/homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
rvm install 3.2.4

 

Android studio 설치

Android studio를 실행한다. 라이센스 동의 및 설치를 진행한다. Plugins에서 Dart와 Flutter를 설치한다. More Actions > SDK Manager > SDK Tools > Android SDK Command-line Tools를 설치한다. 

 

아래 커맨드로 Android SDK 라이센스에 동의한다.

flutter doctor --android-licenses

 

Flutter doctor 이슈 체크

위의 과정을 거친 후, sudo flutter doctor로 해결되지 않은 이슈가 있는지 검토했다. CocoaPods 에러는 구글링을 많이 해보았지만, 아직 해결 방법을 찾지 못했다. 다음 포스팅에서 해결 방법을 다루어봐야겠다.