스터디/Flutter+Dart

Flutter 3.3.10 시작하기 | 맥북 M1,M2 | VSCode 세팅

Dalmangyi 2021. 6. 9.

2022년 12월 27일 기준으로 Flutter 3.3.10 버전으로 내용을 수정해두었습니다.

 

==========

 

 

안드로이드와 아이폰은 개발한지도 오래 됬는데.. 

최근 회사 업무가 빠르게 구현해야 될 것들이 생겨서 안그래도 눈 여겨 보던 Flutter를 해보려 합니다 

Flutter를 다루는 Dart 언어는 항상 배우지 말아야 할 언어 순위안에 들고 있지만 

아이폰 개발도 하다보니 Dart보다 더한 Objective-C언어를 배운 입장에서는 그냥 그러려니 하고 시작해 볼까 합니다 ㅎㅎ

 

 

 

초기 1.0 이하 버전의 Flutter는 정말 문제가 많았다곤 하는데 지금은 그래도 SDK가 1.7 버전이 넘은걸 보니 왠만큼 해결 했으리라 생각되었습니다. 2.0 버전부터는 웹을 공식지원하고, 3.0 이상부터는 맥OS와 윈도우, 임베디드까지 지원하기 시작했습니다.

 

저는 안드로이드 스튜디오와 XCode가 너무 지겨워서 이번엔 VS Code로 해보겠습니다!! 

1년 넘게 써보니 안드로이드 스튜디오는 디버깅하기 좋고, VSCode는 가벼워서 좋았습니다.

 

크로스 플랫폼 개발이라 그런지 설정할게 많으니 잘 따라와 주세요~!~!

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

0. Flutter는?

모든 블로그 마다 같은 말을 반복하는게 싫어서.. 제가 처음에 접한 잘 정리된 게시글을 공유해 드립니다.

 

 

[번역] Flutter는 왜 혁명적인가? - Dan Kim - Medium

이 글은 What’s Revolutionary about Flutter를 번역한 글입니다. 조금 더 쉽게 읽히는 글을 위해 약간의 의역이 섞여 있습니다.

medium.com

요약 하자면, 모바일 개발 역사에서 어느정도 개발 방법이 자리잡기 시작했고, 여러개의 플랫폼을 한 번에 개발하기 위해 탄생하였습니다. 멀티플랫폼을 위해 개발된 WebView, 리액트 뷰를 비교하며 설명 해주고 있습니다. 그리고 Flutter의 핵심인 Widget개념에 대해서 설명하고 있습니다. 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

1. 기본 환경세팅

Flutter는 크로스플랫폼 개발을 위한 도구인 만큼

각 플랫폼에 최적화된 툴들의 설치가 필수 적이고 최신버전 또한 유지해야합니다..

크로스 플랫폼의 숙명입니다...

 

1.1 Android Studio 

 

아래 링크로 접속해서 가지고 계신 맥 환경에 맞게 안드로이드 스튜디오를 설치해 줍니다.

https://developer.android.com/studio?hl=ko 

 

1) 다운로드 & 설치

왼쪽 초록색 'Download Android Studio'를 클릭해주세요

 

약관 확인 체크박스를 해주시고, 맥이 인텔인지  애플 칩(M1, M2)인지를 확인하시고 다운로드 해줍니다.

 

다운로드 받은 파일을 실행한 후, Android Studio 아이콘을 드래그해서 Applications 폴더에 넣어서 설치해줍니다.

 

2) 실행 & 초기세팅

 

OK 클릭

 

기본 Standard를 클릭합니다.

 

테마를 선택합니다. 추후에도 변경이 가능합니다.

 

Next 클릭

 

 

 

 

 

 

 

 

왼쪽 android-sdk-license 클릭후, Accept 클릭.

 

 

왼쪽 android-sdk-arm-dbt-license 클릭후, Accept 클릭. Finish 클릭.

 

약관 동의후 다양한 컴포넌트들이 다운로드 됩니다.

 

 

다운로드가 완료되면 Finish를 클릭해주세요.

 

 

 

 

 

 

 

 

 

 

 

1.2 XCode 설치

1) XCode설치

XCode는 간단하게 App Store를 이용해서 설치하시면 됩니다

좀... 오래걸리는게 흠이니 설치를 누르고 다음 과정으로 진행하셔도 됩니다.

 

2) CocoaPods(코코아팟) 설치

iOS개발 과정에서 라이브러리를 쉽게 관리해주는 툴 입니다.

objective-c에서는 CocoaPods이 유명했고, swift에서는 Swift-Package-Manager가 있습니다.

그렇지만 저희가 사용하는 크로스플롯폼 환경은 CocoaPods를 사용합니다.

 

터미널에 아래와 같이 입력해서 설치해줍니다.

$sudo gem install cocoapods

패스워드는 맥북에서 로그인한 계정의 비밀번호를 작성하시면 됩니다. 

 

 

 

 

 

 

 

 

 

1.3 VSCode 설치

1) VSCode 설치

 https://code.visualstudio.com 접속

2) 좌측에 있는 초록 'Download' 버튼을 눌러주세요 

3) 다운받은 파일을 압축해제를 합니다

4) Visual Studio Code.app 파일을 [응용 프로그램] 폴더로 이동

 

5) 설치 끝! (이 맛에 맥 씁니다 ㅠㅠ)

 

 

 

 

 

1.4 Chrome 설치

Flutter 2.5 버전 부터는 Flutter에서 Web을 정식으로 지원하기 때문에, 웹 브라우저 설치가 필요합니다.

웹으로 빌드할 일이 없더라도, Flutter doctor 명령어를 사용해서 제대로 잘 설치했는지 검토할때 실패라고 뜨면 괜히 신경쓰입니다..

Flutter에서 웹 환경으로는 Chrome을 사용하게 됩니다.

 

아래 링크로 접속해서 다운로드 후, 설치해줍니다.

https://www.google.com/intl/ko/chrome/

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

2. 플러터와 다트 플러그인 설치

1) VS Code 실행

2) OS 의 상단에 있는 앱 메뉴에서 [View] - [Command Palette...] (⇧⌘P) 를 클릭합니다

3) 나타난 검색바에 'Extensions: Install Extensions' 를 입력하고 선택합니다.

 

4) 좌측에 나타난 Extensions 창안에 있는 검색창에 'Flutter' 를 검색합니다

5) 검색된 결과 중 가장 상단에 있는 Flutter 항목에 있는 작은 초록색 Install 버튼을 클릭해서 설치 합니다

 

6) Dart 플러그인도 4~5번과 같은 방법으로 'Dart'로 검색해서 설치합니다
     (2021.12.28 기준으로 Flutter를 설치하면 자동으로 Dart까지 설치되네요!!)

 

 

 

 

 

 


 

 

 

 

 

 

 

3. Flutter SDK 준비

위에서 설치해준 Flutter Plugin은 SDK가 아니고 VSCode에서 디버깅 할 수 있도록 도와주는 플러그인 입니다.

혼동하지 말고 꼭 Flutter SDK를 설치 해줍니다.

 

1) https://flutter.dev/docs/development/tools/sdk/releases 접속

2) macOS 탭으로 이동해서 Stable SDK를 선택해서 다운로드 해줍니다.

인텔칩 기반은 x64, 애플칩(M1, M2)기반 맥은 arm64기반은 arm64를 선택해주세요.

https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_3.3.10-stable.zip (인텔칩)

https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_3.3.10-stable.zip (애플칩)

3.3.10버전

 

https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_2.8.1-stable.zip
2021.12.29 기준으로 최신 버전이 2.8로 업데이트 되었습니다!! 용량이 1.1기가 정도 하네요, 2년만에 용량이 2배로 늘었어요...

 

3) 적당한 위치에 압축을 풀어줍니다 

     저는 계정폴더 밑에 SDK폴더를 하나 만들어서 압축을 풀어주었습니다.

 

 

 

 

 


 

 

 

 

 

 

4. 환경변수에 SDK 위치 등록

flutter 명령어를 어디서든 호출하기 위해선 환경변수로 등록해야 합니다.

다운받아서 압축푼 폴더를 환경변수로 등록합니다.

 

 

terminal (터미널) 앱을 실행하면, 이제는 맥의 기본 터미널이 된 Z Shell이 실행됩니다. 위에 zsh가 보이면 z shell 입니다.

<<Z Shell 인 경우>>

1) Home에 있는 .zshrc 수정

    $vi ~/.zshrc

    i 를 눌러서 Insert 모드로 변경후 내용 추가

2) .bash_profile 내용 마지막에 다운받은 후 압축을 푼 Flutter SDK 경로를 설정해줍니다.    
    저의 경우 계정폴더($HOME) 바로 아래 sdk폴더를 만들어 주고 거기에 압축을 풀었습니다.
    그래서 경로가 $HOME/sdk/flutter가 나오게 됩니다.

//기존 내용이 있다면 마지막 줄에 추가

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

    esc 키를 누른후, :wq 를 입력해서 vi 문서 저장하면서 종료합니다.

3) 환경변수 적용

    $source ~/.zshrc

 4) VS Code가 켜있다면 껏다 켜주기.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

5. 동작 진단하기

뭐 이런게 다 있나 싶지만, 크로스 플랫폼 개발이다보니 안드로이드와 아이폰 세팅까지 해줘야 합니다...

터미널 앱에서 직접 진단해도 되지만, 많이 쓰게될 VSCode로 동작을 진단해보겠습니다.

 

 

1) 아까 봤던 [View] - [Command Palette...] (⇧⌘P) 를 실행합니다

2) Command Paletter 검색바에 'Flutter: Run Flutter Doctor'를 검색해서 실행합니다.

Doctor를 실행했을때, Flutter SDK가 환경변수가 없어서 나타나는 모습. 위 과정에서 환경변수 .zshrc 파일에 flutter경로를 잘 추가해주세요.

 

3) 의사님(doctor)이 알려주는 의존성 문제는 꼭 고쳐놓는게 좋습니다.
    SDK 문제를 해결하고나니 Android toolchain, Xcode, iOS tools, Android Studio까지 세팅해주라고 하네요..

의사님이 고칠게 많데요..... 고치는 과정은 아래에서 계속됩니다.

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

6. 의존성 문제 고치기

의사가 진단을 했으면 고쳐주기까지 해주지......

 

6.1 의존성 문제 : Android toolchain 

1) 커맨드 창(터미널 앱)을 실행 해서 명령어를 입력합니다

  • $ flutter doctor --android-licenses

    Android sdkmanager not found. Update to the latest Android SDK and ensure that
    the cmdline-tools are installed to resolve this.
    이런 에러가 뜬다면 Android SDK Manager 에서 "Command-line Tools" 설치가 필요합니다.
    안드로이드 스튜디오 실행 > Settings > Appearance & Behavior > System Settings > Android SDK > Android SDK Command-line Tools 체크박스 선택 후, 아래 Apply를 클릭합니다.

 

 

2) 명령어 입력후 나오는 질문에 답해 줍니다

  • Review licenses that have not been accepted (y/N)? y
  • License android-googletv-license
    - Accept? (y/N): y
  • License google-sdk-license
    - Accept? (y/N): y
  • License intel-android-extra-license
    - Accept? (y/N): y
  • License mips-android-sysimage-license
    - Accept? (y/N): y
  • All SDK package licenses accepted 

 

3) VSCode - Command Palatte - doctor 호출해서 다시진단

  • Flutter: Run Flutter Doctor

의사양반 내가 고쳤소~~

    

 

6.2 의존성 문제 : Xcode installation is incomplete; a full installation is necessary for iOS development.

1) 커맨드 창에 명령어 입력

  • $ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
  • $ sudo xcodebuild -runFirstLaunch

 

 

6.3 의존성 문제 : CocoaPods installed but not initialized

 

1) 커맨드 창에 명령어 입력

  • $ sudo gem install cocoapods -n /usr/local/bin
  • $ pod setup

2) VSCode - Command Palatte - doctor 호출해서 진단

  • Flutter: Run Flutter Doctor

의사양반 이것도 내가 고쳤소~~~

   

6.4 의존성 문제 : iOS tools - develop for iOS devices

 

1) 커맨드 창에 입력해서 brew 설치 

        m1 m2 에서는 아래 명령어를 실행해달라고 합니다. 컴퓨터마다 명령어가 다르니 출력된 내용을 복사해서 터미널에 적어주세요.

 

 

2) 아래와 같은 명령어 입력

  • $ brew update
  • $ brew install --HEAD usbmuxd
  • $ brew link usbmuxd
  • $ brew install --HEAD libimobiledevice
  • $ brew install ideviceinstaller
  • $ brew install ios-deploy

3) VSCode - Command Palatte - doctor 호출해서 진단

  • Flutter: Run Flutter Doctor

허허 이거 이렇게 쉽게 고쳐지다니 허허

    

6.5 의존성 문제 : Flutter plugin not installed

이번 문제는 Android Studio에서 해결해야 합니다

 

1) 안드로이드 스튜디오 실행

2) OS 의 상단에 있는 앱 메뉴에서 [Android Studio] - [Preferences] (⌘,) 를 클릭합니다

3) 좌측 'Plugins' 클릭

4) Plugins화면에서 'Marketplace' 클릭

5) 검색바에 'Flutter' 입력

6) Flutter Languges 항목에 있는 'Install' 클릭 (Dart도 같이 설치됩니다)

 

 

7) Third-party Plugins Privacy Note : Accept 클릭

 

 

8) Plugin Dependencies Detected : Yes 클릭

 

 

9) 초록색 'Restart IDE' 버튼 클릭 

 

 

10) VSCode - Command Palatte - doctor 호출해서 진단

  • Flutter: Run Flutter Doctor

No issues found!&amp;amp;amp;nbsp; &amp;amp;amp;gt;&amp;amp;amp;gt; 모든 병을 고치고 진짜 의사가 된 기분~

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

. 마치며

모르면 해매지만 알면 간단한 설치였습니다.

추후엔 SDK 설치와 License는 자동으로 설치과정에 포함되어 있으면 하는게 제 바램입니다
(2019년부터 기다렸는데 2021이 된 지금도.. 이건 힘든가 봅니다..)

 

 

 

 

 

 

 

다음 글은 간단한 프로젝트를 만들고 실행하는 방법으로 찾아 뵙겠습니다.

도움이 되셨다면, 좋아요 또는 댓글 부탁드립니다~

 

 
 

 

댓글