App Store나 Google Play에 Flutter 앱을 게시하는 단계는 무엇인가요?
Flutter 앱을 App Store(iOS)와 Google Play(Android)에 게시하는 과정은 각 플랫폼별로 특정 요구사항과 단계가 있습니다. 아래에서 두 플랫폼에 Flutter 앱을 게시하는 전체 과정을 단계별로 설명하겠습니다.
1. 게시 준비 공통 단계
1.1 앱 최종 점검
# 의존성 업데이트 및 정리
flutter pub get
flutter pub upgrade
# 코드 분석
flutter analyze
# 테스트 수행
flutter test
# 성능 점검 (프로파일 모드로 테스트)
flutter run --profile
1.2 앱 버전 설정
pubspec.yaml
파일에서 앱 버전을 업데이트합니다:
version: 1.0.0+1 # <버전 이름>+<버전 코드>
- 버전 이름(1.0.0): 사용자에게 표시되는 버전
- 버전 코드(1): 내부적으로 사용되는 빌드 번호 (릴리스마다 증가)
2. Google Play(Android)에 앱 게시하기
2.1 앱 서명 설정
2.1.1 키스토어 생성
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
2.1.2 키 속성 파일 생성
android/key.properties
파일을 생성:
storePassword=<비밀번호>
keyPassword=<비밀번호>
keyAlias=key
storeFile=<키스토어 경로, 예: /Users/username/key.jks>
2.1.3 앱 Gradle 파일 구성
android/app/build.gradle
파일 수정:
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
// ...
defaultConfig {
// ...
minSdkVersion 21 // 또는 필요한 최소 버전
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
// 선택 사항: 코드 난독화 및 최적화
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
2.2 앱 아이콘 및 스플래시 설정
android/app/src/main/res/
디렉토리에 적절한 해상도의 아이콘과 스플래시 이미지 추가
2.3 앱 메타데이터 설정
android/app/src/main/AndroidManifest.xml
파일에서 메타데이터 확인:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<!-- 필요한 권한 -->
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:label="앱 이름"
android:icon="@mipmap/ic_launcher">
<!-- 애플리케이션 설정 -->
</application>
</manifest>
2.4 AAB(Android App Bundle) 빌드
flutter build appbundle
생성된 파일 위치: build/app/outputs/bundle/release/app-release.aab
2.5 Google Play Console에 앱 등록
- Google Play Console에 로그인
- '앱 만들기' 클릭
- 앱 정보 입력 (앱 이름, 기본 언어, 앱 유형)
- 무료 앱 또는 유료 앱 선택
- 개인정보 처리방침 URL 제공
2.6 앱 콘텐츠 설정
Google Play Console에서:
- 앱 설정 > 앱 카테고리 및 콘텐츠 등급 설정
- 설문지 작성하여 콘텐츠 등급 받기
- 대상 연령층 지정
2.7 스토어 등록정보 작성
다음 정보를 준비하고 입력:
- 스토어 등록정보(앱 이름, 간단한 설명, 자세한 설명)
- 그래픽 자산(아이콘, 기능 그래픽, 스크린샷)
- 언어별 번역된 설명
- 연락처 정보(이메일, 웹사이트)
2.8 AAB 업로드 및 출시
- '앱 번들 및 APK' 섹션에서 AAB 파일 업로드
- 업로드된 앱 버전 확인
- 테스트 트랙 선택(내부 테스트, 비공개 테스트, 공개 테스트)
- 또는 즉시 프로덕션으로 출시
2.9 출시 검토 및 승인
- 앱 검토 과정은 일반적으로 몇 시간에서 며칠 소요
- 거부된 경우 수정 후 재제출
- 승인 후 Google Play 스토어에 앱 게시
3. App Store(iOS)에 앱 게시하기
3.1 애플 개발자 계정 설정
- Apple Developer Program에 등록(연회비 $99)
- 계정 설정 및 팀 구성
3.2 앱 ID 및 인증서 설정
3.2.1 App ID 생성
- Apple Developer Portal에 로그인
- Certificates, IDs & Profiles > Identifiers > +버튼 클릭
- App ID 유형 선택 및 앱 정보 입력
- 번들 ID 설정(com.example.app)
- 필요한 기능(푸시 알림, 인앱 결제 등) 활성화
3.2.2 인증서 생성
- Certificates > +버튼 클릭
- App Store and Ad Hoc 또는 iOS Distribution 인증서 생성
- 로컬 Mac에서 CSR 파일 생성 후 업로드
- 인증서 다운로드 및 Keychain Access에 추가
3.2.3 프로비저닝 프로파일 생성
- Profiles > +버튼 클릭
- App Store 배포 프로파일 선택
- 앞서 생성한 App ID 선택
- 인증서 선택
- 프로파일 생성 및 다운로드
3.3 Xcode 설정
3.3.1 Xcode 구성
- Xcode 열기(Visual Studio Code나 Android Studio에서 Xcode 열기 가능)
- Runner.xcworkspace 파일 열기
- 프로젝트 설정에서 팀 선택
- 번들 식별자 설정(App ID의 번들 ID와 일치해야 함)
3.3.2 앱 설정 구성
Xcode에서:
- General 탭: 버전, 빌드 번호, 타겟 설정
- Signing & Capabilities: 자동 서명 또는 수동 서명 설정
- Info 탭: 앱 이름, URL 체계, 필요한 권한 설정
3.3.3 앱 아이콘 및 시작 화면 설정
ios/Runner/Assets.xcassets
에서 앱 아이콘 및 시작 화면 이미지를 Xcode 요구사항에 맞게 추가
3.4 iOS 앱 빌드
# 우선 Flutter 앱을 iOS 용으로 빌드
flutter build ios --release
# 또는 Xcode에서 빌드
open ios/Runner.xcworkspace
Xcode에서:
- 앱 빌드 설정 확인(Product > Scheme > Edit Scheme)
- 릴리즈 구성 선택
- Product > Archive로 앱 아카이브 생성
3.5 App Store Connect에 앱 설정
- App Store Connect 로그인
- '앱' 섹션에서 '+' 버튼 클릭
- 다음 정보 제공:
- 플랫폼 선택(iOS)
- 앱 이름
- 기본 언어
- 번들 ID (Apple Developer Portal에서 생성한 것과 일치)
- SKU (고유 식별자)
- 사용자 접근 정보(Full Access 또는 제한된 접근)
3.6 앱 정보 작성
App Store Connect에서:
- 앱 정보 탭: 연령 등급, 카테고리, 개인정보 처리방침 URL
- 가격 및 가용성 설정
- 앱 스토어 정보:
- 설명
- 키워드
- 지원 URL
- 마케팅 URL
- 스크린샷(다양한 디바이스용)
- 홍보 텍스트
3.7 Xcode에서 App Store에 제출
- Xcode의 Organizer에서 생성한 아카이브 선택
- "Distribute App" 클릭
- "App Store Connect" 선택
- 배포 옵션 선택(자동 관리 또는 수동 관리)
- 업로드 완료 대기
3.8 App Store Connect에서 출시 준비
- 업로드된 빌드가 처리되는 동안 대기(최대 1시간)
- 처리 완료 후 '버전 정보' 탭에서 빌드 선택
- 앱 심사 정보 제공:
- 연락처 정보
- 심사 참고 사항(계정 정보, 특별 지침 등)
- 다음이 필요한지 여부:
- 앱 내 구매 확인을 위한 데모 계정
- 첨부 파일(데모 영상 등)
3.9 심사를 위한 앱 제출
- "심사를 위해 제출" 버튼 클릭
- 모든 정보가 올바른지 확인
- 제출 후 심사 대기
3.10 심사 및 출시
- 심사 과정은 일반적으로 24시간~몇 일 소요
- 거부된 경우 문제 수정 후 재제출
- 심사 승인 후 수동 또는 자동 출시 설정에 따라 출시
4. 출시 후 모니터링 및 업데이트
4.1 앱 성능 모니터링
# pubspec.yaml에 모니터링 도구 추가
dependencies:
firebase_crashlytics: ^3.3.5
firebase_analytics: ^10.4.5
4.2 사용자 피드백 수집
앱에 피드백 메커니즘 추가:
- 인앱 피드백 폼
- 이메일 지원 버튼
- 리뷰 및 평점 요청 다이얼로그
4.3 업데이트 배포
앱 업데이트가 필요할 때:
- 코드 수정 및 테스트
- 버전 번호 증가(
pubspec.yaml
파일) - 각 플랫폼별 빌드 및 제출 절차 반복
- 출시 노트 작성
- 사용자에게 변경 사항 알림
요약: 게시 체크리스트
Android (Google Play)
- 앱 버전 및 코드 최종 검토
- 키스토어 설정 및 서명 구성
- AAB 빌드
- Google Play Console에 앱 등록
- 스토어 항목(설명, 이미지 등) 작성
- AAB 업로드
- 테스트 또는 프로덕션 출시
- 검토 및 승인 대기
iOS (App Store)
- 애플 개발자 계정 준비
- 앱 ID, 인증서, 프로비저닝 프로파일 생성
- Xcode 프로젝트 설정
- 앱 빌드 및 아카이빙
- App Store Connect에 앱 설정
- 앱 정보 및 스크린샷 작성
- 빌드 업로드
- 심사 정보 제공 및 제출
- 심사 및 출시
이러한 단계들을 따라 Flutter 앱을 성공적으로 양대 앱 스토어에 출시할 수 있습니다. 각 플랫폼의 정책과 요구사항은 시간에 따라 변경될 수 있으므로, 출시 전 최신 가이드라인을 확인하는 것이 중요합니다.