| 분류 | 사용 기술 |
|---|---|
| 언어·빌드 | Kotlin 2.3.21, AGP 9.3.1, Gradle 9.5, JDK 25 |
| UI | Jetpack Compose (BOM 2026.02.01), Material 3, 자체 디자인 시스템 |
| 내비게이션 | Navigation 3 |
| DI | Hilt |
| 네트워크 | Retrofit 3 + kotlinx.serialization, OkHttp 5, SSE(채팅 스트리밍) |
| 로컬 저장 | DataStore(세션·설정), Room(제작 진행 등 로컬 데이터) |
| 이미지 | Coil 3 |
| 인증 | Credential Manager + Google ID, Kakao SDK |
| 정적 검사 | ktlint, detekt, Android Lint |
manyak-android/
├── build-logic/ # 공통 Gradle convention plugin · 모듈/계층 검사
├── gradle/ # Wrapper · 버전 카탈로그
├── app/ # Navigation 3 백스택 · 메인 탭 · 세션 조율 · DI 조립
├── auth/ # 인증 · 토큰 · 세션 · 계정 연동
├── network/ # HTTP · 직렬화 · 공통 통신 오류 변환
├── analytics/ # 이벤트 계약 · 분석/크래시 SDK
├── navigation/ # 라우트 단일 등록처
├── designsystem/ # ManyakTheme · 시각적 공용 컴포넌트
├── common/ # 실제 공통 entity/domain/data/presentation
├── report/ # 공유 신고 업무
├── home/, studio/, story/ # 오리지널 목록 · 내 목록 · 상세
├── chat/ # list/presentation · room/presentation
├── create/ # keyword · storyline · additionalinfo
├── my/ # profile · credit · invite · feedback · withdrawal · licenses
└── login/, legal/ # 로그인 · 웹 문서 화면 · 약관 동의 시트
런타임 모듈은 16개이며 내부 계층·하위 기능은 Kotlin 패키지입니다. 구조·계층·공통 코드의 정본은 하네스 Android 설계, 이동·검증 내역은 모듈 재구성 기록을 확인하세요. 디자인 규칙은 DESIGN.md에 있습니다.
- JDK 25 — Gradle 데몬 toolchain(
gradle/gradle-daemon-jvm.properties)이며 CI도 같은 값을 씁니다. - Android Studio 최신 안정 버전, Android SDK 37 (
compileSdk/targetSdk37,minSdk24) - 백엔드 서버는 따로 띄우지 않아도 됩니다. 기본값이 공용 개발 서버(
https://dev-api.manyak.app)입니다.
# 로컬 설정 파일 생성
cp local.properties.example local.properties
# 연결된 기기·에뮬레이터에 디버그 빌드 설치
./gradlew installDebuglocal.properties에 소셜 로그인 키를 채우지 않으면 빌드·실행은 되지만 로그인이 시작 단계에서 실패합니다. 키는 아래 두 개를 팀에서 받아 채웁니다.
| 키 | 설명 |
|---|---|
GOOGLE_SERVER_CLIENT_ID_DEBUG |
구글 서버(웹) 클라이언트 ID. Android 클라이언트 ID가 아닙니다 |
KAKAO_NATIVE_APP_KEY_DEBUG |
카카오 네이티브 앱 키. REST API 키가 아닙니다 |
로컬 서버에 붙이려면 BASE_URL을 채웁니다(끝에 /가 있어야 합니다). 나머지 항목의 설명은 local.properties.example에 있습니다. 값이 든 local.properties는 커밋하지 않습니다.
| 명령 | 설명 |
|---|---|
./gradlew check |
모듈/계층 검사 · ktlint · detekt · Android Lint · 유닛 테스트 |
./gradlew assembleDebug |
디버그 APK 빌드 |
./gradlew installDebug |
연결된 기기에 설치 |
./gradlew ktlintFormat |
포맷 자동 수정 |
./gradlew bundleRelease |
릴리스 AAB 빌드 (Play Console 업로드용) |
./gradlew :app:signingReport |
빌드 타입별 서명 구성 확인 |
PR에서는 CI(.github/workflows/android-ci.yml)가 check와 assembleDebug를 실행합니다.
| 문서 | 내용 |
|---|---|
DESIGN.md |
색·타이포·여백·컴포넌트 규칙 |
CLAUDE.md |
이 저장소의 작업 규칙 |
docs/plans/ |
기능별 구현 순서·검증·실행 결과 |
../knk-harness/docs/design/1-2-android-design.md |
현재 앱 기술 구조·상태 수명·요청 흐름 |
문서 역할: Android spec은 사용자 계약, Android design은 현재 구조, Android ADR은 결정 이유를 소유합니다. 변경 순서·실행 결과는 docs/plans/, 관련 티켓·검증 근거는 해당 PR에 남깁니다. 공통 계약·결정은 하네스 공통 문서를 참조하고 복사하지 않습니다.