https://www.youtube.com/watch?v=1LhL_N9Bol0
description: |-
1. 이건 꼭 알아야 한다^1
[? 질문] 일반인도 Flutter로 앱을 “쇼츠 찍듯” 가볍게 만들려면, 설치/세팅에서 무엇을 어떻게 깔끔하게 끝내야 하는가^2
[= 답] Flutter SDK를 내려받아 PATH에 flutter\bin을 등록하고, Antigravity(VS Code 계열 편집기)에서 Flutter 확장(= Dart 포함)을 설치한 뒤, Android Studio를 설치해 SDK 경로를 한글/권한 이슈 없이(가능하면 D드라이브 영문 경로) 잡고, flutter doctor에서 뜨는 경고/누락 항목을 환경변수(ANDROID_HOME + PATH 3개 경로) 등록, Command-line Tools 설치, Visual Studio C++ Desktop 개발 컴포넌트 설치, Android 라이선스 동의까지 순차적으로 처리하면 된다.[^3]
[? 질문] 왜 설치가 자꾸 꼬이고(특히 Android SDK), 무엇이 “진짜 중요한 함정”인가[^4]
[= 답] Windows 사용자명이 한글이거나, 기본 C드라이브 경로/권한 문제로 SDK/NDK가 제대로 잡히지 않아 오류가 나기 쉽다.[^5] 그래서 Android Studio 초기 설정에서 SDK 경로를 커스텀으로 바꾸고(예: D:\Android\Sdk 형태), 시스템 환경변수로도 SDK를 명시해 외부(커맨드창/툴)에서 참조되게 해야 한다.[^6]
[? 질문] 설치 후 “실행”은 어떤 흐름으로 검증하고, 멀티 디바이스 테스트는 어떻게 하는가[^7]
[= 답] Android Studio에서 에뮬레이터(가상 디바이스, Pixel 5 등)를 생성/실행하고, Antigravity에서 프로젝트를 열어 하단 디바이스 선택(또는 Run 구성) 후 실행한다.[^8] 이어서 Chrome(웹), 에뮬레이터(안드로이드), 실제 갤럭시(무선 디버깅/페어링)까지 여러 디바이스를 동시에 붙여 핫리로드가 동시 반영되는 것을 확인하며 개발할 수 있다.[^9]
2. 큰 그림[^10]
이 콘텐츠는 Flutter로 앱을 빠르게 만들기 위한 “첫 관문”인 설치와 개발환경 세팅을, 개발 20년차 화자가 일반인도 따라할 수 있도록 Windows 기준으로 순서대로 시연하는 영상이다.[^11] 특히 Antigravity(구글 안티그래비티로 지칭되는 개발 툴/편집기)에서 Flutter 프로젝트를 열어 실행하기까지, Android Studio/SDK, 환경변수, flutter doctor로 검증 및 누락 구성요소 해결까지를 실제로 따라간다.[^12]
- 설치는 겁낼 일이 아니라 체크리스트다: Flutter 다운로드 → PATH 등록 → 확장 설치 → Android Studio/SDK →
flutter doctor로 X 항목 제거를 “하나씩 잡아가면” 된다고 강조한다.[^13] - 가장 큰 리스크는 Windows 경로/권한/한글 사용자명이다: Android Studio가 요구하는 경로 조건 때문에 설치가 꼬일 수 있어, 영문 경로와 D드라이브 설치를 권장한다.[^14]
- 멀티 디바이스(웹/에뮬레이터/실기기) 동시 테스트가 Flutter의 강점으로 제시된다: 한 번 세팅하면 여러 타깃에 동시에 붙여 빠르게 확인할 수 있다고 시연한다.[^15]
3. 하나씩 살펴보기[^16]
3.1 영상의 전제: “어렵게 생각하지 말고, 툴을 영상편집처럼 익혀 찍어내라”[^17]
화자는 자신이 “개발 20년차”라고 밝히며, 이전 영상이 길어져 이번에는 Flutter 설치 파트만 따로 떼어 “간단하게 설치만 삭삭” 진행하겠다고 한다.[^18] 대상은 “일반인 분들”이며, 설치를 어렵게 생각하지 말라고 반복한다.[^19]
화자는 앞으로 AI 툴(그리고 이런 개발 툴)을 영상 편집 소프트웨어 익히듯 익힌 다음, 콘텐츠를 찍어내듯 앱도 만들면 된다는 태도를 제시한다.[^20] “뭐 하나 걸리면 대박” 같은 기대도 언급하며, 진입장벽을 낮춰 접근하라고 독려한다.[^21]
[!IMPORTANT] “설치가 어렵다”는 감정 다루기
화자는 설치를 ‘대단한 개발 지식’이 아니라 정해진 절차를 따라가는 작업으로 프레이밍한다.[^22] 따라서 이 영상의 핵심은 개념 강의가 아니라, **막히는 지점(환경변수, SDK 경로, 추가 컴포넌트)**을 실제로 제거하는 순서다.[^23]
3.2 Flutter 다운로드(Windows)와 압축 해제/경로 준비[^24]
화자는 Flutter 홈페이지(검색하면 나오는 페이지)로 들어가 설치를 시작한다.[^25] 영어로 보는 것이 어렵다면 한국어로 설치 페이지를 보라고 하고, 여기서는 “수동” 설치를 선택한다.[^26]
- Windows용 Flutter SDK(안전한 빌드/채널로 보이는 항목)를 다운로드한다.[^27]
- 다만 “사이즈가 크다”고 말하며 다운로드/압축 해제의 긴 과정은 영상에서 스킵한다.[^28]
- 받아 둔 폴더 경로를 복사해(“파일 부분만 컨트롤 C”) 이후 환경변수 PATH에 넣을 준비를 한다.[^29]
여기서 화자의 의도는 “일반인이 하기 편하게” 경로를 복사-붙여넣기 중심으로 처리해 타이핑 실수를 줄이는 것이다.[^30]
3.3 Windows 시스템 환경변수 PATH에 flutter\bin 등록[^31]
다음 단계는 Windows 환경설정에서 시스템 환경변수를 여는 것이다.[^32] 화자는 Windows 버전에 따라 메뉴 위치가 조금 다를 수 있다고 전제하고, 대략적인 흐름을 안내한다.[^33]
진행 흐름(화자 설명 기준):
- 환경 설정 → 시스템 → 정보(About) → 시스템 정보 → 고급 시스템 설정 → 환경 변수로 진입[^34]
- 위쪽은 “사용자 변수”, 아래쪽은 “시스템 변수”인데, 화자는 시스템 변수 쪽에 넣겠다고 한다.[^35]
- 시스템 변수에서
Path를 찾아 더블클릭 후 “새로 만들기”로 경로를 추가한다.[^36] - 추가하는 경로는 Flutter 폴더의
bin폴더까지다. “빈까지 해야 구동할 수 있다”고 표현한다.[^37]
또한 복사/붙여넣기 시 경로가 이상하게 나올 수 있으니, 필요하면 탐색기에서 경로를 다시 복사해 넣으라고 한다.[^38]
환경변수가 왜 필요한가: “전역에서 프로그램을 핸들링”[^39]
화자는 환경변수를 다음처럼 설명한다.[^40]
- Windows라는 “프로그램의 가장 상위”에서 제어할 수 있도록 등록하는 것[^41]
- “전역 변수”처럼 볼 수도 있으며, 등록해두면 Antigravity에서만이 아니라 커맨드 창(CMD/PowerShell) 등 외부에서도 명령을 실행할 수 있게 된다.[^42]
- 과거 자바를 CMD에서 컴파일하던 “날코딩” 시절에는 자주 썼지만, 요즘은 덜 쓰더라도 Flutter는 여러 디바이스를 핸들링해야 해서 이런 방식이 필요하다고 정리한다.[^43]
결론은 단순하다: “어렵게 생각하지 마세요. 한 번 등록하면 끝이다.”[^44]
3.4 Antigravity에서 프로젝트 폴더 열고 Flutter 확장 설치(= Dart 포함) + flutter --version 확인[^45]
화자는 Antigravity를 띄워 프로젝트 폴더를 Flutter 앱으로 등록한다.[^46] 이어서 확장(Extension, “확장팩”)에서 Flutter 관련 패키지를 설치한다.[^47]
확장 설치 포인트:
- Flutter를 설치하면 Dart도 함께 설치되는 “세트”라고 설명한다.[^48]
- “Dart는 언어, Flutter는 프레임워크”라고 구분해 말한다.[^49]
설치 후 검증:
- PowerShell을 열고
flutter --version같은 버전 확인 명령을 친다.[^50] - 방금 PATH에 등록한
flutter\bin덕분에flutter명령어가 인식되고, 버전 정보가 출력되면 성공이라고 한다.[^51]
3.5 Android Studio 설치: 에뮬레이터를 위해 필요 + 설치 중 체크 포인트 1개(“SDK”)를 조심[^52]
다음 큰 단계는 Android Studio 설치다.[^53] 목적은 “여기에 에뮬레이터가 있다”는 것, 즉 안드로이드 가상 기기를 돌리기 위함이다.[^54]
- Android Studio 설치 파일을 다운로드한다(1.3GB 정도로 큼).[^55]
- 설치 파일(EXE)을 실행하면 되며, “하나만 조심하면 된다”고 하면서 그 ‘하나’를 Android SDK 체크/설치라고 말한다.[^56]
- 기본적으로 C드라이브에 설치되는 흐름을 보여주며 Next를 진행한다.[^57]
- 설치 마지막 단계에서 다음 스텝이 있으니, 체크된 상태로 Finish를 눌러 계속 진행하라고 안내한다.[^58]
- 구글 정책 관련 “보내지 않음(Don’t send)” 같은 선택은 각자 선택하라고 한다.[^59]
3.6 Android Studio 첫 실행: “커스텀 설치”를 선택해야 하는 이유(경로 문제) + 가장 중요한 함정(한글 사용자명/권한)[^60]
Android Studio 웰컴 화면에서 설정을 진행하는데, 화자는 반드시 커스텀(Custom) 을 선택하는 흐름을 탄다.[^61] 이유는 “디렉토리를 바꿔야 되기 때문”이라고 못 박는다.[^62]
여기서 화자가 “진짜 중요한 부분”이라고 강조하는 이슈가 나온다.[^63]
함정 1) Windows 사용자명이 한글이면 문제가 난다[^64]
- Android Studio/SDK가 경로에서 아스키(영문) 사용자명을 요구하는데, 한글 사용자명은 인식이 잘 안 된다고 말한다.[^65]
- 해결책으로는 “영문으로 사용자명을 등록해서 다시 설정/설치를 까는 것”을 1순위 권장으로 제시한다.[^66]
- 본인은 Windows 업데이트 과정에서 꼬여 한글 사용자명을 쓰게 된 사정이 있었고, 이 때문에 “고생”했고 “분석하느라” 시간을 많이 썼다고 경험담을 곁들인다.[^67]
함정 2) C드라이브/권한 문제로 SDK/NDK가 튕길 수 있다[^68]
- 화자는 C드라이브에서 “권한 오류”가 뜨고 디바이스 관련 구성에서 튕겨서 “완벽하게 다 안 된다”는 문제를 겪었다고 말한다.[^69]
- 그래서 두 번째 권장으로 D드라이브에 설치하라고 한다.[^70]
- 구체적으로는 C가 아니라 D에, 예를 들어 “Android 폴더 하나 만들고 SDK까지 딱” 잡아주는 식으로 경로를 설정하라고 안내한다.[^71]
설치 구성 요소: “세 개가 제일 중요”[^72]
커스텀 설치 흐름에서 플랫폼 등 여러 항목을 지나며, 화자는 (표현이 정확히 무엇을 가리키든) “세 개가 제일 중요한 거야… SDK”라고 말하며 핵심 구성요소 체크를 강조한다.[^73] 그리고 설치는 오래 걸리니 “담배 한 대 피고 오면 된다”는 식으로 대기 시간을 언급한다.[^74]
설치가 끝나면 Android Studio에서 New Project도 만들 수 있지만, 여기서는 Flutter가 아니라 안드로이드 기반 화면이므로 “여기는 안드로이드 기반”이라고 언급하고 넘어간다.[^75]
3.7 flutter doctor로 설치 상태 점검: X(미설치) 항목을 하나씩 없애는 방식[^76]
화자는 설치가 잘 됐는지 확인하기 위해 flutter doctor를 소개한다.[^77]
- “닥터”는 치료하듯 문제를 보여주고 해결하는 도구라는 뉘앙스로 설명한다.[^78]
- 출력에서 노란색 경고/체크, X 표시(미설치)를 확인할 수 있다고 한다.[^79]
그는 중간에 “환경 설정을 까먹었다”고 말하며, 어차피 하나씩 “제끼면서(처리하면서)” 가야 한다고 정리한다.[^80] 또한 버전 업데이트에 따라 자동으로 해결되는 경우도 있다고 덧붙인다.[^81]
3.8 Android SDK를 시스템에서 참조하게 만들기: ANDROID_HOME 변수 + PATH에 platform-tools/tools/bin 등록[^82]
화자는 다시 Windows 환경변수 설정으로 돌아가, Android Studio(에뮬레이터 포함)를 Flutter/툴들이 컨트롤할 수 있게 SDK 경로를 참조 가능하도록 만들어야 한다고 말한다.[^83]
핵심은 다음과 같다.
- 시스템 환경변수에
ANDROID_HOME을 새로 만들고, 값으로 SDK 경로를 넣는다.[^84] - 그리고 PATH에도 “세 개”를 등록한다고 말한다.[^85]
platform-tools경로[^86]tools경로[^87]- 필요에 따라
tools\bin까지(화자는 “빈까지 하나 더” 등록했다고 말함)[^88]
- “해당 디렉토리 찾아가는 거니까 어렵게 생각하지 마시고”라는 톤으로 반복 안내한다.[^89]
적용 후 PowerShell에서 방향키 ↑로 히스토리를 불러 다시 flutter doctor 등을 재실행하며 상태 변화를 확인한다.[^90]
[!TIP] 경로 세팅 접근법(화자 스타일)
“전부 한 번에 완벽하게”가 아니라,flutter doctor에서 뜨는 항목을 보고 환경변수/툴 설치를 하나씩 추가해서 X를 지워나간다.[^91]
3.9 Android Studio에서 “Command-line Tools” 추가 설치(체크박스)로 doctor 경고 해결[^92]
flutter doctor에서 요구하는 요소 중 하나로 “커맨드 라인 툴스(CMD line tools)”가 등장한다.[^93]
화자는 Android Studio에서:
- Android 관련 메뉴 → Settings로 이동[^94]
- Android SDK 항목에서 SDK Tools 탭을 보고[^95]
- Android SDK Command-line Tools 를 체크해 설치하라고 한다.[^96]
체크 후 다운로드가 진행되고, 오래 걸리지 않는다고 말한다.[^97] 설치가 끝나면 다시 doctor를 확인하며 “하나씩 잡아간다”는 접근을 반복한다.[^98]
3.10 Windows 데스크톱 빌드 요구사항: Visual Studio(Community) 설치 + “C++ Desktop 개발” 컴포넌트[^99]
다음으로 flutter doctor에서 남는 두 항목은 Visual Studio 관련 요구사항으로 보이며, 화자는 이것을 “C++(C시퍼스퍼스) 디벨로먼트 지원 컴포넌트를 설치해 달라는 것”이라고 설명한다.[^100]
진행:
- doctor 출력에 있는 URL을 클릭해 Visual Studio 다운로드 페이지로 간다.[^101]
- Community 버전을 다운로드한다.[^102]
- Visual Studio Installer에서 항목을 내려 “C++을 사용한 데스크톱 개발” 워크로드(컴포넌트)를 설치한다.[^103]
설치 후 다시 doctor를 돌려 X가 사라지고 “깨끗해졌다”고 확인한다.[^104]
3.11 Android 라이선스 동의: flutter doctor --android-licenses 실행 후 Y로 동의[^105]
doctor 출력에서 안드로이드 라이선스 부분에 느낌표가 남아 있는 것을 보여주며, “필수는 아니지만 그래도 해 달라는 것”이라고 말한다.[^106]
해결 방법:
- doctor가 안내하는
flutter doctor --android-licenses같은 명령을 복사해 실행한다.[^107] - 실행하면 동의 여부를 묻는데, 계속 Y를 누르고 엔터하면 된다고 안내한다.[^108]
이후 다시 버전을 보거나 doctor를 재확인해 경고가 사라진 것을 확인하고, “순차적으로 따라오면 된다”고 정리한다.[^109]
3.12 Android 에뮬레이터 생성: Device Manager → Create Virtual Device → Pixel 5 선택[^110]
이제 에뮬레이터를 만든다.[^111]
- Android Studio에서 Tools → Device Manager로 들어간다.[^112]
- 기본 디바이스가 떠 있어도 괜찮지만, 화자는 새로 만들기를 진행한다.[^113]
- “플러스 버튼”으로 Create Virtual Device를 선택한다.[^114]
- 모델은 Pixel 5를 선택한다(“구글 픽셀”).[^115]
- “갤럭시는 없다”고 말하며, 에뮬레이터 기본 라인업이 픽셀 중심임을 언급한다.[^116]
- 갤럭시나 iOS(아이폰)는 별도로 봐야 한다는 점을 짚지만, “거의 같으니까”라고 덧붙인다.[^117]
- Next → (이미지 다운로드 등) → Finish로 생성한다.[^118]
생성 후 Start를 누르면 실행되며, 처음에는 오래 걸리지만 다음부터는 인식되어 빨라진다고 한다.[^119] 실행된 화면을 “그냥 가상 기기, 안드로이드 폰”이라고 설명한다.[^120]
3.13 Flutter 프로젝트 생성/열기와 SDK 경로 지정: Antigravity에서 Android SDK 디렉토리를 잡아줘야 한다[^121]
화자는 Flutter가 프로젝트를 만들면 기본 소스(기본 프로젝트 구조)를 자동 생성해 준다는 점을 언급한다.[^122] (이전에는 AI가 만들어줬지만) 일반적으로 테스트/실행을 위해 기본 프로젝트를 만들 수 있다는 흐름이다.[^123]
중요한 포인트는 프로젝트 생성 시(또는 최초 설정 시) “로컬에서 SDK를 불러오겠냐”는 식의 안내가 뜨는데, 여기서 Android SDK 경로를 Antigravity가 정확히 알도록 지정해야 한다는 것이다.[^124]
- 환경변수 PATH 등록은 CMD/PowerShell 등에서 쓰려고 하는 것[^125]
- 반면 이 SDK 경로 지정은 Antigravity(VS Code)에서 SDK 디렉토리를 잡기 위한 것[^126]
- “반드시 이걸 해 줘야 됩니다”라고 강하게 말한다.[^127]
- 여기서도 “bin까지” 지정해 주는 식의 경로 지정이 언급된다.[^128]
이후 애플리케이션 폴더를 새로 등록하면 자동으로 제너레이터(프로젝트 생성)가 된다고 안내한다.[^129]
3.14 실행 단계 1: 디바이스 선택(“No device”) → 에뮬레이터 먼저 띄우기 → Run/Debug[^130]
실행(에뮬레이터 실행/연결) 파트에서, Antigravity 하단에 “No device” 가 보인다고 한다.[^131]
- 이를 클릭하면 연결 가능한 디바이스 목록이 보이는데, 먼저 에뮬레이터가 떠 있어야 한다.[^132]
- 따라서 “항상 먼저 띄워야 돼요”라며 구글 안드로이드 에뮬레이터를 실행하라고 한다.[^133]
에뮬레이터가 뜬 상태에서 다시 하단을 보면 “연결된 상태”가 보이고, 해당 디바이스를 선택해 실행할 수 있다.[^134]
3.15 실행 단계 2: Chrome(웹) 타깃으로도 실행 시연 + 포트는 랜덤[^135]
화자는 PC 웹도 된다는 것을 보여주기 위해 디바이스 타깃을 Chrome으로 바꿔 실행한다.[^136]
- 하단 타깃이 크롬으로 바뀐 상태에서 Run/Debug를 실행[^137]
- 디버그 콘솔에 뭔가 떠도 “무시하셔도 됩니다”라고 한다.[^138]
- 실행이 시작되면 크롬이 뜨고, 포트는 “임의로(랜덤으로) 던진다”고 설명한다.[^139]
실행된 기본 Flutter 앱 화면에서 버튼을 눌러 숫자가 변하는 등 기본 동작을 확인하며, 반응형처럼 보인다고 말한다.[^140]
3.16 실행 단계 3: 에뮬레이터(Pixel)로 실행 + lib/main.dart와 실행 버튼 관찰[^141]
다음으로 타깃을 Android 에뮬레이터(픽셀)로 바꿔 연결한다.[^142]
- 연결 후 Run/Debug를 하면 픽셀에서 앱이 뜬다.[^143]
- 이 과정에서
lib/main.dart가 열려 있는 것을 보고, “차이가 있군요”라고 말하며 UI/에디터 상태 차이를 관찰한다.[^144]
또한 하나가 떠 있는 상태에서 파일을 열면 실행 버튼이 또 보이는데, 이는 실행을 추가로 할 수 있다는 의미로 이해하며 다음 실험(멀티 연결)로 넘어간다.[^145]
3.17 멀티 타깃/멀티 세션 실험: 에뮬레이터 실행 중 Chrome으로도 추가 실행(패러럴) + 핫리로드 동시 반영[^146]
화자는 에뮬레이터로 앱이 떠 있는 상태에서, 다시 타깃을 크롬으로 바꿔 “또 실행”해 본다.[^147]
- 디버그 세션이 하나 더 생기고, 떠 있는 상태에서 크롬으로도 붙는 것을 확인한다.[^148]
- 그는 이를 “멀티 커넥션”, “패러럴하게 간다”고 표현한다.[^149]
- “Flutter는 이거고 Dart는 크롬으로 붙었다”는 식으로 보이는 현상을 흥미롭게 말한다.[^150]
이어서 코드 값을 1111로 바꾸고 저장(컨트롤 S)하자, 뒤에 떠 있는 쪽도 같이 바뀌는 것을 보여주며 동시 반영을 확인한다.[^151]
3.18 실제 갤럭시 기기 연결: 개발자 옵션 → 무선 디버깅(페어링 QR/코드) → 디바이스 목록 증가[^152]
이제 실제 갤럭시 폰을 연결한다고 한다.[^153] 먼저 개발자 옵션을 켜야 한다.[^154]
절차(폰 설정):
- 설정 → 휴대전화 정보[^155]
- 소프트웨어 정보[^156]
- 빌드 번호를 7번 터치하면 개발자 모드가 켜진다.[^157]
- 다시 뒤로 나오면 “개발자 옵션” 메뉴가 생긴다.[^158]
- 개발자 옵션에서 무선 디버깅(무선 디버그 연결)로 들어가면 QR 코드 페어링/페어링 코드가 있다.[^159]
연결 시연:
- PC 쪽에서 페어링(“QR코드 페어링”)을 진행해 붙는 것을 보여준다.[^160]
- 페어링 코드를 입력하는 방식도 가능하며, 예시 숫자(예: 6402 44…)를 언급하지만 “지금 못 쳤네요. 한번 해 보세요”라고 넘긴다.[^161]
- 불필요하게 받은 파일/항목은 삭제하라고 말한다.[^162]
이후 디바이스가 “다섯 개가 떴다”고 하며, 목록에서 SM(삼성) 디바이스를 선택할 수 있음을 보여준다.[^163]
3.19 멀티 디바이스 동시 연결 확인: 크롬/에뮬레이터/실기기 동시에 붙고, 변경이 “싹 바뀜”[^164]
화자는 실기기를 선택하면 기존 크롬이 죽고 실기기가 붙을지 추측하지만, 실제로는 다 계속 붙어 있는 상태(멀티) 로 보인다고 말한다.[^165]
- “현재 이렇게 다 연결돼 있는 상태”, “멀티로 붙는군요”라고 확인한다.[^166]
- 무선이 “확실히 훨씬 빠르다”고 체감도 언급한다.[^167]
그리고 다시 값을 변경하자 “세 개가 다 바뀌겠죠?”라고 말한 뒤 실제로 “싹 바뀌었습니다”라고 확인한다.[^168] 결론적으로 “세 개의 디바이스를 한꺼번에 작업할 수 있는 겁니다”라고 정리한다.[^169]
무선 디버깅 주의: 처음엔 USB든 무선이든 ‘한 번은 꽂아야’[^170]
화자는 무선이든 USB든 처음에는 “무조건” 한 번은 꽂아야 한다고 말한다.[^171]
이후 APK 다운로드/설치가 어느 정도 진행되면 케이블을 빼고 Wi‑Fi로(아까 설정한 방식으로) 진행하면 된다고 안내한다.[^172]
3.20 Antigravity UI 함정: Hidden/Hide 옵션을 건드리면 탑바 아이콘이 사라지고 복원이 어렵다[^173]
마지막으로 “중요한 부분”을 체크한다며 툴 사용상의 함정을 공유한다.[^174]
화자는 현재 자신의 화면에서 원래 있어야 할 아이콘/옵션이 사라진 상태라고 말한다.[^175] 블로그에 캡처해 둔 원래 화면에는 있어야 하는데 지금은 없다고 한다.[^176]
원인:
- 어떤 아이콘을 클릭하다가 아래쪽에 Hide/Hidden 옵션이 있길래 체크했더니, 탑바가 사라졌다는 것이다.[^177]
- 문제는 “복원이 안 돼요”라고 할 정도로 되돌리기 어렵다는 점이다.[^178]
그래서 결론적으로 사용자에게:
- “Hidden 같은 거 하지 마세요”, “감추기 같은 거”를 건드리지 말라고 강하게 경고한다.[^179]
- 오픈 소스라 이런 UI 복구/초기화 UX가 덜 다듬어진 것 같다고 추측한다.[^180]
- 다만 대중적으로 많이 쓰이면 개선될 거라며 너무 걱정하지 말라고 한다.[^181]
[!WARNING] UI 옵션 ‘Hidden’은 함정
잘못 숨기면 탑바가 사라지고 복원이 어려울 수 있다는 실제 경험 기반 경고다.[^182]
3.21 실행 진입 방식 보완: “No Configure”에서 디바이스 선택 후 실행도 가능[^183]
화자는 실행에 대해 추가 팁을 준다.[^184]
- 어떤 경우에는 하단에서 디바이스를 고르는 방식 말고, “No Configure”를 클릭해 디바이스를 셀렉트하고 실행할 수도 있다고 한다.[^185]
- 이 방식이 “더 편한 거야”라고 평가한다.[^186]
다만 본인의 현재 화면은 녹화 환경 등 때문에 일부 UI가 다르게 보일 수 있다며 양해를 구한다.[^187]
3.22 다음 영상 예고 + 마무리: 세팅은 힘들지만 익숙해지면 친숙해지고, 앱도 수익화 도구가 된다[^188]
화자는 Antigravity의 AI 에이전트 가이드(다음 단계)는 다음 영상으로 나갈 것이며, 유튜브를 참조해 이어서 보면 된다고 안내한다.[^189] 즉, 이번 영상은 “앱 만드는 거”로 가기 전의 설치/세팅 파트다.[^190]
그는 세팅 과정이 “힘들었죠? 저도 힘들었습니다”라고 공감하면서도, 새로운 세계가 열려 즐겁다고 말한다.[^191] 그리고 오늘 한 설치/세팅을 “숙제”처럼 잘 해두고, 블로그/유튜브에 올려 광고 수익을 창출하듯 앱도 만들어 올리면 광고가 붙어 수익화할 수 있다는 메시지로 동기를 부여한다.[^192]
마지막으로 “세팅이 어렵지만 자주 보시다 보면 친숙해져요. 어렵지 않아요. 일반인도 도전해 보세요”라고 재차 독려하며 마친다.[^193]
4. 핵심 통찰[^194]
- 설치는 ‘이해’보다 ‘순서’의 문제로 다뤄진다: 화자는
flutter doctor에서 뜨는 항목을 기준으로 누락을 하나씩 제거하는 접근을 반복한다.[^195]- 실행 행동:
flutter doctor결과를 캡처해두고, X/느낌표 항목을 환경변수/툴 설치로 체크리스트 처리한다.[^196]
- 실행 행동:
- Windows 경로(특히 한글 사용자명)와 권한은 Android SDK에서 치명적 변수가 된다: 커스텀 설치로 경로를 바꾸는 이유가 바로 여기에 있다.[^197]
- 실행 행동: 가능하면 Windows 사용자 폴더/SDK 경로를 영문 + 짧은 경로(D:\Android\Sdk 등) 로 통일한다.[^198]
- Flutter의 가치 제시는 “멀티 타깃을 동시에 붙여 빠르게 확인”에 있다: 크롬/에뮬레이터/실기기에서 동일 변경이 동시에 반영되는 시연이 설득 포인트다.[^199]
- 실행 행동: 세팅 후에는 바로 웹 + 에뮬레이터 + 실기기를 동시에 연결해 핫리로드 체감을 확보한다.[^200]
- 툴 UI는 오픈소스/초기 UX로 인해 함정이 있을 수 있다: Hidden 옵션 사례처럼, 한 번 숨기면 복구가 어렵다는 경험적 리스크가 제시된다.[^201]
- 실행 행동: 익숙하지 않은 UI 옵션(숨김/레이아웃 관련)은 스냅샷/설정 백업 없이는 건드리지 않는다.[^202]
- “앱 개발”을 수익화 가능한 콘텐츠 생산 활동으로 프레이밍한다: 블로그 글/쇼츠처럼 앱도 만들어 올리면 광고 수익이 가능하다는 동기 부여로 마무리한다.[^203]
- 실행 행동: 설치 완료 직후, 작은 샘플 앱이라도 스토어/배포 파이프라인을 목표로 다음 단계를 계획한다.[^204]
5. 헷갈리는 용어 정리[^205]
Flutter: 구글이 만든 크로스플랫폼 UI 프레임워크로, 여러 디바이스/타깃(웹, 에뮬레이터, 실기기 등)을 다룬다는 맥락에서 설명된다.[^206]
Dart: Flutter에서 사용하는 언어로, 화자는 “Dart는 언어, Flutter는 프레임워크”라고 구분한다.[^207]
환경변수(PATH): 시스템 전역에서 프로그램 경로를 등록해 커맨드 창 등 외부에서 명령을 실행할 수 있게 하는 설정이라고 설명한다.[^208]
ANDROID_HOME: Android SDK의 상위 경로를 가리키는 환경변수로, 에뮬레이터/툴이 SDK를 찾게 하기 위해 등록한다.[^209]
flutter doctor: 설치 상태를 점검하고 누락된 구성요소를 표시해 해결을 유도하는 진단 명령으로 소개된다.[^210]
Android SDK Command-line Tools: Android Studio의 SDK Tools에서 체크로 추가 설치하는 구성요소로, doctor 경고 해결에 사용된다.[^211]
에뮬레이터(Device/AVD): Android Studio Device Manager에서 만드는 가상 안드로이드 기기(Pixel 5 등)로, 앱 실행 테스트에 사용한다.[^212]
무선 디버깅(페어링): 갤럭시 등 실기기를 Wi‑Fi로 개발 PC와 연결하는 방식으로, QR/코드로 페어링한다고 설명한다.[^213]
Antigravity: 화자가 사용하는 개발 툴/편집기(확장 설치, 프로젝트 등록, 하단 디바이스 선택, 실행/디버그를 수행)로 등장한다.[^214]
참고(콘텐츠 정보)[^215]
- 제목: 구글 안티그래비티에서 쇼츠 만들듯, 가볍게 앱을 찍어내세요. Flutter 설치부터 시작 ~ #AI개발 #제미나이3 #안티그래비티 #에잇프로젝트[^216]
- 채널: AIT Project[^217]
- 길이: 25분 10초[^218]
- 링크: https://www.youtube.com/watch?v=1LhL_N9Bol0[^219]
[^3]: @[01:59] "여기다가 하나 추가할 거예요." / @[04:03] "플러터 버전을 치세요." / @[08:14] "플러터 닥터라는 부분이 있어요." / @[09:14] "안드로이드 홈" / @[10:18] "안드로이드 SK 커맨드 라인 툴스 체크" / @[11:25] "C++을 사용한 데스트 개발" / @[12:10] "계속 Y를 누르면 돼요." [^4]: @[05:47] "자 여기서 보면 문제이 장면이 나옵니다. ... 이게 진짜 중요한 부분" [^5]: @[06:02] "한글은 인식이 안 된다." [^6]: @[06:43] "두 번째는 D에다가 하셔라." / @[09:09] "STK를 ... 설정해 주는 거예요." [^7]: @[12:29] "자, 이제 에뮬레이터를 생성하러 갑니다." [^8]: @[12:45] "디바이스 매니저" / @[13:02] "픽셀 5로 갑니다." / @[15:18] "에뮬레이터 실행" [^9]: @[18:43] "아, 여기도 붙었죠?" / @[21:12] "세 개의 디바이스를 한꺼번에 작업할 수 있는 겁니다." [^10]: @[00:09] "요번에 설치 플래터 설치 부분을 좀 따로 했어요." [^11]: @[00:13] "일반인 분들도 쉽게 설치할 수 있게끔" [^12]: @[08:14] "플러터 닥터" / @[12:30] "디바이스 매니저" [^13]: @[10:39] "하나씩 잡아간다고 생각하시면 돼요." [^14]: @[06:02] "한글은 인식이 안 된다." / @[06:43] "D에다가 하셔라." [^15]: @[21:12] "세 개의 디바이스를 한꺼번에 작업" [^16]: @[00:40] "시작하겠습니다." [^17]: @[00:26] "너무 어렵게 생각하지 마세요." [^18]: @[00:01] "개발 20년차" / @[00:09] "설치 ... 따로" [^19]: @[00:30] "일반인 분들." [^20]: @[00:17] "영상 편집 ... 익히신 다음에 찍어내면 돼요." [^21]: @[00:36] "뭐 하나 걸리면 대박" [^22]: @[03:15] "어렵게 생각하지 마세요." [^23]: @[08:25] "설치가 안 된 것들은 X로 나타나죠." [^24]: @[00:44] "플러터 홈페이지" [^25]: @[00:44] "플러터 홈페이지" [^26]: @[00:53] "한국어로 ... 설치하세요" / @[00:57] "수동으로" [^27]: @[01:03] "플러터 윈도우" / @[01:05] "다운로드" [^28]: @[01:10] "사이즈가 커요." [^29]: @[01:25] "파일 부분만 컨트롤 C" [^30]: @[01:29] "일반인들이 하기 편하게" [^31]: @[01:34] "환경 설정을 할 거예요." [^32]: @[01:36] "환경 설정 시작" [^33]: @[01:45] "윈도우 버전마다 좀 차이" [^34]: @[01:36]~@[01:48] 환경변수 진입 설명 [^35]: @[01:48] "위에는 사용자 ... 밑에다 넣" [^36]: @[01:51] "패스" / @[02:02] "새로 만들게" [^37]: @[02:10] "플러터에 ... 빈까지" [^38]: @[02:18] "직접 ... 복사해서" [^39]: @[02:26] "환경 변수 ... 뭐냐면" [^40]: @[02:26]~@[02:54] 환경변수 의미 설명 [^41]: @[02:26] "윈도우라는 프로그램의 가장 상위" [^42]: @[02:44] "커맨드 창 ... 핸들링" [^43]: @[02:54] "자바 컴파일 ... 날코딩" / @[03:08] "여러 디바이스 ... 호환" [^44]: @[03:17] "그냥 한 번 등록하면 끝이다." [^45]: @[03:27] "안티 그래비티" / @[03:40] "익스텐션" / @[04:03] "파워쉘" [^46]: @[03:27] "프로젝트 폴더 ... 등록" [^47]: @[03:40] "확장팩 ... 설치" [^48]: @[03:51] "플래를 인스톨 ... 다트까지" [^49]: @[03:51] "다트는 랭기지 플레터는 프레머" [^50]: @[04:03] "플러터 버전을 치세요." [^51]: @[04:10] "환경본수 ... 먹어요" / @[04:24] "요렇게 나오면 성공" [^52]: @[04:28] "두 번째는 안드로이드 스튜디오" [^53]: @[04:28] "안드로이드 스튜디오" [^54]: @[04:32] "에뮬레이터" [^55]: @[04:41] "1.3GB" [^56]: @[04:51] "EX 파일" / @[05:00] "안드로이드 SK ... 조시라" [^57]: @[05:05] "C에 깔리고요." [^58]: @[05:14] "다음 스텝 ... 체크 ... 핀스" [^59]: @[05:25] "돈투 샌드 ... 각자" [^60]: @[05:47] "진짜 중요한 부분" [^61]: @[05:47] "우린 커스텀으로" [^62]: @[05:47] "디렉토리를 바꿔야" [^63]: @[05:53] "진짜 중요한 부분" [^64]: @[06:02] "한글은 인식이 안 된다." [^65]: @[05:53]~@[06:04] 사용자명/영문 요구 설명 [^66]: @[06:04] "영문으로 사용자명을 등록" [^67]: @[06:21]~@[06:32] "고생" "분석" [^68]: @[06:37] "권한 오류" [^69]: @[06:37]~@[06:43] "튕겨서 ... 완벽하게 다" [^70]: @[06:43] "D에다가 하셔라." [^71]: @[06:55]~@[07:01] "안드로이드 폴더 ... STK까지" [^72]: @[07:07] "세 개가 제일 중요한 거야." [^73]: @[07:07]~@[07:10] 구성요소 중요 강조 [^74]: @[07:16] "담배한 대고 오시면" [^75]: @[07:19]~@[07:29] New Project/안드로이드 기반 언급 [^76]: @[08:06] "체크 ... 잘 설치" [^77]: @[08:14] "플러터 닥터" [^78]: @[08:18] "치료" [^79]: @[08:25] "X로 나타나죠" [^80]: @[08:39] "환경 설정을 까먹네." [^81]: @[08:44]~@[08:49] "자동으로 되는 경우" [^82]: @[08:54] "환경 번수" / @[09:14] "안드로이드 홈" [^83]: @[09:04] "에뮬레이터를 컨트롤 ... 설정" [^84]: @[09:14] "안드로이드 홈" / @[09:21] "경로" [^85]: @[09:33] "세 개를 등록" [^86]: @[09:38] "플랫폼 툴" [^87]: @[09:38] "툴스" [^88]: @[09:38]~@[09:44] "빈까지 하나 더" [^89]: @[09:38] "어렵게 생각하지 마시고" [^90]: @[09:57] "방향키 ... 히스토리" [^91]: @[10:39] "하나씩 잡아간다고" [^92]: @[10:04] "CM라인 툴스" [^93]: @[10:04] "CM라인 툴스" [^94]: @[10:06] "안드로이드요 클릭" [^95]: @[10:15] "SDK 툴" [^96]: @[10:18] "커맨드 라인 툴스 체크" [^97]: @[10:31] "오래 안 걸릴" [^98]: @[10:38]~@[10:41] "하나씩 잡아간다" [^99]: @[10:48] "비주얼 스튜디오" [^100]: @[10:48]~@[11:05] "C++ ... 컴포넌트" [^101]: @[11:08] "URL ... 가시면" [^102]: @[11:08]~@[11:16] "커뮤니티 ... 다운로드" [^103]: @[11:25] "C++을 사용한 데스트 개발" [^104]: @[11:42] "깨끗해졌어요." [^105]: @[11:52] "라이센스 ... 느낌표" [^106]: @[11:57] "필수는 아니지만" [^107]: @[12:02] "런 ... 카피" [^108]: @[12:10] "계속 Y를 누르면" [^109]: @[12:20] "순차적으로 ... 따라오시면" [^110]: @[12:40] "툴스 ... 디바이스 매니저" [^111]: @[12:29] "에뮬레이터" [^112]: @[12:40]~@[12:45] Device Manager 경로 [^113]: @[12:48] "디폴트 ... 괜찮아요" [^114]: @[12:53]~@[12:59] "플러스 ... 크리에이트" [^115]: @[13:02] "픽셀 5" [^116]: @[13:05] "갤럭시는 없어요." [^117]: @[13:09]~@[13:18] 갤럭시/iOS 언급 [^118]: @[13:18]~@[13:24] Next/Finish [^119]: @[13:39]~@[13:42] "처음에는 ... 오래 ... 그다음부터" [^120]: @[13:51] "가상 기기 ... 안드로이드 폰" [^121]: @[14:19]~@[14:51] SDK 경로 지정 필요 설명 [^122]: @[13:54] "기본적으로 프로젝트 ... 만들어 줘요" [^123]: @[14:03] "저번에는 ... AI" / @[14:03]~@[14:11] 테스트 언급 [^124]: @[14:27] "로컬해서 SK를 불러오겠냐" [^125]: @[14:40] "CMD대에서 쓰려고" [^126]: @[14:46] "vs 코드에서 SK ... 잡기" [^127]: @[14:51] "반드시 이걸 해 줘야 됩니다." [^128]: @[14:59] "빈까지 해 주시면" [^129]: @[15:11] "자동으로 제너레이터" [^130]: @[15:14] "실행" / @[15:18] "에뮬레이터" [^131]: @[15:18] "노 디바이스" [^132]: @[15:23] "클릭하시면 ... 디바이스" [^133]: @[15:34] "항시 먼저 띄워야 돼요." [^134]: @[15:59] "연결돼 있는 상태" [^135]: @[16:13]~@[16:49] 크롬 실행 시연 [^136]: @[16:13] "크롬으로" [^137]: @[16:19] "런" [^138]: @[16:30] "무시하셔도 됩니다." [^139]: @[16:45] "포트는 ... 랜덤" [^140]: @[16:59]~@[17:06] 플러스/반응 언급 [^141]: @[17:12]~@[17:46] 픽셀 실행 및 main.dart [^142]: @[17:12] "픽셀이죠 ... 연결" [^143]: @[17:25]~@[17:38] "뜹니다" "떴습니다" [^144]: @[17:42]~@[17:49] "lib ... 메인 다트" [^145]: @[17:53]~@[17:57] "실행 버튼이 하나 더" [^146]: @[18:01]~@[18:52] 멀티 세션/동시 반영 [^147]: @[18:01] "크롬으로" [^148]: @[18:12]~@[18:17] "디버그 세선" [^149]: @[18:17] "멀티커넥션" / @[18:22] "패러럴" [^150]: @[18:22] "플러터는 ... 다트는 크롬" [^151]: @[18:41]~@[18:52] "컨트롤 S ... 두 개 다" [^152]: @[19:01]~@[20:24] 개발자 옵션/무선 디버깅/디바이스 증가 [^153]: @[19:01] "갤럭시 핸드폰" [^154]: @[19:04] "개발자 옵션" [^155]: @[19:06] "휴대전화 정보" [^156]: @[19:09] "소프트웨어 정보" [^157]: @[19:16] "일곱 번 터치" [^158]: @[19:28] "개발자 옵션" [^159]: @[19:33]~@[19:43] "무선 디버... qr코드" [^160]: @[19:53]~@[19:57] "QR코드 페어링 ... 붙었어요" [^161]: @[20:04]~@[20:10] "6402 ... 한번 해 보세요" [^162]: @[20:12] "삭제하시고" [^163]: @[20:21]~@[20:33] "다섯 개 ... SM 디바이스" [^164]: @[20:44]~@[21:12] 멀티 디바이스 동시 반영 [^165]: @[20:33]~@[20:46] "크롬이 죽고 ..." / "계속 붙네요" [^166]: @[20:46]~@[20:49] "다 연결돼" [^167]: @[20:49] "무선이 훨씬 빠른데요" [^168]: @[21:00]~@[21:05] "싹 바뀌었습니다" [^169]: @[21:12] "한꺼번에 작업" [^170]: @[21:26]~@[21:31] "처음에는 ... 다 꽂아야" [^171]: @[21:26] "무조건 ... 다 꽂아야" [^172]: @[21:26]~@[21:31] "APK ... 끄고 ... 와이파이" [^173]: @[21:41]~@[22:35] Hidden 함정 설명 [^174]: @[21:36] "마지막으로 중요한 부분" [^175]: @[21:46] "몇 개가 ... 사라져" [^176]: @[21:57] "캡처 ... 원래는" [^177]: @[22:06]~@[22:14] "하이드 ... 체크 ... 사라졌어요" [^178]: @[22:14] "복원이 안 돼요." [^179]: @[22:27]~@[22:31] "히든 ... 하지 마세요" [^180]: @[22:35]~@[22:43] "오픈 소스 ... 체크" [^181]: @[22:43]~@[22:51] "대중적으로 ... 추가" [^182]: @[22:35] "탑바가 없어지고 복원이 안 돼요." [^183]: @[23:11]~@[23:19] "노 컨피규 ... 디바이스" [^184]: @[23:00] "말씀드린 것처럼" [^185]: @[23:11] "노 컨피규 ... 셀렉트" [^186]: @[23:19] "저게 더 편한 거야." [^187]: @[23:28]~@[23:31] "녹화 때문에 ... 양해" [^188]: @[23:41]~@[24:54] 다음 영상/마무리 [^189]: @[23:41] "가이드했던 부분은 영상으로" [^190]: @[23:50] "앱 만드는 거" [^191]: @[24:01] "저도 힘들었습니다" / @[24:10] "새로운 ... 즐겁" [^192]: @[24:14]~@[24:23] "광고 수익 ... 앱으로 ... 광고 붙어" [^193]: @[24:44]~@[24:50] "친숙해져요 ... 도전" [^194]: @[24:28] "쉽게 만들어서 올리시면 돼요." [^195]: @[10:39] "하나씩 잡아간다" [^196]: @[08:25] "X로 나타나죠" [^197]: @[06:02] "한글 ... 인식" / @[06:37] "권한 오류" [^198]: @[06:43] "D에다가" / @[07:01] "SDK까지" [^199]: @[21:12] "한꺼번에 작업" [^200]: @[18:52] "두 개 다 먹고 있어요" / @[21:05] "싹 바뀌었습니다" [^201]: @[22:14] "복원이 안 돼요." [^202]: @[22:27] "히든 ... 하지 마세요" [^203]: @[24:14]~@[24:23] 수익화 언급 [^204]: @[24:37] "한번 해 보세요" [^205]: @[03:51] "다트는 ... 플레터는" [^206]: @[03:08] "여러 디바이스 ... 핸들링" [^207]: @[03:51] "다트는 랭기지" [^208]: @[02:44] "커맨드 창 ... 핸들링" [^209]: @[09:14] "안드로이드 홈" [^210]: @[08:14] "플러터 닥터" [^211]: @[10:18] "커맨드 라인 툴스" [^212]: @[12:45] "디바이스 매니저" [^213]: @[19:33] "무선 디버" / @[19:43] "페어링 코드" [^214]: @[03:40] "익스텐션" / @[15:18] "노 디바이스" [^215]: @[00:09] "설치 ... 따로" [^216]: 사용자 제공 메타데이터(제목) [^217]: 사용자 제공 메타데이터(채널) [^218]: 사용자 제공 메타데이터(길이) [^219]: 사용자 제공 메타데이터(링크)