# 15. Android Client And Parallel Release Strategy

## 문서 목적

이 문서는 Android 채널을 왜, 어떤 순서로, 어떤 톤으로 도입하는지 정리한다. 목표는 단순히 APK 하나를 더 만드는 것이 아니라, 같은 제품이 Windows와 Android에서 같은 버전 기준으로 배포되고 설명되도록 만드는 것이다.

## 왜 Android를 병렬 채널로 두는가

이 프로젝트의 중심은 여전히 `한국어 Windows 메신저 경험`이다. 다만 실제 커뮤니케이션 제품은 사용자가 책상 앞과 이동 중을 오갈 때 끊기지 않아야 한다. Android 채널은 이 연속성을 위해 필요하다.

이때 중요한 것은 `새 모바일 제품을 별도로 만든다`가 아니라, `같은 버전과 같은 서버 계약을 공유하는 두 번째 클라이언트 채널을 연다`는 관점이다.

즉:

- Windows는 깊이 있는 데스크톱 생산성 채널
- Android는 빠른 확인과 즉답을 위한 병렬 채널
- 두 채널은 같은 계정, 같은 대화, 같은 릴리즈 노트를 공유

## 도입 원칙

- Android는 Windows를 대체하는 채널이 아니다.
- 같은 버전 번호 아래에 함께 게시한다.
- 같은 `REST + WebSocket` 계약을 공유한다.
- 모바일 전용 과장 기능보다 `로그인`, `대화 확인`, `즉답`의 기본 루프를 먼저 만든다.
- 원격 저장소와 다운로드 호스트 모두에서 같은 버전 자산을 찾을 수 있어야 한다.

## 기술 전략

초기 단계에서는 `새 네이티브 스택을 완전히 벌리기보다`, `Avalonia + net8.0-android` 기반 병렬 채널을 여는 쪽이 현실적이다.

이유:

- 현재 저장소의 계약/세션/API 흐름을 재사용하기 쉽다.
- 릴리즈 버전과 문서, QA 기준을 한 묶음으로 유지하기 쉽다.
- Kotlin/Compose를 즉시 도입하면 제품보다 파이프라인 분리가 먼저 커진다.

장기적으로 Android 사용량과 요구가 커지면, 그때 별도 네이티브 투자 여부를 다시 판단한다.

## 초기 Android 범위

### 포함

- 서버 주소 입력
- 이름 + 초대코드 가입
- 대화 목록 조회
- 대화방 진입
- 텍스트 메시지 송신
- 기본 수동 새로고침 또는 단순 실시간 반영
- signed APK 생성

### 제외

- 고도화된 파일 공유 UX
- 카메라/갤러리 심화 연동
- Play 스토어 배포
- 복잡한 백그라운드 동기화
- 모바일 전용 디자인 실험

## 릴리즈 원칙

하나의 태그는 하나의 릴리즈를 뜻한다.

예:

- `v0.2.0-alpha.1`
  - Windows zip
  - Android apk
  - 공통 릴리즈 노트
  - 공통 `version.json`

이 구조의 장점:

- 사용자는 어떤 OS를 쓰더라도 같은 버전 기준으로 설명을 읽는다.
- 운영자는 원격 Releases와 다운로드 미러를 같은 기준으로 검증할 수 있다.
- QA는 Windows와 Android를 같은 마일스톤 아래에서 비교할 수 있다.

## 다운로드 채널 구조

최신 진입 경로:

- `https://download-vstalk.phy.kr/windows/latest`
- `https://download-vstalk.phy.kr/android/latest`
- `https://download-vstalk.phy.kr/latest/version.json`

버전별 이력:

- `https://download-vstalk.phy.kr/releases/<version>/windows/x64/...`
- `https://download-vstalk.phy.kr/releases/<version>/android/universal/...`
- 현재 공개 릴리즈 페이지

## 메시지 톤 원칙

원격 저장소와 릴리즈 안내 문구는 `지금 바로 다운받으세요` 같은 속보형 톤보다 아래 방향을 따른다.

- 왜 이 채널이 필요한지 먼저 설명
- 어떤 수준까지 준비됐는지 정직하게 밝힘
- 무엇이 아직 남아 있는지 숨기지 않음
- 다운로드 링크는 설명 뒤에 자연스럽게 배치

추천 문구:

- `Windows 채널은 Alpha 실행 가능 상태이며, Android 채널은 같은 버전 체계 아래 병렬 도입 중입니다.`
- `Android는 이동 중 빠른 확인과 즉답을 위한 채널로 시작하며, 기능보다 안정적인 기본 루프를 먼저 다듬습니다.`
- `같은 버전 번호 아래의 Windows와 Android 산출물은 원격 Releases와 다운로드 미러에서 함께 확인할 수 있어야 합니다.`

## 운영 체크리스트

- 같은 버전 번호의 Windows/Android 자산이 모두 있는가
- 원격 Releases에 버전별 원본 자산이 게시됐는가
- 다운로드 미러 latest 라우트가 같은 버전을 가리키는가
- README의 최신 스크린샷이 현재 릴리즈와 크게 어긋나지 않는가
- 릴리즈 노트가 두 플랫폼의 현재 상태를 함께 설명하는가
