Expo의 prebuild와 eas build는 앱을 빌드하는 과정에서 서로 다른 역할을 수행하는 중요한 개념입니다. 핵심적인 차이점을 설명해 드릴게요.
expo prebuild
- 네이티브 코드 생성 및 설정: expo prebuild는 로컬 개발 환경에서 실행되는 Expo CLI 명령어입니다. 이 명령어는 여러분의 JavaScript/TypeScript 코드를 기반으로 iOS (ios)와 Android (android) 폴더에 네이티브 프로젝트 코드를 생성하고 필요한 설정 파일들을 구성합니다.
- app.json/app.config.js 기반 설정: prebuild는 여러분의 Expo 설정 파일(app.json 또는 app.config.js)에 정의된 앱 이름, 번들 식별자, 아이콘, 스플래시 화면, 사용하는 플러그인 등의 정보를 읽어와 네이티브 프로젝트에 반영합니다.
- 네이티브 모듈 연결 (Autolinking): 프로젝트에서 사용하는 써드파티 네이티브 모듈들을 자동으로 네이티브 프로젝트에 연결해주는 역할을 합니다.
- 버전 관리 용이성: prebuild를 통해 생성된 네이티브 코드는 버전 관리 시스템(Git 등)으로 관리할 수 있습니다.
- 빌드 준비 단계: prebuild는 실제 앱 빌드 전에 필요한 준비 단계입니다. 이 단계를 거치면 Xcode와 Android Studio를 사용하여 로컬에서 네이티브 빌드를 진행하거나, EAS Build와 같은 클라우드 빌드 서비스를 이용하여 빌드할 수 있는 기반이 마련됩니다.
- 한 번 또는 필요할 때 실행: 일반적으로 프로젝트를 처음 설정하거나 네이티브 관련 설정(app.json 변경, 네이티브 모듈 추가 등)이 변경되었을 때 실행합니다.
eas build
- 클라우드 기반 앱 빌드 서비스: eas build는 Expo Application Services (EAS)에서 제공하는 클라우드 기반의 앱 빌드 서비스입니다. 여러분의 코드를 Expo의 클라우드 서버로 보내 iOS (IPA) 및 Android (APK 또는 AAB) 앱 바이너리를 생성해 줍니다.
- 자동화된 빌드 프로세스: EAS Build는 인증서 관리, 프로비저닝 프로파일 설정, 빌드 환경 구성 등 복잡한 네이티브 빌드 과정을 자동화하여 개발자가 더 쉽게 앱을 빌드하고 배포할 수 있도록 돕습니다.
- 로컬 환경 부담 감소: 로컬 컴퓨터에 Xcode나 Android Studio와 같은 네이티브 개발 도구를 설치하고 설정할 필요 없이 클라우드에서 빌드를 진행할 수 있습니다.
- 다양한 빌드 프로파일 지원: 개발, 프리뷰, 프로덕션 등 다양한 환경에 맞는 빌드 설정을 관리할 수 있습니다.
- 빌드 상태 및 로그 관리: EAS 대시보드를 통해 빌드 진행 상황을 실시간으로 확인하고 빌드 로그를 쉽게 관리할 수 있습니다.
- OTA 업데이트 연동: EAS Update 서비스와 연동하여 앱 스토어 심사 없이 앱 업데이트를 사용자에게 배포할 수 있습니다.
- eas.json 설정 파일: EAS Build는 프로젝트 루트 디렉터리에 있는 eas.json 파일을 통해 빌드 설정을 관리합니다. 플랫폼, 빌드 프로파일, 환경 변수 등을 정의할 수 있습니다.
차이점 요약
| 기능 | expo prebuild | eas build |
|---|
| 실행위치 | 로컬 개발 환경 | Expo 클라우드 서버 |
| 주요역할 | 네이티브 프로젝트 코드 생성 및 설정, 네이티브 모듈 연결 | iOS/Android 앱 바이너리 생성(클라우드 빌드) |
| 실행시점 | 프로젝트 초기 설정 또는 네이티브 설정 변경 시 | 앱 배포를 위한 실제 빌드 시 |
| 필요조건 | Expo CLI 설치 | Expo 계정 및 EAS CLI 설치, eas.json 설정 파일 |
| 결과물 | ios, android 폴더(네이티브 프로젝트 코드) | IPA(iOS), APK/AAB(Android) 앱 바이너리 파일 |
| 자동화 수준 | 상대적으로 낮음(로컬에서 수동으로 실행) | 높음 (클라우드에서 자동화된 빌드 프로세스 제공) |
일반적인 워크플로우
- 프로젝트 생성 후 필요한 경우 npx expo prebuild를 실행하여 네이티브 프로젝트 코드를 생성 및 설정합니다.
- eas.json 파일을 설정하여 EAS Build 구성을 정의합니다.
- npx eas build -p android 또는 npx eas build -p ios 명령어를 사용하여 클라우드에서 앱 바이너리를 빌드합니다.
이처럼 prebuild는 앱 빌드를 위한 기반을 마련하는 단계이고, eas build는 이 기반을 바탕으로 실제로 앱 바이너리를 만들어내는 단계라고 이해하시면 됩니다.