피드로 돌아가기
No such module 'Shared' fixed for KMP Xcode
Dev.toDev.to
Mobile

No such module 'Shared' fixed for KMP Xcode

Kotlin Multiplatform 프로젝트를 Xcode에서 빌드할 때 'No such module Shared' 오류를 사전 빌드 스크립트와 JAVA_HOME 환경변수 설정으로 해결

Saad Alkentar2026년 3월 24일5intermediate

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 경로를 명시적으로 지정하면 크로스플랫폼 모듈 참조 오류를 사전에 차단할 수 있다.

원문 읽기