개발환경 및 명령어
Flutter 개발환경 설치 for Mac#
1. Flutter SDK 설치#
Flutter를 사용하기 위해서는 Flutter SDK를 설치해야 합니다.
Info
다운로드 및 가이드 사이트로 이동하여 설치를 진행해주세요.
압축을 풀고 적당한 위치에 폴더를 구성해준다
~/Users/test/SDK/flutter
2. 환경변수 등록#
핵심은 환경변수 셋팅이라고 생각한다.
bash 나 zsh 나 똑같다.(참고로 필자는 zsh 사용중)
export FLUTTER_BIN="/Users/test/SDK/flutter/bin"
export PATH=$PATH:$FLUTTER_BIN
각자 다른 개발환경변수들도 셋팅 되어있기때문에 플루터변수도 따로 설정해줬다.
이부분을 잘 모른다면 따로 규칙을 찾아보시길...
4. 개발환경 셋팅 확인#
커맨드 명령어로 제대로 셋팅이 되었는지 체크해볼 수 있다.
flutter --version
버전확인
flutter doctor
플러터 개발에 필요한 다트, 안드로이드, iOS 관련된 툴 및 SDK 설치 점검
만약에 flutter 명령어가 안먹는다면 환경변수 셋팅문제다.
which flutter
which dart
했을때 설치경로가 나오니깐 참고하고 정상적으로 설정되었는지 체크해본다.
5. Dart 설치#
이건 간단해서 공식사이트만 참고해도 충분히 어렵지 않다.
Note
다트 공식사이트. (단, brew 가 설치되어있어야 한다)
brew tap dart-lang/dart
brew install dart
다트 설치
brew upgrade dart
다트 최신버전 업그레이드
brew switch dart 2.1.0
다트 버전 스위칭
brew info dart
다트 버전 정보 출력
flutter 명령어#
flutter command-line tool 는 플러터와 상호 작용하는 방식이다. dart cli 관련 문서는 위 경로에서 확인할 수 있다.
- flutter 로 프로젝트 최초 생성시 패키지명 설정하기(마지막 . 생략)
flutter create --org com.yourdomain appname //com.yourdomain.appname
//ex) flutter create --org com appname //com.appname
- change_app_package_name를 이용하여 이미 생성된 프로젝트 패키지명 변경하기
flutter pub run change_app_package_name:main com.package.appname
flutter 버전코드 버전네임 변경하기#
local.properties
에서 값을 변경해줘봤자 리셋된다. pubspec.yaml
에서 바꿔줘야 한다.
- version: 1.0.1+2
- version name: 1.0.1
- version code: 2
pubspec.yaml
name: flutter_lineup_builder
description: "A new Flutter project."
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.1+2
environment:
sdk: '>=3.2.3 <4.0.0'
안드로이드 무선 디버깅 설정#
adb connect [phone_ip]:[port]
안드로이드 배포준비하기#
https://flutter-ko.dev/deployment/android
임시메모#
동기와 비동기에 대해 설명해주세요.
동기(Synchronous)와 비동기(Asynchronous)는 프로그래밍에서 작업의 진행 방식을 나타내는 용어입니다. 이들은 작업이 어떻게 실행되고 완료되는지를 기준으로 구분됩니다.
동기(Synchronous)
동기 방식은 작업이 순차적으로 실행되며, 이전 작업이 완료될 때까지 다음 작업이 실행되지 않습니다. 간단히 말해, 작업 A가 작업 B에 의존하고 있을 때, 작업 A가 완료되기 전까지 작업 B는 시작되지 않습니다. 작업이 블로킹되고 대기 상태에 들어갈 수 있습니다.
비동기(Asynchronous)
비동기 방식은 작업이 동시에 실행되고, 이전 작업이 완료되기를 기다리지 않고 다음 작업을 진행합니다. 각 작업은 별도의 스레드 또는 프로세스에서 실행되며, 작업 간에 상호 의존성이 없습니다. 작업이 블로킹되지 않고 계속 진행됩니다. 블로킹과 넌블로킹에 대해 설명해주세요.
블로킹(Blocking)과 넌블로킹(Non-blocking)은 작업을 어떻게 처리하는지를 나타내는 용어로서, 주로 입출력(IO) 작업과 관련됩니다.
블로킹(Blocking)
블로킹 작업은 호출된 함수 또는 작업이 완료될 때까지 현재 실행 흐름이 멈추는 것을 의미합니다. 예를 들어, 파일을 읽을 때 블로킹 작업을 수행하면 파일이 완전히 읽혀질 때까지 다음 코드는 실행되지 않습니다. 블로킹 작업을 수행하는 동안은 대기 상태에 있을 수 있습니다. 넌블로킹(Non-blocking)
넌블로킹 작업은 호출된 함수 또는 작업이 즉시 반환되며, 현재 실행 흐름이 멈추지 않고 계속 진행됩니다. 예를 들어, 파일을 비동기적으로 읽을 때 넌블로킹 작업을 수행하면 파일 읽기 요청 후 즉시 반환되며, 나중에 완료될 때 알림을 받을 수 있습니다. 넌블로킹 작업을 수행하는 동안 다른 작업을 수행할 수 있습니다.
TCP와 UDP의 특징에 대해 설명해주세요.
TCP
- 연결 지향적: 데이터를 전송하기 전에 연결을 설정하고, 신뢰성 있는 데이터 전송을 보장하기 위해 연결을 유지합니다.
- 신뢰성: 패킷 손실이나 오류가 발생할 경우 재전송을 통해 데이터의 정확성과 순서를 보장합니다.
- 흐름 제어와 혼잡 제어: TCP는 데이터의 흐름을 조절하고 네트워크 혼잡을 방지하기 위해 흐름 제어 및 혼잡 제어 메커니즘을 사용합니다.
- 순차적 데이터 전송: 패킷의 순서를 보장하여 데이터를 원래의 순서대로 수신합니다.
- 상대적으로 높은 지연: 연결 설정 및 신뢰성을 위한 추가적인 작업으로 인해 지연이 발생할 수 있습니다.
UDP
- 비연결 지향적: 데이터 전송 전에 연결을 설정하지 않고, 데이터 그램을 즉시 전송합니다.
- 신뢰성 없음: 패킷 손실이나 오류가 발생할 경우에도 재전송을 하지 않으므로 데이터 손실이 발생할 수 있습니다.
- 흐름 제어나 혼잡 제어를 지원하지 않음: UDP는 흐름 제어나 혼잡 제어 메커니즘을 제공하지 않기 때문에 데이터 전송의 품질을 보장하지 않습니다.
- 높은 성능: TCP에 비해 간단하며, 데이터의 전송 속도가 빠릅니다.
- 다중 캐스트와 브로드캐스트 지원: UDP는 다중 캐스트와 브로드캐스트를 지원하여 하나의 송신자가 여러 개의 수신자에게 데이터를 전송할 수 있습니다.