將 Kotlin Multiplatform 新增至現有專案

如要在 Android 專案中建立 Kotlin Multiplatform (KMP) 模組,請使用 Kotlin Multiplatform 共用模組範本,該範本可在 Android Studio Meerkat 和 Android Gradle 外掛程式 8.8.0 版以上版本中使用。

模組範本會自動建立新模組,並以 Android 和 iOS 平台為目標設定最低配置。

設定共用 KMP 模組

如要建立共用 KMP 模組,請按照下列步驟操作:

  1. 依序選取「File」>「New」>「New Module」
  2. 在「Templates」面板中選取「Kotlin Multiplatform Shared Module」範本:
建立新的 KMP 模組
圖 1. 建立新的 KMP 模組

範本中的欄位如下:

  • 模組名稱:定義 Gradle 模組名稱和 iOS 架構名稱 (可在稍後變更)
  • 套件名稱:定義此模組中檔案的套件名稱
    1. 按一下「Finish」,讓 Gradle 與專案同步。系統可能也會提示您將新建立的模組檔案加入來源控制項。

完成後,Android Studio 的「Project View」會顯示新的共用模組,以及每個平台的來源組合。

顯示新共用模組的專案檢視畫面
圖 2. 顯示新共用模組的專案檢視畫面

模組精靈不會將新建立的模組新增為任何現有模組的依附元件。接下來,您需要將共用模組連結至現有 Gradle 模組之一,這與其他 Android 依附元件類似。

dependencies {
    ...
    implementation(project(":shared"))
}

啟用後,您就能照常存取代碼。您可以透過 Android 應用程式存取 androidMain 或 commonMain 中的程式碼。

如要進一步瞭解 Kotlin Multiplatform 專案結構,請參閱 Kotlin Multiplatform 專案結構的基本概念

在 iOS 應用程式中設定共用模組

Swift 無法直接使用 Kotlin 模組,因此必須產生已編譯的二進位架構。

Android Studio 中的新模組範本會設定共用模組,為每個 iOS 架構產生架構。您可以在共用模組的 build.gradle.kts 檔案中找到下列程式碼:

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

如要進一步瞭解如何定義其他架構類型,請參閱「階層式專案結構」。

如要啟用 iOS 專案的共用程式碼存取權,請在編譯 Swift 來源之前,新增腳本階段來產生 Kotlin 架構:

  1. 在 Android Studio 中按一下檔案的滑鼠右鍵,然後選取「Open In」和「Open in Associated Application」。即可在 Xcode 中開啟 iOS 應用程式。
在相關應用程式中開啟
圖 3. 在相關應用程式中開啟
  1. 在專案導覽器中雙擊專案名稱,開啟專案設定
Xcode 專案設定對話方塊
圖 4. Xcode 專案設定對話方塊
  1. 將預設的「Run Script」名稱變更為「Compile Kotlin Framework」,以便更清楚瞭解這個階段的功能。按兩下「Run Script」標題即可編輯。
  2. 展開建構階段,然後在「Shell」文字欄位中輸入下列指令碼:
新增執行指令碼建構階段
圖 5. 執行指令碼建構階段
  1. 將「執行指令碼」階段拖曳至「編譯來源」階段之前。

    在編譯來源之前執行指令碼建構階段
    圖 6. 在編譯來源之前執行指令碼建構階段

  2. 按一下 ⌘B 或前往「Product」選單並選取「Build」,即可在 Xcode 中建構專案。

建構成功時,您會看到下列圖示。

Xcode 顯示建構成功
圖 7. 建構成功

存取 iOS 應用程式中的共用程式碼

如要確認 iOS 應用程式能否成功存取共用模組中的程式碼,請執行下列操作:

  1. 在 iOS 專案中,開啟以下位置的 ContentView.swift 檔案: Sources/View/ContentView.swift
  2. 在檔案頂端新增匯入 sharedKit
  3. 修改文字檢視畫面,在顯示的字串中加入 Platform_iosKt.platform() 資訊,如下所示:

這項更新會檢查 Fruitties 應用程式是否能從共用模組呼叫 platform() 函式,該函式在 iOS 平台上執行時應會傳回「iOS」。

執行 iOS 應用程式的 Xcode 模擬器
圖 8.執行 iOS 應用程式的 Xcode 模擬器

其他資源

如果您是 KMP 開發新手,請參閱 官方 KMP 說明文件,瞭解更多指南。如果您是 iOS 開發新手,請參閱 Swift 基本概念說明文件