배경
사이드 프로젝트로 아이폰 앱을 출시해보기로 했다. 언어는 Flutter를 사용하기로 했다. 나느 백엔드를 담당하기 때문에 Java를 사용하지만, 암호화 방식 중 E2EE(종단간) 암호화를 적용하기로 했기 때문에 Flutter를 통해 암호화 과정을 구현해 볼 생각이다.
Flutter를 한 번도 사용해보지 않았기 때문에 설치를 해보자.
본 글에서는 MacOS(M1)에서 Flutter를 설치하고 IntelliJ로 실행하는 과정을 다룬다.
환경
- MacOS(M1) Sequoia
- IntelliJ Ultimate Edition 2024.1.4
요구사항
MacOS에서 Flutter를 설치하기 위한 요구사항이다.
Requirement | Minimum | Recommended |
CPU Cores | 4 | 8 |
Memory in GB | 8 | 16 |
Display resolution in pixels | WXGA (1366 x 768) | FHD (1920 x 1080) |
Free disk space in GB | 36.0 | 56.0 |
설치
Rosetta 설치
일부 Flutter 구성 요소 중에는 Rosetta가 필요한 경우가 있다.
Rosetta는 Intel Mac 전용으로 제작된 앱을 Apple Silicon이 탑재된 M1 Mac에서 사용할 수 있도록 해준다.
아래 명령어를 통해 Rosetta를 설치해주자
$ sudo softwareupdate --install-rosetta --agree-to-license
Flutter SDK 설치
1. Flutter SDK 다운로드
링크에서 Apple Silicon 버전의 Flutter SDK를 다운로드 받는다. (링크)
2. Flutter SDK 파일 추출
맥에서는 기본적으로 '~/Downloads/` 위치에 저장된다. 만약 별도의 저장소에 저장했다면 해당 저장소에 맞게 명령어를 수정하면 된다. 기본 저장소에 저장되었다면 아래 명령어를 그대로 입력하면 된다.
$ unzip ~/Downloads/flutter_macos_arm64_3.29.1-stable.zip \
-d ~/development/
3. 환경 변수 추가
터미널에서 Flutter를 실행하려면 Flutter를 PATH 환경 변수에 추가해줘야 한다. 본 글에서는 기본 셸이 zsh라고 가정하고 진행한다.
zsh 셸에서는 .zshenv 파일에 환경 변수를 등록해서 사용한다.
$ vim ~/.zshrc
아래 환경 변수를 추가해준다.
export PATH=$HOME/development/flutter/bin:$PATH
source 명령어를 사용해서 변경 사항을 적용해준다.
$ source /.zshrc
Xcode 설치 및 구성
Flutter 앱을 개발하려면 Xcode를 통해 네이티 바이트코드로 컴파일해야 한다.
1. Xcode 설치
Appstore에서 Xcode를 검색해서 설치한다.
2. 설치된 Xcode 버전 지정
설치된 Xcode 버전을 사용하도록 아래 명령어를 입력한다.
$ sudo sh -c 'xcode-select -s /Applications/Xcode.app/Contents/Developer && xcodebuild -runFirstLaunch'
3. 라이센스 동의
공식 문서 가이드에서는 아래 명령어를 입력하라고 했지만 난 위의 명령어를 입력하니까 agreee를 입력하라고 했었다. 각자 상황에 맞게 하면 될듯 싶다.
$ sudo xcodebuild -license
CocoaPods 설치
앱이 네이티브 iOS 코드가 있는 Flutter 플러그인에 의존하는 경우 CocoaPods를 설치해야 한다.
CocoaPods는 iOS 및 MacOS 프로젝트에서 외부 라이브러리 및 종속성을 관리해주는 오픈 소스 패키지 매니저다.
1, CocoaPods 설치
$ sudo gem install cocoapods
2. 환경변수 추가
Flutter SDK 때와 마찬가지로 환경변수를 추가하고 적용해주자
$ vim ~/.zshrc
export PATH=$HOME/.gem/bin:$PATH
$ source /.zshrc
🚨 에러 발생!
ERROR: Error installing cocoapods:
The last version of activesupport (>= 5.0, < 8) to support your Ruby & RubyGems was 6.1.7.10. Try installing it with `gem install activesupport -v 6.1.7.10` and then running the current command again
activesupport requires Ruby version >= 3.1.0. The current ruby version is 2.6.10.210.
위 에러는 Ruby 버전이 낮아서 발생하는 에러다.(CocoaPods는 Ruby로 개발되었다.)
오류 내용을 확인해보면 Ruby 버전 3.1.0이상이 필요한데 현재 버전은 2.6.10이라고 한다. 3.1.0 이상의 Ruby를 설치해주자
1. homebrew로 rbenv 설치
Ruby의 버전을 독립적으로 사용할 수 있도록 도와주는 rbenv를 설치한다.
$ brew install rbenv
2. Ruby 설치
나는 3.1.6 버전의 Ruby를 설치했다.
$ rbenv install 3.1.6
3. 설치한 버전을 사용도록 수정
Ruby를 새로 설치하더라도 기존의 Ruby를 사용중이다.
아래 명령어를 통해 사용중인 버전을 확인한 후 자신이 설치한 버전을 사용하도록 수정해주자 (앞에 *이 붙은 버전이 현재 사용중인 버전이다.)
$ rbenv versions
* system
3.1.6
$ rbenv global 3.1.6
$ rbenv versions
system
* 3.1.6
개발 환경 체크
아래 명령어를 통해 MacOS용 Flutter 개발 환경의 모든 구성 요소가 갖춰졌는지 확인할 수 있다.
자신이 필요한 부분만 갖춰지면 되기 때문에 각자 필요한 구성 요소가 갖춰졌는지 확인하자
$ flutter doctor
Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.29.1, on macOS 15.3.1 24D70 darwin-arm64, locale ko-KR)
[!] Android toolchain - develop for Android devices (Android SDK version 35.0.1)
[!] Xcode - develop for iOS and macOS (Xcode 16.2)
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.1.4)
[✓] VS Code (version 1.98.0)
[✓] Connected device (3 available)
[✓] Network resources
! Doctor found issues in 3 categories.
실행
Android SDK 설치
1. [IntelliJ Settins > SDK 검색 > Android SDK 선택 > 원하는 Android SDK 설치]
나는 Android API 35를 설치했다.
플러그인 설치
1. [IntelliJ Settins > plugins 검색 > Flutter, Dart 설치]
Dart 프레임워크를 사용할거기 때문에 IntelliJ에서 Flutter와 Dart 플러그인을 설치해준다.
2. IntelliJ 재실행
Andorid SDK와 Flutter 플러그인을 모두 설치했다면 IntelliJ를 재실행 줘야 적용된다.
프로젝트 생성
1. [상단 메뉴 File > New > Project 선택]
2. Dart SDK path 지정
처음에는 Dart SDK 경로를 지정해줘야 한다. Flutter SDK 경로는 위 흐름대로 따라왔다면 ~/development/ 위치에 설치되어 있을거다.
/{Flutter SDK 경로}/bin/cache/dart-sdk
3. 프로젝트 이름과 경로 설정 후 생성
설치 완료!
참조
https://docs.flutter.dev/tools/android-studio
Android Studio and IntelliJ
How to develop Flutter apps in Android Studio or other IntelliJ products.
docs.flutter.dev
https://docs.flutter.dev/get-started/install/macos/mobile-ios
Start building Flutter iOS apps on macOS
Configure your system to develop Flutter mobile apps on macOS and iOS.
docs.flutter.dev