피드로 돌아가기
Dev.toFrontend
원문 읽기
Clean Architecture 기반 KMP Native UI 및 공유 ViewModel 설계
KMP Native UI Login and Profile screens, navigation, and more
AI 요약
Context
Android와 iOS의 UI 구현 방식 차이로 인한 중복 개발 비용 발생 상황. 플랫폼별 Native UI를 유지하면서 비즈니스 로직과 데이터 흐름을 단일 코드로 관리하기 위한 아키텍처 설계 필요.
Technical Solution
- Data, Domain, UI 레이어로 분리한 Clean Architecture 적용을 통한 관심사 분리
- Koin Dependency Injection을 활용한 의존성 역전 및 모듈 간 결합도 최소화
- Ktor HttpClient 기반의 통신 모듈 설계 및 safeCall 래퍼 함수를 통한 공통 에러 핸들링
- StateFlow 기반의 shared ViewModel을 구축하여 플랫폼 간 상태 동기화 및 일관된 UI 상태 관리
- iOS 플랫폼의 StateFlow 관찰을 위한 Wrapper 클래스 구현 및 Combine 프레임워크 연동을 통한 반응형 UI 업데이트
- Native Navigation 방식을 채택하여 각 플랫폼 최적화된 화면 전환 경험 제공
실천 포인트
1. KMP 프로젝트 설계 시 비즈니스 로직은 shared 모듈에, UI 렌더링은 Native 영역에 배치하여 플랫폼 최적화 달성 여부 확인
2. StateFlow를 iOS에서 사용할 때 메모리 누수 방지를 위한 AnyCancellable 관리 및 Wrapper 클래스 도입 검토
3. API 응답 모델을 Request/Response/Entity로 세분화하여 도메인 모델의 오염 방지 및 유지보수성 확보