KMP(Kotlin Multiplatform)는 하나의 Kotlin 코드베이스를 여러 플랫폼(Android, iOS, Desktop, Web 등)에서 공유할 수 있도록 해주는 기술
이제 Flutter나 React Native 앱 처럼 KMP를 이용하여 Kotlin 언언를 이용해 크로스 플랫폼을 만들 수 있도록 지원하고 있다.
안드로이드 CodeLab에 Kotlin 멀티플랫폼 시작하기가 있어 KMP 프로젝트를 만드는 법을 알아보자
IOS 에뮬레이터 동작을 확인하기 위해서는 Xcode를 다운로드 해야한다.
Xcode는 App Store에서 다운로드 받을 수 있다. 위 조건이 만족하는 버전으로 다운로드하면 된다.
설치하고 IOS 버전 추가한 후 진행하면 된다.
KMP는 코드베이스의 어느 부분을 얼마나 공유해야하는지 지정이 안되어 있으며, 이 공유할 부분을 정하는 것이 개발자의 역할이라고 한다.
개발자가 공유할 부분을 결정을 하면 플랫폼 전반의 일관성을 유지하고 중복을 줄일 수 있다고 한다.(보통 데이터베이스, 액세스, 네트워크 엑세스 등 비즈니스 로직과 테스트를 공유한다고 적혀있음)
KMP가 Android와 다른 키워드가 도입되었다. expect와 actual이다.
참고: expect/actual 클래스는 현재 실험적 기능입니다. expect/actual 함수의 인터페이스를 구현할 수도 있습니다. 모든 옵션은 문서를 참고하세요.
// 공통 모듈 (expect 선언)
expect class PlatformLogger {
fun log(message: String)
}
// Android 실제 구현 (actual)
actual class PlatformLogger {
actual fun log(message: String) {
Log.d("KMP", message)
}
}
// iOS 실제 구현 (actual)
actual class PlatformLogger {
actual fun log(message: String) {
println("iOS Log: $message")
}
}
먼저 plugins에서 KMP를 설치하자. 설치 완료되면 restart IDE가 뜰 것이다.

이제 New Project를 실행하고 아래쪽에 보면 Kotlin Multiplatform이 뜨는 것을 볼 수 있다.

프로젝트 이름까지 작성이 되면 위와 같이 어떤 플랫폼을 설치할지 나오는데 일단 Android와 IOS만 선택하고 프로젝트를 실행


앱스토에서 Xcode를 설치하고 실행만 하면 되는 것이 아니라 기본 프로젝트까지 생성을 해보자.
그러면 자동으로 아래와 같이 Ios Simulator가 설치가 될 것이다.

설치가 끝나고 프로젝트를 재실행하니 아래와 같이 실패는 사라졌다.

또한 에뮬레이터 실행화면에 IOS를 선택할 수 있는 부분이 생기는 것을 볼 수 있다.

아이폰 16으로 실행을 해보면...
홀뤼... 아이폰 에뮬레이터로 실행이 되는 것을 볼 수 있다.
프로젝트 생성 및 아이폰 에뮬레이터 실행까지의 과정을 진행해봤다. 물론 프로젝트 기본으로 생성하는 폴더는 봐도 하나도 모르겠다.. 조금씩 공부하면서 익숙해져보자
