Skip to content

refactor(designsystem): material-icons-extended·coil-network-okhttp UI 레이어 의존 제거 - #28

Merged
OnlyReadOneBook merged 2 commits into
mainfrom
feat/25
Jun 3, 2026
Merged

OnlyReadOneBook merged 2 commits into
mainfrom
feat/25

Conversation

@OnlyReadOneBook

Copy link
Copy Markdown
Owner

📌𝘐𝘴𝘴𝘶𝘦𝘴

📎𝘞𝘰𝘳𝘬 𝘋𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘪𝘰𝘯

  • material-icons-extended 제거 (refactor: material-icons-extended 제거하고 사용 아이콘만 벡터로 대체 #26): 공식 가이드상 androidx.compose.material.icons 는 더 이상 유지보수·권장되지 않으며 빌드 시간을 크게 늘린다. extended 를 제거하고 실사용 8종만 :core:designsystem 의 HackathonIcons 객체로 중앙화했다.
    • core 포함 6종(Add/Search/Close/Favorite/FavoriteBorder/ArrowBack)은 material-icons-core 에 위임.
    • core 미포함 Visibility/VisibilityOff 는 원본(material-icons 1.7.8) path 를 public ImageVector DSL 로 재현 → 렌더 결과 동일.
    • ArrowBack 은 deprecated Filled.ArrowBack → AutoMirrored.Filled.ArrowBack 으로 통일.
    • feature/app 은 material-icons 직접 의존을 제거하고 HackathonIcons 만 참조.
    • 근거(공식): https://developer.android.com/develop/ui/compose/graphics/images/material
  • coil-network-okhttp UI 레이어 의존 제거 (refactor(designsystem): :core:designsystem 의 coil-network-okhttp 네트워크 의존 제거 #25): 네트워크 이미지 페처를 :core:designsystem 과 feature 컨벤션 플러그인(AndroidFeatureConventionPlugin)에서 제거하고 :app 진입점으로만 이동했다.
    • Coil 3 는 coil-network-okhttp 의 META-INF/services/coil3.util.FetcherServiceLoaderTarget 를 ServiceLoader 로 자동 등록(merged classpath 스캔)하므로, :app 클래스패스에만 있으면 전 모듈의 AsyncImage 가 동작한다.
    • coil-compose(컴파일 API)는 그대로 유지.
  • 미사용 아이콘 import 정리(MainActivity / NavTab / MyScreen).

📷𝘚𝘤𝘳𝘦𝘦𝘯𝘴𝘩𝘰𝘵

UI 변경 없음 — 아이콘은 원본 path 를 그대로 복제해 렌더 결과가 동일하다. (별도 캡처 생략)

💬𝘛𝘰 𝘙𝘦𝘷𝘪𝘦𝘸𝘦𝘳𝘴

  • 검증 통과: ./gradlew :app:assembleDebug, lintDebug, testDebugUnitTest (CI 게이트와 동일).
  • 머지 전 수동 확인 2가지(빌드로는 검증 불가):
    1. 네트워크 이미지(AsyncImage) 정상 로드 — refactor(designsystem): :core:designsystem 의 coil-network-okhttp 네트워크 의존 제거 #25 런타임 페처 자동 등록 확인 (에뮬레이터).
    2. 로그인/회원가입 비밀번호 토글 아이콘(Visibility/VisibilityOff) 렌더 확인.
  • 참고: 본 브랜치 커밋에 .claude/hooks/git-state-guard.sh(이번 작업과 무관한 기존 로컬 hook 수정분)가 함께 포함돼 있습니다. 의도와 무관하면 리뷰 시 제외를 검토해 주세요.

- APK 크기 최적화를 위해 `material-icons-extended` 의존성을 제거하고 `material-icons-core`로 교체
- 앱 전역에서 사용하는 아이콘을 통합 관리하는 `HackathonIcons` 싱글 소스 객체 도입
- core 세트에 포함되지 않은 `Visibility`, `VisibilityOff` 아이콘을 ImageVector DSL을 통해 커스텀 구현
- 모든 feature 모듈 및 UI 컴포넌트가 `Icons` 대신 `HackathonIcons`를 참조하도록 수정
- `coil-network-okhttp` 의존성을 `app` 모듈로 이동하여 불필요한 의존성 전파 차단
- `.claude/hooks/git-state-guard.sh` 수정: 브랜치 삭제(`-D`) 및 전환(`checkout`) 명령어 허용으로 정책 완화
- 해커톤 기획, 체크리스트, 디자인 프롬프트 등 불필요한 문서 파일(.md, .cursorrules) 대거 삭제
- `.claude/CLAUDE.md` 내용을 멀티모듈 아키텍처 및 최신 빌드 환경(SDK 36, AGP 9.2.1) 기준으로 전면 개편
- 이슈 기반 브랜치 관리 및 자율 커밋 금지 등 개발 작업 규약 강화
- Google의 앱 아키텍처 가이드를 준수하도록 UseCase 및 UI 레이어 설계 원칙 재정의
- `HackathonIcons.kt` 내 사소한 코드 포맷팅 수정 (불필요한 쉼표 제거)
@OnlyReadOneBook
OnlyReadOneBook merged commit 66bac8e into main Jun 3, 2026
3 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the feat/25 branch June 3, 2026 00:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant