Flutter로 6주 만에 앱 두 개 냈다
앱 만들어보고 싶었다.
문제는 네이티브 개발을 몰랐다. Swift도 모르고 Kotlin도 모른다. 둘 다 배우려면 시간이 너무 오래 걸릴 것 같았다.
Flutter 쓰면 하나 만들어서 iOS, 안드로이드 둘 다 나온다길래 해봤다. 6주 만에 두 플랫폼 다 출시했다.
Dart 배우기 #
Flutter는 Dart라는 언어를 쓴다.
처음엔 "또 새 언어 배워야 하나" 싶었다. 근데 JavaScript 알면 하루면 적응된다. 문법이 비슷해서.
// Dart
void main() {
var name = 'Flutter';
print('Hello, $name!');
}
// JavaScript
function main() {
const name = 'Flutter';
console.log(`Hello, ${name}!`);
}
거의 똑같다. 타입 시스템이 있어서 TypeScript 써봤으면 더 익숙할 거다.
Dart 특징:
- 타입 있음 (var 쓰면 추론)
- 세미콜론 필수
- 클래스 기반
- async/await 지원
- null safety
새로 배워야 하는 건 위젯 시스템 정도. Dart 문법 자체는 금방 익숙해짐.
1주차: 환경 설정 + 튜토리얼 #
Flutter 설치는 좀 귀찮았다. 특히 iOS 개발하려면 Xcode 설치해야 하는데 40GB 넘는다. 다운로드만 1시간.
설치 후 flutter doctor 치면 뭐가 안 됐는지 알려준다.
$ flutter doctor
Doctor summary:
[✓] Flutter
[✓] Android toolchain
[✓] Xcode
[!] Chrome - not installed # 웹 개발용
[✓] Android Studio
[✓] VS Code
공식 문서가 잘 되어 있다. 유튜브 안 봐도 됨. docs.flutter.dev 가서 "Get started" 따라하면 기본은 끝.
첫 주에 한 것:
- 환경 설정
- 공식 튜토리얼 따라하기
- 간단한 카운터 앱 만들어보기
- 위젯 개념 이해
2-4주차: 개발 #
위젯이 핵심이다.
Flutter에서는 모든 게 위젯이다. 텍스트도 위젯, 버튼도 위젯, 패딩도 위젯, 레이아웃도 위젯.
// 간단한 화면 구성
Scaffold(
appBar: AppBar(
title: Text('내 앱'),
),
body: Center(
child: Column(
children: [
Text('안녕하세요'),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {},
child: Text('버튼'),
),
],
),
),
)
처음엔 중첩이 많아서 헷갈리는데, 며칠 하다 보면 익숙해진다.
핫 리로드가 진짜 좋다. 저장하면 바로 반영된다. 앱 껐다 켜지 않아도 됨. 개발 속도가 확 빨라진다.
# 코드 수정 → 저장 → 앱에 바로 반영 (1초 이내)
웹 개발할 때 핫 리로드 쓰다가 네이티브 개발하면 답답하다던데, Flutter는 그런 문제 없음.
2-4주차에 한 것:
- 주요 화면 구현 (5개 화면)
- 상태 관리 (Provider 사용)
- 로컬 저장소 (shared_preferences)
- API 연동
5주차: 테스트 #
에뮬레이터에서 잘 되던 게 실기기에서 안 되는 경우가 있다.
아이폰 SE에서 레이아웃 깨진 거 고치느라 이틀 썼다. 화면 작은 기기에서 overflow 에러 난다. SafeArea 안 감싸서 노치 부분 가려진 것도 있었고.
다양한 기기에서 테스트해야 한다:
- 화면 큰 기기 (아이폰 Pro Max, 갤럭시 Ultra)
- 화면 작은 기기 (아이폰 SE, 갤럭시 A 시리즈)
- 노치/펀치홀 있는 기기
- 폴더블 (선택)
실기기가 없으면 에뮬레이터에서 여러 기기 테스트해볼 수 있다. 완벽하진 않지만 대부분 문제는 잡힘.
6주차: 출시 #
구글 플레이는 빨랐다.
개발자 등록비 $25 (일회성). 심사 신청하고 하루 만에 승인.
# 안드로이드 빌드
flutter build appbundle
# .aab 파일 생성됨 → Play Console에 업로드
앱스토어는 오래 걸렸다.
개발자 등록비 $99/년. 심사도 까다로움. 처음에 리젝당했다.
리젝 사유: 로그인 기능 있는데 계정 삭제 기능이 없다.
2022년부터 앱스토어 규정 바뀌어서 계정 삭제 기능 필수다. 몰랐음. 계정 삭제 기능 추가하고 다시 제출. 이틀 뒤 승인.
# iOS 빌드
flutter build ios
# Xcode에서 Archive → App Store Connect 업로드
결과 #
출시 한 달 후 수치:
- iOS 다운로드: 120명
- 안드로이드 다운로드: 250명
- 총: 370명
대박은 아닌데, 웹 개발자가 6주 만에 양쪽 스토어에 앱 올린 거면 괜찮다고 본다.
Flutter 장점:
- 하나로 둘 다: 코드 한 번 쓰면 iOS, 안드로이드 다 됨
- 빠른 개발: 핫 리로드, 위젯 조합
- 풍부한 패키지: pub.dev에 패키지 많음
- 네이티브 성능: 웹뷰 아니라서 꽤 빠름
Flutter 단점:
- 앱 용량: Hello World가 15MB. 네이티브보다 큼
- 플랫폼 특화 기능: 네이티브 코드 건드려야 할 때 있음
- 업데이트: Flutter 버전 올릴 때 breaking change 있으면 귀찮음
추천 학습 경로 #
- Dart 기초 (1일): 공식 문서로 충분
- Flutter 튜토리얼 (2-3일): docs.flutter.dev
- 간단한 앱 만들기 (1주): Todo, 메모장 같은 거
- 상태 관리 배우기 (2-3일): Provider나 Riverpod
- 실제 프로젝트 (2-4주)
자료:
- 공식 문서: docs.flutter.dev
- Flutter 유튜브 채널: 짧은 위젯 소개 영상 많음
- pub.dev: 패키지 찾기
네이티브 개발 공부하기 겁났는데, Flutter로 진입장벽 많이 낮아졌다. 앱 출시해보고 싶은 웹 개발자한테 추천.
- Previous: 앱스토어 검색 최적화
- Next: 도메인 사고 HTTPS 붙이기