5.2 KiB
5.2 KiB
{프로젝트명} — 빌드 및 배포
버전: v1 작성일: {날짜} 담당: 개발팀장 적용 범위: {프로젝트명} 빌드·배포 전 과정
1. 플랫폼별 빌드 설정
1.1 Android
| 항목 | 값 |
|---|---|
| Scripting Backend | IL2CPP |
| Target Architecture | ARM64 (필수), ARMv7 (선택 — 구형 기기 지원 시) |
| Minimum API Level | Android 7.0 (API 24) 이상 권장 |
| Target API Level | 최신 API (Play Store 정책 준수) |
| Internet Access | Require |
| Custom Main Gradle Template | 서드파티 요구 시 활성화 |
| Split APK / AAB | 배포: AAB (Play Store), QA: APK |
빌드 전 체크:
- KeyStore 파일 경로·비밀번호 확인 (릴리스 빌드)
AndroidManifest.xml권한 최소화 검토- ANR·크래시 없음 (에뮬레이터 + 실기기 모두)
1.2 iOS
| 항목 | 값 |
|---|---|
| Scripting Backend | IL2CPP |
| Target SDK | Device SDK (배포), Simulator SDK (에뮬레이터 테스트) |
| Minimum iOS Version | 14.0 이상 권장 |
| Signing | Xcode Automatic Signing (Provisioning Profile) |
빌드 전 체크:
- Apple 개발자 인증서·Provisioning Profile 유효기간 확인
Info.plist권한 설명(NSPhotoLibraryUsageDescription 등) 입력- TestFlight 업로드 전 크래시 없음 확인
1.3 Windows (Editor/Standalone)
| 항목 | 값 |
|---|---|
| 용도 | 개발 에디터 + Windows Standalone QA |
| Architecture | x86_64 |
| Scripting Backend | Mono (Editor), IL2CPP (Standalone 배포 시) |
2. 빌드 변형(Build Variant)
| 변형 | 로그 레벨 | 치트 | 용도 | 컴파일 심볼 |
|---|---|---|---|---|
| Dev | 전체 (Info+Warn+Error) | 활성 | 개발 중 디버깅 | DEVELOPMENT_BUILD, ENABLE_CHEATS |
| QA | 일부 (Warn+Error) | 활성 | QA 배포, 버그 재현 | QA_BUILD, ENABLE_CHEATS |
| Release | 최소 (Error만) | 비활성 | 스토어 제출 | (없음, 기본) |
컴파일 심볼 활용 예시:
#if ENABLE_CHEATS
// 치트 메뉴, 수동 데이터 조작 코드
#endif
#if DEVELOPMENT_BUILD || UNITY_EDITOR
// 개발/에디터 전용 검증 코드
DataValidator.ValidateAll();
#endif
컴파일 심볼 관리:
- Player Settings > Other Settings > Scripting Define Symbols에서 설정
- NerdNavis.Framework의
NerdNavis.Editor.Symbols도구를 활용하여 변형별 심볼 일괄 전환
3. 버전 관리
버전 체계: Major.Minor.Patch (Semantic Versioning)
| 구성 | 변경 기준 |
|---|---|
| Major | 하위 호환 불가한 대규모 변경, 새 게임 모드 추가 등 |
| Minor | 새 기능 추가, 컨텐츠 업데이트 |
| Patch | 버그 수정, 밸런스 조정 |
빌드 넘버: 각 빌드마다 자동 증가 (CI/CD 또는 Editor 스크립트로 자동화)
// NerdNavis.Editor.Build 도구 연동 또는 직접 구현
// PlayerSettings.bundleVersion = "1.2.3"
// PlayerSettings.Android.bundleVersionCode = 123 (Major*10000 + Minor*100 + Patch 권장)
스토어 정책:
- Android:
bundleVersionCode는 항상 단조 증가 (롤백 불가) - iOS:
Build Number항상 단조 증가
4. 배포 파이프라인
[개발팀] 빌드 생성
│
▼
코드 서명 (KeyStore / Apple Certificate)
│
▼
업로드
├── Dev/QA → Firebase App Distribution / TestFlight / 사내 공유
└── Release → Google Play Console / App Store Connect
│
▼
배포 완료 → 공유/일일보고 or PD 지시 로그 기록 (C13·P19)
자동화 목표:
- 빌드 트리거: Git 태그 push 또는 수동 트리거
- 업로드 자동화:
{선택 예: fastlane / GitHub Actions / Jenkins} - 배포 알림: 팀 내 채널 공유
5. 스토어 제출 체크리스트
5.1 공통 (Android / iOS 공통)
- Release 빌드 변형 으로 빌드 (ENABLE_CHEATS 없음 확인)
- 빌드 번호 이전 버전보다 증가했는지 확인
- 콘솔 에러 없음 (P14: Unity 콘솔 에러 잔존 상태 배포 금지)
- 크래시 없음 (실기기 최소 1대 이상 검증)
- IAP 영수증 서버 검증 정상 동작 확인 (수상한잡화점 Critical 교훈)
- AES 키 하드코딩 없음 확인 (소스 검색:
02_기술스택_결정 섹션 3.2 참조) - 개발용 씬(
9x_Tool_*) Build Settings에서 제외 확인 - 권한 요청 최소화 및 사유 명시 (
Info.plist/AndroidManifest.xml) - 개인정보처리방침 URL 스토어 등록 완료
5.2 Android 추가
- AAB 포맷 제출 (APK 아님)
- Target API Level Play Store 현행 정책 충족
- 64-bit 지원 (ARM64 포함 빌드)
5.3 iOS 추가
- TestFlight 에서 베타 검증 완료
- Provisioning Profile 유효기간 충분히 남음
- 앱 심사 노트 작성 (특수 기능 있는 경우)
변경 이력
| 버전 | 일자 | 작성자 | 내용 |
|---|---|---|---|
| v1 | {날짜} | 개발팀장 | 템플릿 초안. 수상한잡화점 Critical 3건 체크리스트 반영 |