feat: Android 폰·태블릿 다운로드·앱 내 업데이트 완료

CI에서 APK 버전 자동 bump, 앱 복귀 시 업데이트 확인·시스템 다운로드,
프론트 Android 전용 UI 정리(iPad는 향후).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Macbook
2026-06-14 17:03:10 +09:00
parent be45247dc9
commit c840e09885
8 changed files with 193 additions and 130 deletions
+37 -31
View File
@@ -1,15 +1,12 @@
# 모바일·태블릿 Phase 1 — Capacitor 확장 (A)
# Android 모바일·태블릿 (Phase 1)
## 스택 결정
## 범위
| 항목 | 선택 |
| 항목 | 지원 |
|------|------|
| 단기 경로 | **1단계 A — Capacitor 확장** (`app/`) |
| 장기(선택) | 2단계 B — Tauri Mobile 이전 (미착수) |
| Android 패드 | 동일 APK (반응형 UI) |
| iPad | TestFlight 링크 (ipa 직접 다운로드·앱 내 updater 불가) |
Phase 1 목표: 데스크톱과 동일한 **git push → CI 빌드 → 다운로드 허브** 흐름을 Android에 맞추고, PC 프로그램 탭에서 Android·iPad를 함께 제공한다.
| Android 휴대폰 | ✅ 동일 APK |
| Android 태블릿(패드) | ✅ 동일 APK (반응형 UI) |
| iPad | ⏸ 향후 (TestFlight) |
## 파이프라인
@@ -18,44 +15,53 @@ git push main
→ post-receive (deploy.sh)
→ trigger-mobile-jenkins-build.sh
→ jenkins-mobile-pipeline.sh
→ bump-android-version.sh (CI patch + versionCode++)
→ build-mobile-apk.sh
→ data/mobile-releases/goldenchart-android.apk
→ GC_MOBILE_APP_VERSION (.env)
→ backend 재시작
```
## 다운로드 UI
**PC 프로그램** 탭 (`AppDownloadModal`):
| 위치 | 내용 |
|------|------|
| **모바일** 탭 | QR + APK 다운로드 (Android 전용) |
| **PC 프로그램** 탭 | Android (패드·폰) 카드 |
| `/install.html` | QR 설치 페이지 |
- macOS (.dmg) — 기존
- Windows (.exe) — 기존
- Android 패드/폰 (.apk) — `/api/mobile-app/info`
- iPad (TestFlight) — `GC_MOBILE_APP_IOS_TESTFLIGHT_URL` 링크
## 앱 내 자동 업데이트 (Android)
## Android 앱 내 업데이트
1. `/api/mobile-app/info``version` vs `@capacitor/app` `versionName`
2. 새 버전이면 시작·앱 복귀 시 confirm → `App.openUrl`로 APK 다운로드
3. 설정 → **업데이트 확인** 수동 트리거
- 시작 시 `/api/mobile-app/info` 버전 vs `@capacitor/app` `version`
- 새 버전이면 APK 다운로드 URL 열기 (재설치)
## iPad / TestFlight
1. Mac + Xcode + Apple Developer Program
2. `cd app && npm run cap:sync && npx cap open ios`
3. Archive → TestFlight 업로드
4. 서버 `.env`: `GC_MOBILE_APP_IOS_TESTFLIGHT_URL=https://testflight.apple.com/join/...`
## Jenkins 설치 (서버 1회)
## Jenkins (서버 1회)
```bash
./scripts/server-install-mobile-jenkins.sh
# .env 예시
# GC_MOBILE_JENKINS_TRIGGER_TOKEN=goldenchart-mobile-build
./scripts/server-setup-mobile-phase1.sh # hook·env·검증
```
## 환경 변수
| 변수 | 설명 |
|------|------|
| `GC_MOBILE_APP_VERSION` | 웹·API 표시 버전 |
| `GC_MOBILE_APP_IOS_TESTFLIGHT_URL` | iPad TestFlight 초대 URL |
| `GC_MOBILE_JENKINS_*` | Jenkins mobile job (desktop과 동일 패턴) |
| `GC_MOBILE_APP_VERSION` | API·앱 업데이트 비교용 버전 |
| `GC_MOBILE_JENKINS_*` | Jenkins mobile job |
| `GC_MOBILE_APP_PUBLIC_BASE_URL` | 다운로드 URL base (기본 `http://exdev.co.kr`) |
## 수동 빌드
```bash
# 버전 bump 없이
BUMP_VERSION=0 ./scripts/jenkins-mobile-pipeline.sh
# bump 포함 (CI와 동일)
./scripts/jenkins-mobile-pipeline.sh
```
## API
- `GET /api/mobile-app/info`
- `GET /api/mobile-app/download/android`