kmp앱 개발 일기 #1

우발자·약 9시간 전

KMP 출시 도전기

목록 보기
1/1

지금 나의 회사에선 kmp로 앱을 개발하고 있다.
지금 회사를 오기전에느 kmp는 아직 상용화하기엔 너무 이르다고 생각했었지만,
이 회사에 와서 Kmp를 사용해보니깐 생각이 바뀌었다.

뭔가 점점...flutter를 제치고 kmp가 자리를 잡아갈 것 같았다.

물론 지금 flutter가 너무 강력하긴 하지만 kmp도 굉장히 매력있었다.

그래서 kmp앱을 개발하면서 출시까지 도전해볼려고 한다.


⚙️ 초기설정

항상 느끼는 거지만 프로젝트를 시작할 때 가장 귀찮은 작업이 초기설정이다.
프로젝트 이름을 어떻게 지을까...부터 시작해서 어떤 라이브러리를 쓰고
그 라이브러리를 쓰기 위해 초기설정까지..

그래도 초기설정만 하면 순수개발은 즐겁기 때문에 좀만 참아보자!

DI

DI는 대부분 koin을 쓴다고 생각하면 된다. dagger hilt를 납두고 koin을 쓴다고 하면 안드로이드 개발자들은 별로 달갑지는 않을 것이다. 하지만 hilt는 JVM 전용이기 때문에 쓸 수 없다.

Client

Client도 안드로이드 개발자라면 Retrofit을 썼겠지만 Retrofit도 JVM 전용이기 때문에, 멀티플랫폼을 지원하는 Ktor Client를 사용하고 Retrofit의 어노테이션 방식이 익숙해서 그 위에 Ktorfit을 얹어 적용했다.

Local Storage

로컬 저장소도 SharedPreferences를 많이 썼겠지만 역시 그것도 안드로이드 전용이라 KMP에서는 Multiflatform Settings를 주로 사용한다.

드디어 희소식을 전할 수 있다. 이제 Jetpack Navigation Compose가 KMP를 지원하기 때문에, 안드로이드에 친숙한 젯팩 네비게이션을 그대로 쓰면 된다!

상태관리

상태 관리는 고민을 많이 했다. Slack에서 나온 Circuit을 써볼까, 아니면 직접 커스텀해서 구현해볼까… 고민하다가 결국 Orbit을 써보기로 했다.
Circuit은 상태관리에 더해 Navigation까지 함께 지원하는데, 그만큼 프레임워크에 종속되는 정도가 커서 부담스러웠다. 커스텀 방식은 이미 실무에서 직접 구현해 쓰고 있다 보니 새로울 게 없어 흥미가 가지 않았다. 그래서 예전부터 자주 들어왔던 Orbit을 한번 써보기로 했다. Orbit은 종속성이 낮아 상태관리에만 집중해서 쓸 수 있다는 점이 좋았다.

다음에는 orbit을 사용했던 내용으로 작성을 할 계획이다.

초기설정만으로 힘이 빠져버렸다...

profile
어제보다 나은 개발자가 되자

0개의 댓글