Android 専用コンポーネント
Compose Multiplatformは、Jetpack Composeを基盤としています。Compose Multiplatformの機能のほとんどは、すべてのプラットフォームで利用可能です。しかし、Androidターゲットでのみ使用できるAPIやライブラリがいくつか存在します。これは、それらが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に移植される可能性があります。
パーミッション、デバイス(Bluetooth、GPS、カメラ)、IO(ネットワーク、ファイル、データベース)など、アプリケーション開発時に頻繁に使用されるAPIは、Compose Multiplatformのスコープ外です。
シグネチャにAndroidクラスを含まないAPI
APIの一部には、そのシグネチャにandroid.*やandroidx.*クラスが含まれておらず、他のプラットフォームにも適用可能であるにもかかわらず、Androidターゲットでのみ利用できるものがあります。その理由は通常、実装が多くのプラットフォーム固有の要素を使用しており、他のプラットフォーム向けに別の実装を記述するのに時間がかかるためです。
通常、このようなAPIの一部は、Androidターゲット向けのJetpack Composeで導入された後、Compose Multiplatformに移植されます。
Compose Multiplatform 1.9.3では、以下のAPIはcommonMainでは利用できません。
Modifier.imeNestedScroll()関数Modifier.systemGestureExclusion()関数Modifier.magnifier()関数LocalOverscrollConfiguration変数AnimatedImageVector.animatedVectorResourceAPI- material3-adaptive ライブラリ
- material3-window-size-class ライブラリ
Android APIの移植リクエスト
Androidから移植可能な各APIについて、Compose Multiplatform YouTrackに未解決のissueがあります。あるAPIがAndroidから移植され共通化できると思われる場合、それに対する既存のissueがない場合は、新規作成してください。
