프로젝트에서 보기 →

앱개발의 끝판왕 Flutter로 iOS, Android 모두 배포하기#1 - 설치

태그
기술 플러터 flutter android
시작일
종료일
수정일

https://www.youtube.com/watch?v=wqhIGMMbbSw

# 1. 이건 꼭 알아야 한다[^1]

[? 질문] 왜 굳이 **Flutter(플러터)**를 배워야 하는가(특히 iOS/Android를 모두 배포하려는 입장에서)?[^4]
[= 답] iOS와 Android를 각각 네이티브로 개발하면 플랫폼별로 소스코드를 2개 운영해야 해서 비용/시간/인력이 크게 들며, Flutter는 한 코드베이스로 양쪽을 개발/배포하는 크로스 플랫폼 프레임워크로 이 문제를 크게 줄여준다.[^8]

[? 질문] 기존 크로스 플랫폼(예: React Native 등)에서 흔했던 “플랫폼별로 되는 것/안 되는 것” 문제를 Flutter는 어떻게 줄이는가?[^12]
[= 답] Flutter는 플랫폼의 기본 UI 컴포넌트를 “가져다 쓰는” 방식이 아니라, 자체적으로 컴포넌트를 직접 그려 렌더링하는 방식이라 UI 영역에서 플랫폼 간 차이로 인한 문제가 상대적으로 적다(단, 푸시 알림 등 플랫폼 의존 기능은 별도 관리가 필요할 수 있다).[^13]

[? 질문] 이 강의 1편(설치)에서 최종적으로 도달해야 하는 상태는 무엇인가?[^31]
[= 답] Flutter SDK를 설치하고, 환경변수 PATH 등록을 마친 뒤 flutter doctor로 체크 항목들을 해결해 **체크(✓)**가 뜨게 만들며, iOS 시뮬레이터와 Android 에뮬레이터(AVD)를 직접 실행해 “실행되는 것”까지 확인한다.[^22]


# 2. 큰 그림[^1]

이 콘텐츠는 “Flutter로 iOS/Android 동시 배포”를 목표로 하는 시리즈 강의의 1편으로, **왜 Flutter가 필요한지(도입 배경/장점)**를 설명한 뒤, 실제 개발을 시작하기 위한 설치 절차를 맥OS 기준으로 안내한다.[^7] 또한 Windows 사용 시 제약(iOS 빌드 불가)과 그에 대한 현실적인 운영 방법도 함께 언급한다.[^16]

  • Flutter는 크로스 플랫폼 앱 개발 프레임워크로, iOS/Android를 각각 네이티브로 만들 때 필요한 이중 개발/이중 유지보수 비용을 줄이려는 목적에서 선택된다.[^8]
  • Flutter는 UI 렌더링 방식이 “플랫폼 기본 컴포넌트 사용”과 달라, 과거 크로스 플랫폼에서 흔했던 플랫폼별 UI 동작 차이 문제가 상대적으로 줄어든다는 점을 강조한다.[^13]
  • 설치 파트의 핵심은 flutter doctor를 기준으로 부족한 구성요소(Xcode, Android toolchain/Studio 등)를 표시되는 안내대로 하나씩 해결하고, iOS/Android 실행 환경(시뮬레이터/에뮬레이터)을 실제로 띄워 성공 여부를 확인하는 것이다.[^23]

# 3. 하나씩 살펴보기[^1]

## 3.1 강의 시작: 시리즈 예고와 주제 선언(Flutter 강의 시작)[^3]

화자는 인사 후 본인을 “제이스”라고 소개하고, “오늘부터는 플러터 강의를 진행”하겠다고 밝힌다.[^2] 이어서 곧바로 “클럽 털(=플러터)을 왜 배워야 되냐”는 문제부터 설명하겠다고 말하며, 이번 편이 단순 설치 안내 이전에 **도입 동기(Why)**를 분명히 깔고 가는 구성임을 예고한다.[^4]

  • “오늘부터”라는 표현으로 보아, 단발성 영상이 아니라 **연속 강의(시리즈)**임을 전제한다.[^3]
  • 1편의 중심은 “설치”지만, 설치에 앞서 Flutter의 개념/필요성을 먼저 설명한다.[^5]

## 3.2 Flutter가 무엇인가: 크로스 플랫폼 프레임워크의 정의[^5]

화자는 Flutter를 “크로스 플랫폼 앱 개발을 할 수 있는 프레임워크”라고 정의한다.[^5] 여기서 “크로스 플랫폼”이 의미하는 바를, 일반적인 앱 개발 현실(주요 배포 플랫폼이 iOS/Android로 나뉨)과 대비해서 풀어낸다.[^6]

  • 앱을 배포할 플랫폼은 대표적으로 iOSAndroid 두 가지가 있다.[^6]
  • 전통적인 네이티브 개발에서는:
    • Android는 보통 Java 또는 Kotlin으로 개발한다.[^7]
    • iOS는 Objective‑C 또는 Swift로 개발한다.[^7]

이 구조의 결과로, 두 플랫폼을 모두 지원하려면 “2개의 소스코드를 관리해야 한다”고 말한다.[^8] 이는 개발비(인건비), 개발 기간, 유지보수 부담이 모두 커진다는 문제로 이어진다.[^8]

[!IMPORTANT] 네이티브 2트랙의 비용 구조 iOS/Android를 각각 네이티브로 가면 “소스코드 2개”를 운영해야 하므로, 작은 조직이나 빠른 업데이트가 필요한 팀에게는 리소스 부담이 커진다는 문제의식을 강하게 제시한다.[^8]


## 3.3 “큰 회사 vs 작은 회사” 맥락: 왜 크로스 플랫폼이 절실한가[^9]

화자는 비용 문제를 조직 규모 관점에서 구체화한다.[^9]

  • “큰 회사들은 상관이 없다”고 말하며, iOS 개발자와 Android 개발자를 각각 고용해 양쪽을 동시에 만들 수 있다고 한다.[^9]
  • 그러나 “작은 회사”, “자금이 부족한 경우”, “빠르게 진행하고 업데이트를 빠르게 해야 하는 회사”는 네이티브 2개를 각각 운영하는 방식이 “리소스가 많이 든다”고 강조한다.[^10]

이 맥락에서 “네이티브로 가면 소스가 많이 들기 때문에, 이걸 어떻게 해결할 수 있을까”라는 문제의식이 생겼고, 그 해결책으로 크로스 플랫폼 프레임워크들이 등장했다고 설명한다.[^11]

  • 화자는 예시로 “React Native(리액트 네이티브)” 같은 접근(한 소스코드로 iOS/Android 개발)을 언급한다.[^11]
  • 즉, Flutter는 “한 코드베이스로 양 플랫폼을 동시에”라는 흐름(문제→해결 시도→프레임워크 등장) 속에서 이해된다.[^11]

## 3.4 기존 크로스 플랫폼의 한계와 Flutter의 차별점(렌더링 방식)[^12]

화자는 과거(또는 초기) 크로스 플랫폼 경험에서 문제점이 많았다고 말한다.[^12]

  • React Native는 “컴포넌트를 그대로 끌어다 쓰는” 방식이라고 설명한다.[^12]
  • 그 결과로 플랫폼별 차이 문제가 빈번했다고 한다:
    • iOS에서 실행했을 때 되던 것이 Android에서 안 되거나,[^13]
    • Android에 어떤 기능/컴포넌트가 없어서 안 되고,[^13]
    • 이런 문제를 고치다 보면 또 다른 문제가 생기는 식으로 “플랫폼 별로 문제가 굉장히 많았다”고 회고한다.[^13]
  • 본인도 “개발할 때는 (문제가) 있어도 됐는데 당시에는 진짜 그런 것들이 많았다”는 식으로, 실무 체감을 덧붙인다.[^14]

그 다음 Flutter의 접근을 “완전히 다른 개념”이라고 표현하며 핵심 차이를 “렌더링 방식”에서 찾는다.[^15]

  • Flutter는 컴포넌트를 플랫폼에서 가져다 쓰는 게 아니라, “(자체적으로) 만들어서 그려 버린다”고 설명한다.[^15]
  • 그래서 앞서 말한 “iOS에서 됐는데 Android에서 안 됨” 같은 경우가 “거의 없다”고 주장한다.[^16]
  • “iOS로 개발하면 Android에서 그냥 거의 된다”고까지 말하며, 특히 UI 영역에서의 이점이 크다고 강조한다.[^17]

다만 예외/보완점도 분명히 말한다.[^17]

  • 플랫폼별로 “스페시픽(특화)하게 해야 되는 것들” 예시로 푸시 알림 같은 기능은 “조금 관리를 해줘야” 한다고 언급한다.[^17]
  • 그럼에도 “UI적인 것들은 큰 힘(=큰 이점)”이라고 정리한다.[^17]

결론적으로 Flutter를 “정말 어메이징하고 훌륭한 프레임워크”라고 평가하며, 이제 설치로 넘어가겠다고 전환한다.[^18]

[!NOTE] 이 영상에서의 ‘Flutter 장점’ 서술의 포인트 화자의 논리는 “크로스 플랫폼이 필요한 이유(비용/속도)” → “기존 크로스 플랫폼의 플랫폼별 이슈” → “Flutter는 렌더링 방식이 달라 UI 이슈가 적다(단, 플랫폼 기능은 예외)” 순서로 전개된다.[^15]


## 3.5 설치 파트 예고: “설치가 길고, 많이 깔아야 한다”[^19]

화자는 Flutter 프레임워크 설명을 “이 정도까지” 하고, “오늘은 설치를 해보면서 진행”한다고 말한다.[^18] 동시에 설치가 “조금 길다”, “많이 깔아야 한다”고 난이도/분량을 미리 고지한다.[^19]

  • 이 고지는 초보자에게 흔한 설치 장벽(의존성/도구 다수)을 미리 인지시키는 역할을 한다.[^19]
  • 따라서 이후 내용은 “한 번에 끝”이라기보다, 필요한 구성요소를 단계별로 맞춰가는 흐름임이 암시된다.[^23]

## 3.6 Flutter 공식 사이트로 이동: Get Started/Install 페이지 접근[^20]

설치를 위해 “이 링크(Flutter 공식 사이트)를 가셔야 된다”고 말하고, 오른쪽(또는 상단)에서 “이벤트 페이지(=Get started/Install 성격의 페이지)”를 누르라고 안내한다.[^20] 그 페이지에 들어가면 Flutter를 사용할 수 있는 플랫폼이 여러 개로 보인다고 설명한다.[^21]

  • Flutter는 여러 플랫폼(Windows, macOS, Linux, Chrome 등)에서 개발 환경을 구성할 수 있는 것처럼 페이지에 표시된다고 말한다.[^21]
  • 다만 본 영상에서 화자는 macOS를 기준으로 설치를 진행한다.[^22]

## 3.7 Windows 사용자의 현실: iOS 개발/컴파일 제약과 우회 운영[^15]

화자는 Windows 사용자가 많을 것을 전제하면서 중요한 제한을 말한다.[^15]

  • Windows에서는 iOS 앱을 “개발할 순 없어요”라고 말한 뒤,[^15]
  • 더 정확히는 “개발할 수 없다는 게 아니고 컴파일은 안 됩니다”라고 정정한다.[^16]
  • 이유는 “앱 SDK가 안 나와요”라고 설명한다(즉, iOS 빌드에 필요한 환경이 Windows에 제공되지 않음).[^^16]

그리고 현실적인 대응 방법을 제시한다.[^16]

  • Windows에서는 Android 빌드/개발은 가능하므로 우선 Android 중심으로 개발하고,[^16]
  • iOS 빌드가 필요할 때는 macOS에서 빌드하거나, “빌드만 빌려서(=원격/대여/CI 또는 맥 장비 활용)” 처리하는 방식으로 진행할 수 있다고 말한다.[^16]

[!WARNING] 플랫폼 빌드 환경의 핵심 제약 iOS는 macOS/Xcode 환경이 사실상 필수이므로, Windows 단독으로는 iOS 빌드가 막힌다(화자는 “컴파일이 안 된다”로 표현). 따라서 팀/개인이 iOS 배포까지 목표라면 맥 환경을 확보해야 한다.[^16]


## 3.8 macOS 설치 가이드 진입: 요구사항 확인과 SDK 다운로드[^22]

화자는 본인이 macOS를 쓰므로 macOS 항목을 클릭해 진행한다고 말한다.[^22] 다만 영상에서 실제로 설치 과정을 처음부터 재현하지는 않는다고 미리 밝힌다.[^23]

  • 이유: 본인은 이미 설치되어 있고, 다시 전부 설치하는 것은 “오버킬”이기 때문이라고 설명한다.[^23]
  • 대신 “과정을 따라가면서 어떤 것들을 하는지”를 설명하겠다고 한다.[^23]

macOS 가이드 페이지에는 최소사양/필요 구성 등이 적혀 있고, “여기부터 시작”이라고 표시된 지점에서 다운로드를 진행한다고 안내한다.[^24]

  • 해당 항목(Flutter SDK 다운로드)을 클릭하면 다운로드가 실행된다.[^24]
  • 다운로드 후 “zip 파일이 생기고”, 그 zip을 “더블 클릭하면 된다”고 말한다.[^25]

## 3.9 Flutter SDK 압축 해제 및 폴더 구조: bin/flutter 실행파일 위치[^26]

화자는 본인의 예시로, 특정 폴더(예: “라이브러리” 폴더)에 Flutter SDK를 받아 둔다고 말한다.[^26] 당시 받았던 버전(“1.10.2013 버전”)을 언급하며, 다운로드/압축 해제 후 폴더 하나가 생긴다고 설명한다.[^27]

  • 압축을 풀면 Flutter 폴더가 생긴다.[^27]
  • 그 안에 들어가면 bin 폴더가 있고, 그 안에 flutter가 있으며 이것이 “실행파일”이라고 설명한다.[^28]

즉, 이후 터미널에서 flutter 명령을 쓰기 위해서는 이 bin 경로를 PATH에 등록해야 한다는 설치 흐름으로 이어진다.[^29]


## 3.10 PATH 등록: export로 flutter 명령을 인식시키기(주의사항 포함)[^29]

화자는 이제 “터미널로 가서” flutter가 있는 위치로 이동하라고 한다.[^29] 그리고 중요한 주의사항을 강조한다.[^30]

  • 커맨드를 실행할 위치는 “flutter 폴더가 있는 가장 상위 위치”여야 한다.[^30]
  • bin 안으로 들어가서 실행하면 안 된다고 명확히 말한다.[^30]
  • “여기서 아셔야 된다”는 표현으로, 초보자가 자주 실수하는 지점을 짚는다.[^30]

그 다음 export PATH=.../flutter/bin... 형태의 커맨드를 실행하면 Flutter 바이너리가 PATH에 등록된다고 설명한다.[^31]

  • 커맨드는 페이지에 있는 것을 “그냥 복사해서 실행하면 된다”고 안내한다.[^31]
  • 본인은 이미 되어 있어서 여기서는 실행하지 않겠다고 말한다.[^32]

[!TIP] 설치 중 가장 흔한 막힘 포인트 flutter 명령이 “커맨드 not found”로 뜨는 경우가 많으며, 이 영상에서는 export PATH=...flutter/bin...으로 PATH 등록을 해결하는 흐름을 제시한다.[^31]


## 3.11 flutter doctor로 설치 상태 진단: Doctor Summary, 로딩, 체크/엑스 표시[^22]

PATH 등록이 잘 되었는지 확인하기 위해 flutter doctor를 실행하라고 한다.[^33] 화자는 직접 실행 화면을 보여주며, 실행하면 “doctor summary”가 출력되고 로딩 바/스피너처럼 “돌아가는 것”이 보인다고 설명한다.[^34]

화자 본인의 경우:

  • “체크가 1,2,3,4,5개 다 확인”되어 있고[^35]
  • “모든 게 다 설치가 되어 있다”고 나온다고 한다.[^35]

하지만 처음 따라 하는 사람은 x 표시가 있는 항목들이 있을 수 있다고 말한다.[^36] 이때 해결 방식은 단순 명료하다.[^37]

  • flutter doctor 출력이 친절하게 설명해 주므로,[^37]
  • 거기에 “다운로드 해라”, “이렇게 해라” 등 안내된 커맨드/링크를 그대로 복사해서 붙여넣기 하면 된다고 한다.[^37]
  • Android 관련 항목은 Android Studio에서 SDK 업데이트가 뜨면 “다 OK”로 진행하라고 말한다.[^38]
  • 그리고 다시 flutter doctor를 실행하면 x가 사라지고, 또 남은 x를 같은 방식으로 해결해 나가면 된다고 설명한다.[^39]

[!IMPORTANT] 진단 도구 중심의 설치 전략 화자는 설치를 “매뉴얼을 외워서” 하는 게 아니라, flutter doctor가 알려주는 결함 항목을 하나씩 메우는 방식으로 진행하라고 안내한다.[^39]


## 3.12 PATH 영구 반영(터미널 재실행에도 유지) 언급[^40]

화자는 가이드를 “쭉 내리면” PATH 업데이트(영구 반영) 관련 내용이 나오고, 이를 진행하면 “나중에 터미널 다시 실행해도 그대로 실행이 된다”고 말한다.[^40]

  • 즉 앞서의 export가 세션 한정일 수 있고, 영구 반영을 위해 쉘 설정 파일에 PATH를 추가하는 단계가 뒤에 이어짐을 암시한다.[^40]
  • 최종 확인 기준은 flutter 실행 시 “본인이 설정하신 위치로 PATH가 나오면 완벽하게 설치”된 것이라고 말한다.[^41]
  • 그리고 flutter doctor에서 “10가지(?)가 되시면 아주 훌륭하게 설치”라고 표현하며, 체크가 충분히 채워진 상태를 성공 기준으로 제시한다.[^42]

## 3.13 iOS 툴체인: Xcode 설치/라이선스/명령 실행, 시뮬레이터 실행 확인[^43]

화자는 “추가적으로 설명”한다며, flutter doctor에서 iOS 관련 항목(=Xcode)이 무엇을 의미하는지 짚는다.[^43]

  • flutter doctor에서 Xcode 항목은 iOS 다룰 때 필요한 부분이라고 설명한다.[^43]
  • 또한 Android toolchain 항목도 별도로 표시된다고 말하며, 이 둘이 대표적인 큰 의존성임을 암시한다.[^44]

iOS 쪽에서 해야 할 일은 “써져 있는 대로 그대로 하면” 된다고 반복한다.[^45] 구체적으로는:

  • Mac App Store에서 Xcode를 다운로드받으라고 한다.[^46]
  • 이어서 가이드에 있는 커맨드들을 “그냥 복사해서 붙여넣기” 하면 된다고 말한다.[^46]
  • “Xcode build license” 관련 커맨드는 라이선스 동의 과정이라고 설명한다.[^47]

그리고 마지막 확인으로 특정 커맨드(영상에서는 “open … simulator” 류로 설명)를 실행하면 아이폰 시뮬레이터가 뜬다고 말하며, 직접 “아이폰이 실행”되는 화면을 보여준다.[^48]

  • “이렇게까지 나오시면 성공”이라고 말하며,[^49]
  • “iOS 시뮬레이터 설치(세팅) 성공”으로 판정한다.[^49]

다만, 가이드 페이지에 있는 “Create and run a simple Flutter app” 단계는 하지 말라고 강하게 선을 긋는다.[^50]

  • 그 단계는 “다음 강의부터 직접 따라가면서 다 알려드릴 부분”이라고 하며,[^50]
  • 오늘(설치편)은 “싹 다 스킵”하라고 지시한다.[^50]

[!WARNING] 실습 단계 선넘지 않기(강의 흐름 유지) 설치편에서는 환경만 갖추고, 샘플 앱 생성/실행 단계는 다음 편에서 함께 할 것이니 지금은 건드리지 말라고 명확히 지시한다.[^50]


## 3.14 Android 툴체인: Android Studio 설치 및 실제 에뮬레이터(AVD) 생성/실행[^51]

이제 Android 쪽으로 넘어가 “Android Studio 설치”를 누르라고 안내한다.[^51]

  • 해당 링크는 Android Studio 다운로드 페이지로 이동하며,[^51]
  • 다운로드 후 “다음, 다음”으로 설치하면 되고 “쉬워요”라고 말한다.[^52]

그 다음 “Setup” 단계에서 실제 기기(안드로이드 폰) 연결로 개발하고 싶은 사람들을 위한 단계도 언급한다.[^53]

  • 안드로이드 폰을 컴퓨터에 연결해 개발하려면 안내된 스텝을 따르면 된다고 말한다.[^53]
  • 반면 “에뮬레이터만 쓸 거면” 모든 단계를 다 하지 않아도 되고, 어떤 핵심 단계만 해도 된다는 식으로 선택지를 준다.[^54]

이후 화자는 Android Studio를 실행한 화면을 보여주며, 에뮬레이터 관리자(AVD Manager)로 들어가는 과정을 시연한다.[^55]

  • Android Studio 오른쪽(또는 메뉴)에서 AVD Manager로 들어갈 수 있다고 말한다.[^55]
  • 본인은 이미 여러 AVD가 있지만, 처음 설치한 사람은 “아무것도 없을 것”이라고 전제한다.[^56]
  • 아무것도 없다면 왼쪽 아래 “Create” 버튼(가상 디바이스 생성)을 누르라고 안내한다.[^57]

AVD 생성 과정에서의 선택:

  1. 기기 선택
  • 픽셀(Pixel) 같은 기기를 고르라고 하며, 갤럭시 넥서스 등 다른 것을 골라도 상관없다고 말한다.[^58]
  • 어떤 기기를 골라도 되고, 커스텀 프로파일을 만들어도 된다고 한다.[^58]
  1. 시스템 이미지(API 레벨) 선택 — “29 이상 추천”
  • 여기서 “조금 중요한데”라고 말하며, 29 이상을 추천한다고 안내한다.[^59]
  • 만약 원하는 이미지가 없으면 클릭해서 다운로드할 수 있다고 말한다.[^60]
  1. AVD 이름/옵션 및 완료
  • Next를 누르고, 이름을 정할 수 있으며(변경 가능), 기본 설정으로 두고 Finish를 누르면 새로 생긴다고 말한다.[^61]

마지막으로 실행(Play/Run)을 누르면 에뮬레이터가 실행된다고 보여주며, “이렇게 실행이 됩니다”라고 확인시킨다.[^62]

  • 여기까지 되면 Android 쪽도 준비가 된 것이고,[^63]
  • 결국 “Android 그리고 iOS 이렇게 두 개 다 실행”된다고 정리한다.[^63]
  • “여기까지 되시면 일단 셋업은 끝나셨습니다”라고 선언하며 설치편의 목표 달성을 명확히 한다.[^64]

## 3.15 마무리: 다음 편 예고, 댓글로 설치 문제 지원[^65]

화자는 다음 편부터는 “실제 코드 짜 보면서” Flutter 개발을 어떻게 하는지 보겠다고 예고한다.[^65] 또한 설치 과정에서 문제는 흔히 생기므로, 문제가 있으면 댓글에 남기면 “최대한 도와드리겠다”고 말하며 영상 종료 인사를 한다.[^66]

  • “설치만 하면 개발은 절반 정도는 된 것”이라는 취지로, 설치의 중요성과 진입 장벽을 다시 상기시킨다.[^66]
  • 시리즈 학습 흐름(설치 → 코드 실습)을 명확히 제시한다.[^65]

# 4. 핵심 통찰[^1]

  1. [h Flutter 도입의 1차 동기는 ‘기술 멋’이 아니라 ‘조직의 비용/속도 문제’다] iOS/Android 네이티브 이중 개발은 소스코드 2개 운영을 전제로 하며, 작은 팀·빠른 업데이트 요구에서 부담이 커진다는 문제의식이 출발점으로 제시된다.[^8]

    • 실행 시사점
      • 팀 규모/예산/출시 속도를 기준으로 “네이티브 2트랙 vs 크로스 플랫폼”을 의사결정하라.[^10]
  2. [h Flutter의 강점은 ‘렌더링 구조’에서 설명된다] 플랫폼 UI 컴포넌트를 그대로 쓰는 방식에서 발생하던 플랫폼별 이슈를, Flutter는 “직접 그려서 렌더링”하는 구조로 줄인다고 설명한다.[^15]

    • 실행 시사점
      • UI는 Flutter로 최대한 공통화하되, 푸시 알림 등 플랫폼 의존 기능은 별도 작업/테스트 범위를 잡아라.[^17]
  3. [h 설치는 ‘flutter doctor’가 중심인 점검-해결 루프다] 체크리스트를 외우는 게 아니라, flutter doctor의 X 표시를 보고 안내대로 하나씩 해결하는 방식이 가장 현실적인 설치 전략으로 제시된다.[^39]

    • 실행 시사점
      • 설치 중 막히면 flutter doctor 출력의 안내 문구/커맨드를 그대로 따라 하고, 해결 후 재실행으로 다음 문제를 찾는 루프를 돌려라.[^39]
  4. [m Windows 개발 환경은 iOS 빌드에서 제약이 크다] Windows에서는 iOS “컴파일이 안 된다”고 명시하며, iOS 빌드가 필요하면 macOS 환경을 확보하거나 빌드만 다른 방식으로 처리하는 운영을 제안한다.[^16]

    • 실행 시사점
      • iOS 배포까지 목표면 초기에 macOS 빌드 경로(맥 장비/CI/원격)를 확보하고 시작하라.[^16]
  5. [m 설치편의 완료 기준은 ‘명령 성공’이 아니라 ‘시뮬레이터/에뮬레이터 실행 확인’까지다] iOS 시뮬레이터가 실제로 뜨고, Android AVD가 생성·실행되는 것까지를 성공으로 본다.[^49]

    • 실행 시사점
      • flutter doctor 체크뿐 아니라 iOS/Android 실행 환경을 최소 1개씩 실제로 띄워 “런타임 준비”를 확인하라.[^63]

# 5. 헷갈리는 용어 정리[^1]

크로스 플랫폼: 하나의 코드베이스(소스코드)로 iOS/Android 등 여러 플랫폼에서 동작하는 앱을 개발하는 접근/전략.[^5]
네이티브 앱 개발: Android(Java/Kotlin), iOS(Objective‑C/Swift)처럼 각 플랫폼 공식 언어/도구로 별도 개발하는 방식.[^7]
Flutter SDK: Flutter 개발에 필요한 도구 묶음. 다운로드 후 압축 해제하여 사용하며, bin 경로를 PATH에 등록해 flutter 명령을 사용한다.[^28]
PATH 등록: 터미널에서 flutter 같은 명령을 어느 위치에서든 실행할 수 있도록 실행 파일 경로를 환경변수 PATH에 추가하는 작업.[^31]
flutter doctor: Flutter 개발 환경이 제대로 갖춰졌는지 진단하고, 누락된 도구 설치 방법을 안내해 주는 점검 명령.[^33]
Xcode: iOS 앱 개발/빌드에 필요한 Apple의 개발 도구(맥에서 설치). Flutter의 iOS 개발도구 체인에서 필수로 언급된다.[^46]
Android Studio: Android 개발 IDE. Android SDK/에뮬레이터(AVD) 설정의 중심 도구로 안내된다.[^51]
AVD Manager / 에뮬레이터: 가상 안드로이드 기기를 생성/실행하는 관리자 및 실행 환경. Flutter 앱 테스트에 사용한다.[^55]
API 레벨(예: 29): 안드로이드 플랫폼 버전 단위. 화자는 에뮬레이터 시스템 이미지 선택 시 29 이상을 추천한다.[^59]



참고(콘텐츠 정보)[^1]

  • 제목: 앱개발의 끝판왕 Flutter로 iOS, Android 모두 배포하기 #1 - 설치[^1]
  • 채널: 코딩 선배[^1]
  • 길이: 11분 16초[^1]
  • 링크: https://www.youtube.com/watch?v=wqhIGMMbbSw[^1]
  • 키워드: 플러터, flutter, android, ios, 개발, 모바일[^1]

[^1]: 영상 메타데이터(사용자 제공): "앱개발의 끝판왕 Flutter로 iOS, Android 모두 배포하기#1 - 설치 / 채널: 코딩 선배 / 길이: 11분 16초 / https://www.youtube.com/watch?v=wqhIGMMbbSw"
[^2]: @[00:00] "안녕하세요" / @[00:02] "제이스 입니다"
[^3]: @[00:03] "오늘 부터는 프록터 강의를 한번 진행을 해보도록 할건데요"
[^4]: @[00:06] "클럽 털을 왜 배워야 되냐"
[^5]: @[00:10] "크로스 플랫폼 앱 개발 ... 프레임 마크입니다"
[^6]: @[00:16] "~ 2개 플랫폼 ... ios 그리고 안드로이드"
[^7]: @[00:26] "안드로이드 ... 자바 또는 코틀린" / @[00:30] "ios ... 오브젝티브 c ... 슈트(스위프트)"
[^8]: @[00:35] "~ 2개의 플랫폼 ... 2개의 소스코드를 관리" / @[00:41] "엄청나게 ... 많이 들겠죠"
[^9]: @[00:50] "큰 회사들은 상관이 없어 ... ios 개발자 ... 안드로이드 개발자 고용"
[^10]: @[01:06] "작은 회사들 ... 자금이 부족 ... 업데이트를 빠르게 ... 리소스가 많이 듭니다"
[^11]: @[01:06] "~ 해결 ... 웹 ... 네이티브 ... 리액트 네이티브 ... 앞으로 터(플러터) ... 1 소스 코드를 ... 개발"
[^12]: @[01:22] "리액트 네이티브 ... 컴포넌트를 그대로 끌어다 쓰는"
[^13]: @[01:34] "~ 플랫폼 별로 ... ios에서 됐던 것들이 안드로이드에서 안돼 ... 문제 ... 굉장히 많았어요" / @[01:53] "플러터 ... 다른 개념 ... 만들어서 그려"
[^14]: @[01:46] "제가 개발을 할 때는 ... 당시에는 진짜 그런 것들이 많았습니다"
[^15]: @[01:53] "플러터 ... 완전히 다른 개념 ... 렌더링" / @[03:02] "윈도우즈 ... ios 개발을 할 순 없어요"
[^16]: @[03:09] "컴파일은 안 됩니다 ... 앱 sdk 가 안나와요" / @[03:15] "맥 os ... 빌드"
[^17]: @[02:12] "~ ios로 개발하면 안드로이드에서" / @[02:15] "푸시알림 ... 조금 관리를 해줘야 ... ui적인 것들은"
[^18]: @[02:29] "오늘 설치를 해보면서"
[^19]: @[02:34] "설치가 조금 ... 길어요 ... 많이 깔아"
[^20]: @[02:43] "이 링크 ... (플러터 사이트) ... 이벤트 페이지"
[^21]: @[02:53] "4개의 플랫폼에서 플러터"
[^22]: @[03:32] "어매 걸스(맥 os) ... 클릭"
[^23]: @[03:36] "그대로 따라 ... 못해요 ... 설치가 되어있고 ... 오버킬 ... 대신 ... 설명"
[^24]: @[03:52] "최소사양 ... sdk 여기부터 시작"
[^25]: @[04:01] "다운로드 ... zip ... 더블 클릭"
[^26]: @[04:11] "라이브 ... 폴더"
[^27]: @[04:20] "1점 10 2013 버전 ... 더블클릭 ... 폴더 하나"
[^28]: @[04:26] "~ 빈 ... 플러터 ... 실행파일"
[^29]: @[04:32] "터미널 ... 위치"
[^30]: @[04:50] "가장 상의 위치 ... 이빈 안에 들어가서 하시면 안되요"
[^31]: @[05:03] "익스포트 ... 패스 ... 플러터빈 ... 바이너리가 패스에 등록"
[^32]: @[05:15] "저는 안 할게요 ... 이미 등록"
[^33]: @[05:16] "확인 ... 플러터 닥터 실행"
[^34]: @[05:26] "닥터 ... 서머리 ... 로딩"
[^35]: @[05:37] "체크 ... 5개 ... 모든게 다 설치"
[^36]: @[05:41] "처음 ... x 표시"
[^37]: @[05:45] "친절에 ... 설명 ... 다운로드 ... 복사 ... 붙여 넣기"
[^38]: @[05:59] "안드로이드 ... 안드로이드 스튜디오 ... 업데이트 ... ok"
[^39]: @[06:11] "다시 ... 닥터 ... x 표시 ... 다음 x 표시 해결"
[^40]: @[06:21] "패스 업데이트 ... 110% ... 터미널 다시 실행"
[^41]: @[06:33] "설정하신 위치로 ... 패스 ... 완벽하게 설치"
[^42]: @[06:47] "10가지 ... 훌륭하게 잘 설치"
[^43]: @[06:48] "추가적으로 ... 플러터 닥터 ... x 코드 ... ios"
[^44]: @[07:07] "안드로이드 툴 체인"
[^45]: @[07:17] "써져 있는 대로 ... 안달(안 해도)"
[^46]: @[07:43] "맥 앱스토어 ... x 코드 ... 복사 ... 붙여 넣기"
[^47]: @[07:50] "x 코드 ... 라이센스"
[^48]: @[08:01] "마지막에 오픈 ... 커맨드 ... 실행"
[^49]: @[08:07] "아이폰이 실행 ... 성공 ... ios ... 설치 성공"
[^50]: @[08:17] "크레이트 앤 라나 ... 실행 하지 마세요 ... 다음 강의 ... 스킵"
[^51]: @[08:31] "안드로이드 ... 안드로이드 스튜디오 설치"
[^52]: @[08:42] "쉬워요"
[^53]: @[08:49] "피지컬 디바이스 ... 안드로이드폰 ... 연결"
[^54]: @[09:03] "에뮬레이터 ... 이것만 하셔도"
[^55]: @[09:09] "~ 안드로이드 스튜디오 ... AVD 매니저"
[^56]: @[09:36] "처음에는 아무것도 없으실"
[^57]: @[09:43] "크레이트 ... 클릭"
[^58]: @[09:50] "픽셀 ... 갤럭시 넥서스 ... 프로파일"
[^59]: @[09:57] "29 이상 ... 추천"
[^60]: @[10:07] "없으면 ... 다운로드"
[^61]: @[10:17] "이름 변경 ... 디폴트 ... 끝내기"
[^62]: @[10:27] "실행 ... 실행이 됩니다"
[^63]: @[10:36] "안드로이드 그리고 ios ... 두개 다 실행"
[^64]: @[10:38] "여기까지 ... 셋업은 ... 끝"
[^65]: @[10:42] "다음 ... 실제 코드 ... 개발"
[^66]: @[10:58] "~ 문제 ... 댓글 ... 도와드리도록 ... 감사합니다"

← 프로젝트에서 보기