🤠

KMPで「import shared」が機能しない時の対処法

2024/10/19に公開
1

はじめに

Android StudioでKotlin Multiplatform(KMP)を使用してiOSアプリを作成し、Xcodeでそのアプリを開いた際にimport sharedでモジュールが正しくインポートされず、「No such module 'shared'」というエラーが発生してしまいました。

ContentView(2行目でエラー発生)
import SwiftUI
import shared

struct ContentView: View {
	let greet = Greeting().greet()

	var body: some View {
		Text(greet)
	}
}

struct ContentView_Previews: PreviewProvider {
	static var previews: some View {
		ContentView()
	}
}

この記事は、私がその問題を解決した方法をまとめたものになります。

私の動作環境

  • MacBook Air M1 2020
  • メモリ 16GB
  • MacOS Sonoma 14.7

結論

オラクル公式サイトからJDK(Java Development Kit)をインストールし、JAVA_HOME環境変数を適切に設定したところ、問題が解消されました。

説明

Kotlin MultiplatformJava Virtual Machine(JVM)で動作するKotlinコードを使用します。
そのため、KMPプロジェクトのビルドにはJDKが必要です。

まず、オラクル公式サイトからJDKをダウンロードしました。
私は「ARM64 DMG Installer」を選択しましたが、ご自身の環境に合わせてご判断ください。

https://www.oracle.com/jp/java/technologies/downloads/#jdk23-mac

ダウンロードし、インストールまで完了したらパスを設定します。
私はJAVA_HOME環境変数にJDKのパスを追加しました。
JAVA_HOMEは、JavaベースのツールがどのJDKを使用すべきかを指定するための環境変数です。

Zshの設定ファイルの編集コマンド(別にvimじゃなくても良いです)
vim .zshrc
私の追加したパス
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-23.jdk/Contents/Home

パスを通して、ビルドしてみると以下のような画面になりました。


ビルド成功

これによって、KMPプロジェクトのビルドに成功しました!

さいごに

ここまで記事を読んでくださり、ありがとうございました!

KMPは強力なツールですが、適切な設定と理解が必要です。私も今回の学びを活かし、効率的かつ効果的な開発をしていきたいです!

皆さんも素敵なハッピーKMPライフを!!!🌸

GitHubで編集を提案
CocBan Tech Blog

Discussion