피드로 돌아가기
Dev.toMobile
원문 읽기
No such module 'Shared' fixed for KMP Xcode
Kotlin Multiplatform 프로젝트를 Xcode에서 빌드할 때 'No such module Shared' 오류를 사전 빌드 스크립트와 JAVA_HOME 환경변수 설정으로 해결
AI 요약
Context
Kotlin Multiplatform(KMP) iOS 프로젝트를 Xcode에서 열 때 'No such module Shared' 오류가 발생하여 빌드가 실패했다. 이는 Xcode가 Gradle을 통해 생성된 iOS 프레임워크를 찾지 못하고 있었기 때문이다.
Technical Solution
- Xcode 스키마 편집 모드에서 Pre-build Action 추가: cd "$SRCROOT/.." && ./gradlew :shared:embedAndSignAppleFrameworkForXcode 명령어 실행
- Pre-build Action 빌드 설정 소스를 'iosApp'으로 선택하여 빌드 컨텍스트 명시
- 빌드 스크립트 실행 중 "Unable to locate a Java Runtime" 오류 발생 시 JAVA_HOME 환경변수 설정
- 프로젝트 레벨에서 JAVA_HOME을 export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" 형태로 정의
- 설정된 환경변수를 적용하여 Gradle 작업이 정상 실행되도록 구성
Key Takeaway
Kotlin Multiplatform 크로스플랫폼 프로젝트에서 iOS 빌드 체인을 구성할 때, Xcode의 Pre-build Action과 환경변수 설정을 통해 Gradle 기반 프레임워크 생성을 Xcode 빌드 프로세스에 통합하는 것이 필수적이다.
실천 포인트
KMP iOS 프로젝트를 개발하는 엔지니어는 Xcode 스키마의 Pre-build Action에 Gradle 임베드 프레임워크 작업을 추가하고, 시스템의 Java Runtime 경로를 명시적으로 지정하면 크로스플랫폼 모듈 참조 오류를 사전에 차단할 수 있다.