3. 프로젝트 톺아보기
KMM 애플리케이션 프로젝트를 생성하고 구조를 살펴보자.
3.1. Kotlin Multiplatform App 프로젝트 생성
제일 처음엔 당연히 Android Studio 실행!
이전 포스팅과 동일하게 Kotlin Multiplatform App 프로젝트를 선택한다.
이번엔 iOS framework distribution 항목을 Regular framework가 아닌 CocoaPods dependency manager로 선택한다.
이후 프로젝트가 생성되면 아래와 같은 오류 메시지가 출력될 것이다.
이를 해소하려면 project 내 iosApp
모듈 내에서 pod을 설치해주어야 한다.
1 | pod install |
pod의 설치를 완료하면 프로젝트 오류는 사라진다.
3.2. Kotlin Multiplatform App 프로젝트 톺아보기
앞선 포스팅과 동일하게 각 플랫폼에 맞는 프로젝트 파일이 생성되었다.
먼저 androidApp 모듈에는 MainActivity
와 MyApplicationTheme
가 생성되었음을 확인할 수 있다.
모듈의 build.gradle.kts
에는 기본적인 설정과 compose가 반영되어있다.
이제 우리의 관심사인 shared
모듈을 살펴보자.
android 설정은 물론 cocoapad에 대한 의존성으로 ios 관련된 설정들도 눈에 들어온다.
공용 모듈에서 공통적으로 요구하는 코드인 Platform
관련 코드도 볼 수 있는데, 이 중 iOS 관련 코드를 살펴보자.
iOS모듈에서 주입받아야하는 부분이 공통 패키지인 platform.*
을 통해 구현되어있음을 확인할 수 있다.
특히 getPlatform()
함수에 붙어있는 actual
키워드를 보자.
KMM에서 actual
키워드는 각 플랫폼에 종속적인 코드를 작성해야할 때 추가하는 키워드이다.
여기서는 iOS 모듈에 의존하는 코드임을 명시하는 것이다.
반대로 공통적인 코드는 위와 같이 expect
키워드를 사용하여 공통부분임을 명시한다.
당연하겠지만 간단한 모듈간 구조는 아래의 코드로 연결된다.
1 | // androidApp build.gradle.kts |
1 | # iosApp podfile |
대략 이런 구조를 기본값으로 확장이 되는 구조이다.
graph TD; shared androidApp iosApp androidApp --> shared; iosApp --> shared;