KMM(Kotlin Multiplatform Mobile)으로 개발해보기

BK·2023년 4월 26일
1
post-thumbnail

구글링으로 KMM을 검색해 보면, 브랜디랩스에서 KMM에 대해 너무나도 잘 설명된 내용이 나온다. 기본 개념을 알고 가려면 브랜디랩스에 적혀 있는 웹문서를 정독!

1. KMM이란?

Kotlin Multiplatform Mobile( KMM )은 크로스 플랫폼 모바일 애플리케이션 생성을 단순화하도록 설계된 SDK입니다. KMM은 기존에 출시되었던 크로스 플랫폼 언어 flutter, React-Native 와는 크로스 플랫폼 개발을 도와주는 점에서 동일합니다. 다만, 개발도구와 언어의 사용에서 기존 플랫폼 개발 언어를 사용한다는 점이 큰 차이를 보입니다.

2. Flutter와의 차이점?

개발자 관점에서 봤을 때 다른 Cross-Flatform과의 큰 차이점은 프로그래밍 언어와 개발환경 인 것 같습니다.

1) 개발언어 및 UI개발

  • Flutter : Dart
  • KMM : Android는 Kotlin, iOS는 Kotlin/Swift
    (AOS 개발자는 기존 언어 그대로 쓰는 거고, iOS개발자는 Kotlin 언어를 좀 익혀야 할듯)

2) 개발환경

  • Flutter : Android Studio/VS Code/Terminal CLI 등을 이용해 개발
  • KMM : Android는 Android Studio, iOS는 Xcode/Android Studio
    (AOS 개발자는 기존 환경 그대로 씀, iOS개발자도 기존환경+AOS개발환경)

3. KMM 동작 방식?

그러면 어떻게 기존 언어를 그대로 가지고 쓸 수 있나 할텐데, 간단하게 설명을 적어보려고 한다.

1) Flutter 아키텍처

  • 기존 네이티브 플랫폼 위에 플러터 프레임워크를 두어 Dart 언어를 처리하도록 구현되어 있다.
  • Flutter 개발시에는 Dart 언어를 필수적으로 사용해 주어야 한다
  • Dart -> Compile -> Native Code
  • Flutter architecture

2) KMM 아키텍처

  • 기존 네이티브 플랫폼을 사용하며, 추가적으로 공유되는 공통로직만 Kotlin으로 개발하여 사용
  • Business 로직과 Core 부분을 공통 모듈로 만들어 각 플랫폼과 공유할 수 있는 방식이다
  • Kotlin -> Compile -> Native Code
  • KMM architecture

4. 왜 자꾸 Kotlin이 나오지? (개인적인 견해)

  • KMM은 Jetbrains 사에서 만든 SDK이다. Kotlin도 Jetbrains, AndroidStudio도 Jetbrains에서 만들었다. 그래서 Jetbrains에서 Kotlin을 밀어주기(?) 위해 만든 SDK라고 생각한다.

5. KMM 샘플 프로젝트 만들어 보기

0) 선행 사항

1) KMM 플러그인 설치

  • Android Studio에서 플러그인 설치 및 재시작

2) New Project 생성

  • Android Studio에서 신규 프로젝트 > Phone and Tablet > Kotlin Multiplatform App 선택
  • 대충 프로젝트 네이밍 하고 Finish

3) 파일 네비게이션 탭 project보기로 변경

  • 기본 설정이 Android로 되어 있으면 Project로 바꿔주기
  • 정상적인 프로젝트 구조 형태 (androidApp, iosApp 폴더가 있어야 한다)

4) Android Run

  • 샘플코드로 Hello + Platform 설정이 되어 있으므로 build 하면 바로 실행된다.

5) Xcode 오픈 및 Run

  • Finder에서 프로젝트 경로에 보면 iosApp 폴더가 만들어져 있으니 거기서 Xcode를 열어준다.
  • Android 와 마찬가지로 샘플 코드가 있으니 바로 Run 하면 실행된다.

6) UI 코드 바꾸기

  • 기본적으로 UI 개발은 각 언어코드로 개발해주어야 한다
  • Android 에서만 보이는 코드를 작성한다.
  • Xcode에서도 UI 코드 수정 후 빌드

6. KMM 시장 반응

7. 결론

  • 개발 인원이 잘 갖추어져 있다면, KMM을 이용한 코어 로직 공유 방식으로 크로스플랫폼을 이용하는 것도 좋을 거 같음!
  • 자세한 개발방법은 레퍼런스 문서 참조!
    Kotlin - KMM 개발 문서
profile
k-힙합을 사랑하는 개발자

0개의 댓글