Skip to content

Compose Multiplatform 1.6.10 の新機能

この機能リリースにおけるハイライトは以下のとおりです。

このリリースの変更点の全リストは、GitHubで確認できます。

依存関係

破壊的変更: 新しい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クラス生成を微調整できるようになりました。クラスのモダリティと割り当てられたパッケージを変更できるほか、常に生成する、決して生成しない、リソースライブラリへの明示的な依存関係がある場合にのみ生成するなど、生成条件を選択できます。

詳細については、ドキュメントのセクションを参照してください。

リソースURIを生成する公開関数

新しいgetUri()関数を使用すると、プラットフォーム固有のリソースURIを外部ライブラリに渡して、ファイルに直接アクセスできるようになります。 詳細については、ドキュメントを参照してください。

文字列リソースの複数形

他のマルチプラットフォーム文字列リソースとともに、複数形(数量文字列)を定義できるようになりました。 詳細については、ドキュメントを参照してください。

3文字ロケールのサポート

言語修飾子が、ロケール用のアルファ3 (ISO 639-2) コードをサポートするようになりました。

画像とフォント用の実験的なバイト配列関数

フォントと画像をバイト配列として取得できる2つの関数、getDrawableResourceBytes()getFontResourceBytes()を試すことができます。 これらの関数は、サードパーティライブラリからマルチプラットフォームリソースにアクセスするのに役立つことを目的としています。

詳細はプルリクエストを参照してください。

実験的なナビゲーションライブラリ

Jetpack Composeに基づいた共通ナビゲーションライブラリが利用可能になりました。 詳細については、ドキュメントを参照してください。

このバージョンの主な制限事項:

ライフサイクルライブラリ

Jetpackライフサイクルに基づいた共通ライフサイクルライブラリが利用可能になりました。詳細はドキュメントを参照してください。

このライブラリは、主に共通ナビゲーション機能をサポートするために導入されましたが、実験的なクロスプラットフォーム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フラグを使用できるようになりました。

詳細については、プルリクエストを参照してください。

iOS

アクセシビリティサポートの改善

このリリースでは:

  • ダイアログとポップアップがアクセシビリティ機能と適切に統合されました。
  • UIKitViewおよびUIKitViewControllerを使用して作成された相互運用ビューが、アクセシビリティサービスからアクセス可能になりました。
  • LiveRegionセマンティクスがアクセシビリティAPIでサポートされました。
  • アクセシビリティスクロールがサポートされました。
  • HapticFeedbackがサポートされました。

iOS 17以降の選択コンテナ拡大鏡

iOS上のCompose Multiplatform選択コンテナは、ネイティブの拡大ツールをエミュレートするようになりました。

iPhoneチャットアプリのスクリーンショット(テキスト拡大鏡が有効な状態)

ダイアログ中央寄せのためのソフトウェアキーボードインセット

Dialogコンポーザブルの動作がAndroidと揃いました。ソフトウェアキーボードが画面に表示されると、ダイアログはアプリケーションウィンドウの有効な高さを考慮して中央に配置されるようになりました。 DialogProperties.useSoftwareKeyboardInsetプロパティを使用してこれを無効にするオプションがあります。

Web

Kotlin/WasmサポートがAlphaに

Web向けの実験的Compose MultiplatformがAlphaになりました。

  • ほとんどのWeb機能はデスクトップ向けCompose Multiplatformとほぼ同じです。
  • チームはWebプラットフォームをリリースに導くことに尽力しています。
  • 次のステップは、ほとんどのコンポーネントの徹底的なブラウザ適応です。

共有UIコードでWebアプリをセットアップして実行する方法については、最初のアプリチュートリアルを参照してください。

基本的なIMEキーボードサポート

Compose MultiplatformのWebターゲットで、仮想(IME)キーボードの基本的なサポートが追加されました。

Gradleプラグイン

macOSの最小バージョンを変更する可能性

以前のバージョンでは、Intelバージョンを含めずにmacOSアプリをApp Storeにアップロードすることはできませんでした。 プラットフォーム固有のCompose Multiplatformオプションで、アプリのmacOSの最小バージョンを設定できるようになりました。

kotlin
compose.desktop {
    application {
        nativeDistributions {
            macOS {
                minimumSystemVersion = "12.0"
            }
        }
    }
}

詳細については、プルリクエストを参照してください。

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ディレクトリを削除してください。 これには、プロジェクトのルートディレクトリとモジュールディレクトリにあるディレクトリが含まれます。