僅限 Android 的元件
Compose Multiplatform 建立在 Jetpack Compose 之上。Compose Multiplatform 的大部分功能都適用於所有平台。然而,有些 API 和函式庫只能在 Android 目標平台中使用。這可能是因為它們是 Android 特有的,或者尚未移植到其他平台。本頁總結了 Compose Multiplatform API 的這些部分。
有時,在 Jetpack Compose 文件 或社群建立的文章中,您可能會發現一個只能在 Android 目標平台中使用的 API。如果您嘗試在
commonMain
程式碼中使用它,您的 IDE 將會告知您此 API 不可用。
僅限 Android 的 API
僅限 Android 的 API 是 Android 特有的,在其他平台上不可用。這是因為其他平台不需要 Android 使用的某些概念。該 API 通常使用來自 android.*
套件的類別或配置 Android 特有的行為。以下是一些僅限 Android 的 API 部分的範例:
android.context.Context
類別LocalContext
和LocalConfiguration
變數android.graphics.BitmapFactory
和android.graphics.Bitmap
類別ImageBitmap.asAndroidBitmap()
函式android.app.Activity
類別android.app.Activity.setContent()
函式ComposeView
類別LocalView
變數Modifier.pointerInteropFilter()
函式- Hilt 依賴注入函式庫
通常,將此類 API 部分通用化沒有充分的理由,因此最好只將其保留在 androidMain
中。
簽名中包含 Android 類別的 API
Compose Multiplatform 中的某些 API 部分在其簽名中使用了 android.*
、androidx.*
(不包括 androidx.compose.*
),但其行為也適用於其他平台:
- 資源管理:
stringResource
、animatedVectorResource
、Font
和用於資源管理的*.R
類別。 如需更多資訊,請參閱 圖像與資源。 - 導覽。 如需更多資訊,請參閱 導覽與路由。
ViewModel
類別。- Paging 函式庫。
ConstraintLayout
版面配置。- Maps 函式庫。
- Preview 工具 以及用於預覽 桌面 應用程式的外掛程式。
WebView
類別。- 其他尚未移植到 Compose Multiplatform 的 Jetpack Compose 函式庫。
它們未來可能會被移植到 commonMain
,這將取決於複雜度和需求。
在開發應用程式時常用的 API,例如權限、裝置 (藍牙、GPS、相機) 和 IO (網路、檔案、資料庫),超出了 Compose Multiplatform 的範圍。
簽名中不含 Android 類別的 API
某些 API 部分可能僅適用於 Android 目標平台,即使其簽名不包含 android.*
或 androidx.*
類別,且該 API 適用於其他平台。這背後的原因通常是實作使用了許多平台特有功能,並且需要時間為其他平台編寫其他實作。
通常,此類 API 部分在它們被引入 Jetpack Compose 的 Android 目標平台之後,會被移植到 Compose Multiplatform。
在 Compose Multiplatform 1.8.2 中,以下 API 部分在 commonMain
中 不 可用:
Modifier.imeNestedScroll()
函式Modifier.systemGestureExclusion()
函式Modifier.magnifier()
函式LocalOverscrollConfiguration
變數AnimatedImageVector.animatedVectorResource
API- material3-adaptive 函式庫
- material3-window-size-class 函式庫
請求移植 Android API
對於可以從 Android 移植的每個 API,Compose Multiplatform 的 YouTrack 中都有一個 開放問題。如果您認為某個 API 可以從 Android 移植並通用化,但目前沒有針對它的現有問題,請 建立一個。