v0.1.0
🛏️ v0.1.0 — DockMode 첫 빌드: 가로 대기 화면 + DreamService 골격
🎯 핵심 변경
Android 충전 거치대용 시계·달력 대시보드 DockMode의 첫 동작하는 빌드입니다. 가로 전체화면 대기 화면과 Android 표준 스크린세이버 모드, 캘린더 권한 흐름, 다크 테마 UI까지 v0.1 범위가 모두 들어 있습니다. 네트워크 권한 없이 동작하는 로컬 우선 앱입니다.
🆕 추가 — 화면과 모드
- HomeScreen: 앱 설명, 충전 상태 카드, "대기 화면 시작" 버튼, 캘린더 권한 카드, 스크린세이버 설정 안내, 설정 진입
- StandbyActivity: 가로 고정 + 시스템 바 숨김 +
FLAG_KEEP_SCREEN_ON적용된 전체화면 대기 화면 - StandbyDreamService: Android 설정의 스크린세이버에서 DockMode를 선택하면 충전·유휴 상태에서 자동 표시되는 시스템 표준 모드 (
BIND_DREAM_SERVICE) - SettingsScreen: 시계 스타일 선택, 일정 표시, 야간 모드, 번인 방지, 화면 켜짐 유지 토글, 개인정보 안내
🆕 추가 — 표시 요소
- 시계 스타일 3종: Minimal / Digital / CalendarFocus
- 현재 시간(1초 갱신) + 로케일별 날짜·요일 포맷
- BatteryManager 기반 충전/완충/미충전 상태 배지
- Calendar Provider로 조회한 오늘 일정과 다음 일정
- OLED 번인 방지를 위한 1분 주기 미세 위치 이동
🛠 동작 정책
- 캘린더 권한(
READ_CALENDAR)은 사용자가 일정 표시를 켤 때만 요청합니다. 거부 / "다시 묻지 않음" 상태에서도 시계·날짜·충전 상태는 정상 동작합니다. - 충전 연결만으로 백그라운드에서 Activity를 강제 실행하지 않습니다. 자동 표시 경험은 DreamService에 위임합니다.
- 캘린더 이벤트 제목·시간은 화면 표시 외 용도로 저장하지 않으며, 외부로 전송하지 않습니다.
- 네트워크 권한, 광고 SDK, 분석 SDK, crash reporting SDK, 로그인은 포함되지 않습니다.
🧹 정리 / 문서 / 빌드
- Kotlin 2.0.21 + Compose BOM 2024.10.01 + AGP 8.7.2 + Gradle 8.10.2 골격 구성
- ktlint(1.3.1) + detekt(1.23.7) 정적 분석, JUnit 단위 테스트 5종
- GitHub Actions 기반 Android CI: lint → unit test → debug APK → release AAB → R8 mapping 업로드
- 태그 푸시(
v*.*.*) 시 GitHub Release 자동 생성,docs/releases/<tag>.md를 본문으로 사용 - GitHub Pages 랜딩 페이지: https://jeiel85.github.io/dockmode-android/
✅ 검증
- 로컬: Gradle CLI/Android SDK 미설치 환경이라 모든 빌드/테스트는 GitHub Actions에서 검증.
- CI:
Android CI워크플로 통과 (ktlintCheck, detekt, testDebugUnitTest, assembleDebug, bundleRelease, mapping 업로드 모두 성공). - 실기기: StandbyActivity 화면 유지, 캘린더 권한 흐름, DreamService 선택/표시는 후속 검증 항목으로 남아 있습니다.
⚠️ 알려진 제약
- Release AAB는 서명되지 않은 상태로 생성됩니다. Play Store 업로드 전 키스토어 구성이 필요합니다.
- 앱 아이콘은 임시 어댑티브 아이콘입니다. 정식 디자인은 후속 작업입니다.
- 앱명
DockMode의 Play Store 상표·중복 검토는 출시 전 별도 작업으로 남아 있습니다. - 태블릿/폴더블 가로 분할 레이아웃 최적화는 후속 작업입니다.
다운로드
- 📦 Play Store 업로드용:
dockmode-v0.1.0-release.aab(현재 unsigned) - 🤖 Android 설치 APK:
dockmode-v0.1.0-debug.apk - 🗺️ R8 deobfuscation:
dockmode-v0.1.0-mapping.txt