Compose Multiplatform 1.6.10 的新功能
以下是此功能版本的重點摘要:
- 重大變更:新的 Compose 編譯器 Gradle 外掛程式
- 支援多模組專案與 Compose Multiplatform 資源
- 實驗性導覽程式庫
- 包含實驗性通用 ViewModel 的生命週期程式庫
- 已知問題:MissingResourceException
請參閱 GitHub 上此版本的完整變更清單。
相依性
- Gradle 外掛程式
org.jetbrains.compose版本 1.6.10。基於 Jetpack Compose 程式庫: - 生命週期程式庫
org.jetbrains.androidx.lifecycle:lifecycle-*:2.8.0。基於 Jetpack Lifecycle 2.8.0。 - 導覽程式庫
org.jetbrains.androidx.navigation:navigation-*:2.7.0-alpha07。基於 Jetpack Navigation 2.7.7。
重大變更:新的 Compose 編譯器 Gradle 外掛程式
從 Kotlin 2.0.0 開始,Compose Multiplatform 需要新的 Compose 編譯器 Gradle 外掛程式。 詳情請參閱遷移指南。
跨平台
資源
穩定資源程式庫
資源程式庫 API 的大部分內容現在已被視為穩定。
支援多模組專案與 Compose Multiplatform 資源
從 Compose Multiplatform 1.6.10 開始, 您可以將資源儲存在任何 Gradle 模組和任何原始碼集中,也可以發佈包含資源的專案和程式庫。
要啟用多模組支援,請將您的專案更新至 Kotlin 版本 2.0.0 或更新版本,以及 Gradle 7.6 或更新版本。
多平台資源的配置 DSL
您現在可以微調專案中 Res 類別的產生:修改該類別的修飾符(modality)和指定的軟件包(package),以及選擇產生該類別的條件:一律產生、不產生,或僅在明確依賴資源程式庫時產生。
詳情請參閱文件章節。
用於產生資源 URI 的公開函式
新的 getUri() 函式允許您將資源的平台相關 URI 傳遞給外部程式庫,以便它們可以直接存取該檔案。 詳情請參閱文件。
字串資源的複數形式
您現在可以與其他多平台字串資源一起定義複數(數量字串)。 詳情請參閱文件。
支援三字母地區設定
語言限定詞現在支援地區設定的 alpha-3 (ISO 639-2) 代碼。
圖片與字體的實驗性位元組陣列函式
您可以嘗試兩個允許將字體和圖片作為位元組陣列獲取的函式: getDrawableResourceBytes() 與 getFontResourceBytes()。 這些函式旨在協助從第三方程式庫存取多平台資源。
詳情請參閱 提取要求 (PR)。
實驗性導覽程式庫
基於 Jetpack Compose 的通用導覽程式庫現已推出。 詳情請參閱文件。
此版本的關鍵限制:
- 尚未支援深層連結(處理或跟隨連結)。
- BackHandler 函式與預測性返回手勢僅在 Android 上受支援。
生命週期程式庫
基於 Jetpack lifecycle 的通用生命週期程式庫現已推出,詳情請參閱文件。
該程式庫主要是為了支援通用導覽功能而引入的,但它也提供了一個實驗性的跨平台 ViewModel 實作,並包含一個可用於您專案的通用 LifecycleOwner 介面。
Compose Multiplatform 還提供了一個通用的 ViewModelStoreOwner 實作。
支援 Kotlin 2.0.0
Kotlin 2.0.0 與 Compose 編譯器的新 Gradle 外掛程式一同發佈。 要在最新的編譯器版本中使用 Compose Multiplatform,請將外掛程式套用於專案中的模組(詳情請參閱遷移指南)。
桌面
BasicTextField2 的基礎支援
BasicTextField2 Compose 組件現在在桌面目標上提供基礎層級的支援。 如果您的專案絕對需要它或想進行測試,請使用它,但請記住可能存在未涵蓋的邊緣情況。 例如,BasicTextField2 目前不支援 IME 事件,因此您將無法使用中文、日文或韓文的虛擬鍵盤。
計畫在 Compose Multiplatform 1.7.0 版本中提供對該組件的完整支援以及對其他平台的支援。
DialogWindow 的 alwaysOnTop 旗標
為了避免您的對話方塊視窗被覆蓋,您現在可以對 DialogWindow 可組合項使用 alwaysOnTop 旗標。
詳情請參閱 提取要求 (PR)。
iOS
無障礙功能支援改進
在此版本中:
- 對話方塊和快顯視窗已與無障礙功能正確整合,
- 使用
UIKitView和UIKitViewController建立的互操作檢視現在可以由無障礙服務存取, - 無障礙 API 支援
LiveRegion語意, - 支援無障礙捲動,
- 支援
HapticFeedback。
iOS 17 及更高版本的選取容器放大鏡
iOS 上的 Compose Multiplatform 選取容器現在會模擬原生的放大工具。

用於 Dialog 居中的軟體鍵盤內嵌 (inset)
Dialog 可組合項的行為現在與 Android 一致:當軟體鍵盤出現在螢幕上時,對話方塊會考慮應用程式視窗的有效高度進行居中。 可以使用 DialogProperties.useSoftwareKeyboardInset 屬性來停用此功能。
Web
Alpha 階段的 Kotlin/Wasm 支援
實驗性的 Web 版 Compose Multiplatform 現在進入 Alpha 階段:
- 大部分的 Web 功能與桌面版 Compose Multiplatform 一致。
- 團隊致力於推動 Web 平台走向正式發佈。
- 下一步將是對大多數組件進行徹底的瀏覽器適配。
請參考第一個應用程式教學以了解如何設定並執行具有共享 UI 程式碼的 Web 應用程式。
基礎 IME 鍵盤支援
Compose Multiplatform 的 Web 目標現在對虛擬 (IME) 鍵盤提供基礎支援。
Gradle 外掛程式
可以修改 macOS 最低版本
在之前的版本中,如果不包含 Intel 版本,就無法將 macOS 應用程式上傳到 App Store。 您現在可以在平台特定的 Compose Multiplatform 選項中為您的應用程式設定最低 macOS 版本:
compose.desktop {
application {
nativeDistributions {
macOS {
minimumSystemVersion = "12.0"
}
}
}
}詳情請參閱 提取要求 (PR)。
支援建立具有 Proguard 支援的 uber JAR
您現在可以使用 ProGuard Gradle 任務建立 uber JAR(包含應用程式及其所有相依性的 JAR 檔案的複雜軟件包)。
詳情請參閱縮減與混淆指南。
已知問題:MissingResourceException
從 Kotlin 1.9.x 切換到 2.0.0(或反向切換)後,您可能會遇到 org.jetbrains.compose.resources.MissingResourceException: Missing resource with path: ... 錯誤。 要解決此問題,請刪除專案中所有的 build 目錄。 這包括位於專案根目錄和模組目錄中的目錄。
