BurningTimesAi/프로젝트/신규 프로젝트/개발/05_빌드_배포.md

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건 체크리스트 반영